重启后如何使MSI返回失败的值?

时间:2012-04-05 15:24:47

标签: wix windows-installer wix3.5 wix3.6

我正在wix中编写一个虚拟安装程序,它应该提示重新启动,如果是,则重启机器并返回失败。

我能够成功提示重新启动。但是在重启和非重启的两种情况下都会安装MSI。

为了返回失败,我编写了一个自定义操作,并基于用户在使用msiexec时设置的属性RETURNCODE,自定义操作返回失败。

以下是自定义操作的代码:

UINT __stdcall CustomExit(MSIHANDLE hInstall) {

 HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
LPWSTR pReturnCode= NULL;
int iReturnCode = 0;

ReadPropertyString(hInstall, L"RETURNCODE", &pReturnCode);

iReturnCode = _wtoi(pReturnCode);

if(pReturnCode)
    delete pReturnCode;

if(iReturnCode == 0)
{
    er = ERROR_INVALID_HANDLE;
}
else
{
    er = ERROR_SUCCESS;
}

return er; }

以下是安排相同的wix代码:

<CustomAction Id="CAExit" BinaryKey="BID_NativeCustomAction" DllEntry="SetCustomExit" />

<InstallExecuteSequence>
   <ForceReboot After="InstallInitialize">REBOOTMACHINE=1</ForceReboot>
  <Custom Action="CAExit" After="ForceReboot">1</Custom>
</InstallExecuteSequence>

0 个答案:

没有答案