2010-09-22 105 views
1

我只想在卸载时重启。这是从我的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 

这怎么可能,同样的条件计算结果为假,那么真实的吗? ScheduleReboot是否忽略它的条件?

编辑:我也试图使用条件REBOOT〜=“强制”来有条件地执行一个命令,当我的customaction重新启动请求。这种情况从来没有评估为真,我的命令没有运行。该属性通过从自定义操作调用MsiSetProperty进行设置。无论是这种自定义操作都不起作用,或者我的情况出错了!有什么建议么?

+1

在您的MSI触发ScheduleReboot中可能会有另一个操作。你有没有尝试使用Orca搜索它? – 2010-09-22 09:35:19

+0

我的WiX文件只有一个ScheduleReboot操作,并且安装日志显示在我的定制后立即执行相同的条件并被跳过。 – mchr 2010-09-22 09:40:21

回答

0

我不知道为什么原始代码失败,但我已经结束了以下只有在升级或卸载重新启动。

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

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

+0

我有一个自定义操作,我期待设置REBOOT = FORCE。这会导致ScheduleReboot忽略它的状态吗? – mchr 2010-09-22 09:53:46

+0

我不知道确切的实现细节,但我的猜测是所有ScheduleReboot都会设置REBOOT = FORCE。没有它,你基本上也会这样做。 – 2010-09-22 09:57:26

+0

听起来如预期的那样,但仍然在回答为什么日志显示ScheduleReboot操作已执行的问题。 – mchr 2010-09-22 10:00:43

相关问题