我正在尝试让以下内容正常工作:
在第一次安装程序时,它会修改系统的环境变量,因此必须重新启动才能使程序完全工作。在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属性上--如果我用UPGRADING替换NOT UPGRADING,它永远不会请求重启。
任何比我更有经验的人的洞察力都会很棒。
发布于 2010-10-30 11:06:36
我想知道更多关于你最初的假设,你需要重启。WriteEnvironmentStrings将广播一个WM_SETTINGSCHANGE,正确编写的应用程序应该遵守它。除了像Win95/ 98这样的边缘情况,以及服务控制管理器设计得很差并忽略了这些消息的事实,我认为通常情况下,你不应该首先需要重新启动。
否则,如果您正在进行次要升级,请考虑使用未安装的属性。这将使其在随后的维修、维护、移除、小升级和补丁过程中无法运行。
WriteEnvironmentStrings Action
https://stackoverflow.com/questions/4056112
复制相似问题