代码之家  ›  专栏  ›  技术社区  ›  riwalk

WiX计划重新启动条件

  •  3
  • riwalk  · 技术社区  · 14 年前

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

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

    在我尝试让有条件重新启动工作时,我尝试过这样做:

    <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 具有 ,它从不要求重新启动。

    任何比我更有经验的人的洞察都会很棒。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Christopher Painter    14 年前

    我想知道更多关于你最初的假设,你需要重新启动。WriteEnvironmentStrings将广播WM_SETTINGSCHANGE,正确编写的应用程序应该尊重它。由于缺少Win 95/98这样的边缘案例,而且服务控制管理器的设计很差,而且忽略了这些消息,我认为一般来说,您不应该首先需要重新启动。

    WriteEnvironmentStrings Action