2

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

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

  1. 停止并更新旧服务文件,然后启动服务。如果服务无法启动,请更换旧文件并重新启动服务。[这部分是通过回滚完成的]
  2. 如果在设置过程中故意取消MSI,请重新启动服务。

我有一个解决方案,我可以调用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'
    />
4

1 回答 1

3

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

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

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

这是迄今为止最推荐的实现目标的方法。

于 2013-03-20T13:58:11.090 回答