たとえば、含まれている DLL からカスタム アクションを呼び出すように MSI インストーラーに指示する次の WIX マークアップがあるとします。
<CustomAction Id="CA_SetProperties_Finalize"
Property="CA_OnInstallFinalize"
Value="[Installed],[REINSTALL],[UPGRADINGPRODUCTCODE],[REMOVE]" />
<CustomAction Id='CA_OnInstallFinalize'
BinaryKey='CADll'
DllEntry='msiOnInstallFinalize'
Execute='deferred' Impersonate='no' />
<InstallExecuteSequence>
<Custom Action='CA_SetProperties_Finalize'
Before='InstallFinalize'></Custom>
<Custom Action='CA_OnInstallFinalize'
After='CA_SetProperties_Finalize'></Custom>
</InstallExecuteSequence>
<Binary Id='CADll' SourceFile='Sources\ca-installer.dll' />
また、DLL 自体には、カスタム アクション用の次の C++ コードがあります。
#pragma comment(linker, "/EXPORT:msiOnInstallFinalize=_msiOnInstallFinalize@4")
extern "C" UINT __stdcall msiOnInstallFinalize(MSIHANDLE hInstall)
{
//Do the work
if(doWork(hInstall) == FALSE)
{
//Error, cannot continue!
return ERROR_INSTALL_FAILURE;
}
return ERROR_SUCCESS;
}
私のdoWork
方法が失敗すると、インストールは続行されないので、戻りERROR_INSTALL_FAILURE
ます。問題は、その場合、インストーラーが単純に終了し、インストール GUI ウィンドウが消えることです。
カスタム アクションがエラーを返した場合にユーザー メッセージを表示できるように Wix マークアップを変更する方法はありますか?