WIX C d'action personnalisée
-
22-09-2019 - |
Question
J'ai une action personnalisée WIX de base:
UINT __stdcall MyCustomAction(MSIHANDLE hInstaller)
{
DWORD dwSize=0;
MsiGetProperty(hInstaller, TEXT("MyProperty"), TEXT(""), &dwSize);
return ERROR_SUCCESS;
}
Ajouté au programme d'installation:
<CustomAction Id="CustomActionId" FileKey="CustomDll" DllEntry="MyCustomAction"/>
<InstallExecuteSequence>
<Custom Action="CustomActionId" Before="InstallFinalize" />
</InstallExecuteSequence>
Le problème est que, peu importe ce que je fais, la hInstaller poignée est pas valide. J'ai mis l'action à engager, différé, a changé le lieu en séquence InstallExecute, hInstaller est toujours pas valide.
Toute aide serait appréciée. Merci.
La solution
Vous devez exporter la fonction appelée si MSI peut l'appeler en utilisant le nom de style undecorated C
Remplacez votre code avec cette
extern "C" _declspec(dllexport) UINT __stdcall MyCustomAction(MSIHANDLE hInstall);
extern "C" UINT __stdcall MyCustomAction(MSIHANDLE hInstall)
{
DWORD dwSize=0;
MsiGetProperty(hInstaller, TEXT("MyProperty"), TEXT(""), &dwSize);
return ERROR_SUCCESS;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow