我需要在安装过程中重新启动Windows资源管理器进程。目前我们强制用户重新启动以确保Explorer进程真正重新启动,但我希望更灵活。
我有一个restartexplorer可执行文件,我可以在安装过程中调用它。我想要做的是调用restartexplorer可执行文件,并且只有在重新启动资源管理器自定义操作返回错误代码时才使用ScheduleReboot。
我可能会定义这样的内容:
<CustomAction Id='RestartProperty' Property='QtExecCmdLine'
Value='"[INSTALLDIR]RestartExplorer.exe"' />
<CustomAction Id='Restart' BinaryKey='WixCA' DllEntry='CAQuietExec' Execute="immediate" Return="check" />
然后InstallExecuteSequence将是这样的:
<InstallExecuteSequence>
...
<Custom Action="RestartProperty" Before="Restart">PREVIOUSVERSIONSINSTALLED</Custom>
<Custom Action="Restart" After="SomeAction">PREVIOUSVERSIONSINSTALLED</Custom>
<ScheduleReboot After="Restart"><![CDATA[(NOT Installed) AND (SomeErrorValue > 0)]]></ScheduleReboot>
</InstallExecuteSequence>
问题是如何从以前的自定义操作中获取错误代码?我可以使用QtExecCmdLine并仍然能够检查错误代码,还是直接从自定义操作标记中获取可执行文件?这必须适用于Windows XP SP3和更新版本,我更喜欢一个不必在操作系统版本之间有所不同的解决方案。
答案 0 :(得分:1)
您可以创建VB脚本自定义操作,该操作将执行以下操作:
如果EXPLORER_RESTART_FAILED为1,则使用ShaduleReboot。