2

MSI のセットアップがユーザーによってキャンセルされた場合、サービスを再起動することはできますか?

MSI がサービスを再起動する必要があるシナリオが 2 つあります。

  1. 古いサービス ファイルを停止して更新し、サービスを開始します。サービスの開始に失敗した場合は、古いファイルを元に戻し、サービスを再起動します。【この部分はロールバックで行う】
  2. セットアップ プロセス中にMSI が意図的にキャンセルされた場合は、サービスを再起動します。

キャンセル時に を呼び出し、CustomActionCMD.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 &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 インストーラーがすべての作業を行います。

これは、目標を達成するための最も推奨される方法です

于 2013-03-20T13:58:11.090 に答える