WIX:如果取消安装程序,请重新启动服务?

时间:2013-03-20 10:30:29

标签: c# installer wix windows-installer install-sequence

如果用户取消设置MSI,是否可以重新启动服务?

有两种情况,MSI必须重新启动服务。

  1. 停止并更新旧服务文件,然后启动该服务。如果服务无法启动,请替换旧文件并重新启动服务。 [此部分通过回滚完成]
  2. 如果在设置过程中故意将MSI 取消,请重启服务。
  3. 我有一个解决方案,我可以在取消时调用CustomAction并使用CMD.EXE重新启动服务,但我不喜欢它。请使用RestartResourceResourceManager

    建议任何其他解决方案

    代码:

    <InstallExecuteSequence >
        <RemoveExistingProducts
          After="InstallInitialize"/>
        <Custom Action="RenameFileOnCancel" OnExit="cancel">1</Custom>
      </InstallExecuteSequence>
    
     <CustomAction
            Id='RestartService'
            Directory='TARGETDIR'
            ExeCommand='[SystemFolder]cmd.exe net stop AppServerSvc &amp;&amp; net start AppServerSvc'
            Return='asyncWait'
            Execute='deferred'
        />
    

1 个答案:

答案 0 :(得分:3)

如果您在交易期间安排升级MSI,例如使用:

  • MajorUpgrade/@Schedule='afterInstallInitialize'
  • MajorUpgrade/@Schedule='afterInstallExecute'
  • MajorUpgrade/@Schedule='afterInstallExecuteAgain'

使用ServiceControl元素启动/停止/重新启动服务,然后Windows Installer将为您完成所有工作。

到目前为止 是实现目标的最佳推荐方式。