如果用户取消设置MSI,是否可以重新启动服务?
有两种情况,MSI必须重新启动服务。
我有一个解决方案,我可以在取消时调用CustomAction
并使用CMD.EXE重新启动服务,但我不喜欢它。请使用RestartResource
或ResourceManager
代码:
<InstallExecuteSequence >
<RemoveExistingProducts
After="InstallInitialize"/>
<Custom Action="RenameFileOnCancel" OnExit="cancel">1</Custom>
</InstallExecuteSequence>
<CustomAction
Id='RestartService'
Directory='TARGETDIR'
ExeCommand='[SystemFolder]cmd.exe net stop AppServerSvc && net start AppServerSvc'
Return='asyncWait'
Execute='deferred'
/>
答案 0 :(得分:3)
如果您在交易期间安排升级MSI,例如使用:
MajorUpgrade/@Schedule='afterInstallInitialize'
或MajorUpgrade/@Schedule='afterInstallExecute'
或MajorUpgrade/@Schedule='afterInstallExecuteAgain'
和使用ServiceControl
元素启动/停止/重新启动服务,然后Windows Installer将为您完成所有工作。
到目前为止 是实现目标的最佳推荐方式。