为什么我的安装程序总是提示重启

时间:2010-09-22 09:31:08

标签: c# wix windows-installer

我只想在卸载时重新启动。这是我的WiX文件中的一个片段:

<InstallExecuteSequence>
  ...
  <Custom Action="CleanRegistry" Sequence="7100">REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE</Custom>
  <ScheduleReboot Sequence="7200">REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE</ScheduleReboot>
</InstallExecuteSequence>

运行生成的MSI会生成以下日志:

MSI (s) (48:7C) [10:19:29:951]: Skipping action: CleanRegistry (condition is false)
MSI (s) (48:7C) [10:19:29:951]: Doing action: ScheduleReboot

同样的条件如何评估为False然后为True? ScheduleReboot是否会忽略其条件?

编辑:我也尝试使用条件REBOOT~ =“Force”在我的习惯请求重启时有条件地执行命令。此条件永远不会评估为true,并且我的命令没有运行。通过从自定义操作调用MsiSetProperty来设置该属性。要么这个自定义操作不起作用,要么我在我的情况下犯了错误!有什么建议吗?

2 个答案:

答案 0 :(得分:1)

某些操作可能是设置REBOOT属性。您应该能够在日志中看到它。最常见的原因可能是文件正在使用中。

答案 1 :(得分:0)

我不知道为什么原始代码失败了但我最终解决了以下问题,只会在升级或卸载时重新启动。

<ScheduleReboot Sequence="7200">REMOVE~="ALL"</ScheduleReboot>