WiX ScheduleReboot条件

时间:2010-10-29 21:42:19

标签: wix upgrade

我正在努力让以下工作:

在第一次安装程序时,它会修改系统的环境变量,因此必须重新启动才能使程序完全正常工作。在WiX中执行此操作非常简单,您只需安排重启:

<InstallExecuteSequence>
    <ScheduleReboot After="InstallFinalize" />
</InstallExecuteSequence>

我遇到的问题是我希望能够对此程序进行少量升级(版本号更改但产品GUID没有更新),这不需要重新启动。

在我试图让条件重启工作时,我试图这样做:

<Product 
    ... 
    Version="1.0.1" 
    UpgradeCode="MYUPDATEGUID-C39B-4DDE-BA5B-6113463F60C2" 
    ...
    >

<Upgrade Id="MYUPDATEGUID-C39B-4DDE-BA5B-6113463F60C2">
    <UpgradeVersion OnlyDetect="yes" Property="UPGRADING"
                    Maximum="1.0.1" IncludeMaximum="yes" />
</Upgrade>

...

<InstallExecuteSequence>
    <ScheduleReboot After="InstallFinalize">NOT UPGRADING</ScheduleReboot>
</InstallExecuteSequence>

这很棒,但不起作用。无论我做什么,它总是试图安排重启。

问题似乎是属性UPGRADING - 如果我将NOT UPGRADING替换为UPGRADING,它永远不会请求重新启动。

任何比我更有经验的人的见解都会很棒。

1 个答案:

答案 0 :(得分:2)

我想知道您最初需要重启的假设。 WriteEnvironmentStrings将广播WM_SETTINGSCHANGE,正确编写的应用程序应该尊重它。没有像Win 95/98这样的边缘情况以及服务控制管理器设计不当而忽略这些消息的事实,我认为通常你不应该首先需要重新启动。

否则,如果您正在进行小幅升级,请考虑使用未安装的属性。这将使其在后续维修,维护,移除,次要升级和修补程序期间不会运行。

WriteEnvironmentStrings Action