システムの再起動

Windows インストーラーでは、システムの再起動が必要なタイミングを判断し、インストールの終了時に再起動するよう自動的にユーザーに求めることができます。 たとえば、インストール中に使用されているファイルを置き換える必要が生じた場合、インストーラーから自動的に再起動を求めるプロンプトが表示されます。

インストールと保守に Windows インストーラー バージョン 4.0 を使用するアプリケーションでは、自動的に再起動マネージャーを使用してシステムの再起動を減らします。 Windows インストーラー バージョン 4.0 以降には、パッケージ作成者と管理者が Windows インストーラーと再起動マネージャーとの対話を制御できるようにするプロパティとポリシーが用意されています。 詳細については、「Windows インストーラーと再起動マネージャーの併用」を参照してください。

インストール パッケージの作成者は、シーケンス テーブルの標準アクションを使用し、プロパティを設定して、再起動をスケジュールして抑制できます。 システムの再起動の処理には、次のアクションとプロパティを使用します。

アクション、ダイアログ ボックス、またはプロパティ 簡単な説明
ForceReboot アクション インストール中に、再起動を求めるプロンプトをユーザーに表示します。
ScheduleReboot アクション インストールの終了時に、再起動を求めるプロンプトをユーザーに表示します。
REBOOT プロパティ システムの再起動に関する特定の自動プロンプトの表示を強制または抑制します。
REBOOTPROMPT プロパティ ユーザーに再起動を求めるプロンプトの表示を抑制します。 必要な再起動は自動的に行われます。
AFTERREBOOT プロパティ 一般に、ForceReboot アクションに適用される条件で使用されます。
InstallValidate アクション 必要に応じて FilesInUse ダイアログを表示し、ユーザーがプロセスをシャットダウンして、システムの再起動を一部回避できるようにします。
FilesInUse ダイアログ ユーザーがプロセスをシャットダウンして、システムの再起動を一部回避できるようにします。
MsiRMFilesInUse ダイアログ ユーザーが任意で再起動マネージャーを使用して、アプリケーションを閉じて再起動できるようにします。 Windows インストーラー バージョン 4.0 以降で使用できます。
ReplacedInUseFiles プロパティ インストーラーで、使用中のファイルに対してインストールするかどうかを設定します。 このプロパティは、再起動が必要であることを検出するためにカスタム アクションによって使用されます。
MSIRESTARTMANAGERCONTROL Windows インストーラーが再起動マネージャーと対話できないようにするプロパティ。 Windows インストーラー バージョン 4.0 以降で使用できます。
MSIDISABLERMRESTART 再起動マネージャーでどのようにアプリケーションを閉じて再起動するかを指定します。 Windows インストーラー バージョン 4.0 以降で使用できます。
MSIRMSHUTDOWN 再起動マネージャーでどのようにアプリケーションを閉じて再起動するかを指定します。 Windows インストーラー バージョン 4.0 以降で使用できます。
MsiSystemRebootPending オペレーティング システムの再起動が保留されている場合、インストーラーでこのプロパティが設定されます。 Windows インストーラー バージョン 4.0 以降で使用できます。
DisableAutomaticApplicationShutdown Windows インストーラーが再起動マネージャーと対話できないようにするポリシー。 Windows インストーラー バージョン 4.0 以降で使用できます。

 

ERROR_INSTALL_SUSPEND は、インストールが完了もロールバックもされなかったことを意味します。 インストールを完了するには、まずインストールを再開する必要があります。 インストールを再開するために、先にシステムの再起動が必要になる場合があります。

ForceReboot アクションを実行すると、Windows インストーラーからエラー コード ERROR_INSTALL_SUSPEND が返されます。 アプリケーションの実行前に再起動が必要な場合は ERROR_SUCCESS_REBOOT_REQUIRED が返され、実際にインストーラーで再起動が開始されている場合は ERROR_SUCCESS_REBOOT_INITIATED が返されます。 再起動は非同期に行われるため、実際にはエラー コードが返される前に再起動が行われる場合があるので注意してください。 詳細については、エラー コードに関する記事を参照してください。

カスタム アクションを使用すると、MsiSetMode を呼び出して、強制的にインストールの終了時に再起動を求めるプロンプトを表示できます。 また、カスタム アクションを使用して、保留中の再起動プロンプトがあるか MsiGetMode を呼び出してチェックすることもできます。

FilesInUse ダイアログ

インストーラーでは、システムの再起動が必要なタイミングを判断し、再起動を要求するプロンプトをユーザーに表示できます。 通常、システムの再起動が必要になるのは、現在使用されているファイルのインストールがインストーラーで試みられている場合です。 InstallValidate アクションを使用して使用中のファイルのインストールが検出されると、FilesInUse ダイアログが表示されます。

インストーラーで FilesInUseDialog が表示されると想定されているのに反し、表示されない場合、原因として次のいずれかの理由が考えられます。

  • 使用中のファイルが実行可能ファイルではない。
  • 実際にはインストーラーでそれらのファイルのインストールが試みられていない。
  • それらのファイルを保持するプロセスが、インストールを呼び出すプロセスである。
  • それらのファイルを保持するプロセスが、それに関連するタイトルを持つウィンドウがないプロセスである。

詳細については、「再起動要求のログ記録」を参照してください。