如果设置 MSI 被用户取消,是否可以重新启动服务?
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'
/>