WIX C ++ Custom Action
-
22-09-2019 - |
Frage
Ich habe eine grundlegende WIX benutzerdefinierte Aktion:
UINT __stdcall MyCustomAction(MSIHANDLE hInstaller)
{
DWORD dwSize=0;
MsiGetProperty(hInstaller, TEXT("MyProperty"), TEXT(""), &dwSize);
return ERROR_SUCCESS;
}
Zu dem Installateur:
<CustomAction Id="CustomActionId" FileKey="CustomDll" DllEntry="MyCustomAction"/>
<InstallExecuteSequence>
<Custom Action="CustomActionId" Before="InstallFinalize" />
</InstallExecuteSequence>
Das Problem, dass, egal was ich tue, ist der Griff hInstaller nicht gültig. Ich habe habe die Aktion zu begehen, latente, den Ort in InstallExecute Reihenfolge geändert, hInstaller ist immer nicht gültig.
Jede mögliche Hilfe würde geschätzt. Danke.
Lösung
Sie müssen die aufgerufenen Funktion exportieren, so MSI es mit undecorated C Artnamen anrufen
Ersetzen Sie den Code mit diesem
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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow