MSI のセットアップがユーザーによってキャンセルされた場合、サービスを再起動することはできますか?
MSI がサービスを再起動する必要があるシナリオが 2 つあります。
- 古いサービス ファイルを停止して更新し、サービスを開始します。サービスの開始に失敗した場合は、古いファイルを元に戻し、サービスを再起動します。【この部分はロールバックで行う】
- セットアップ プロセス中に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'
/>