Windows インストーラーと再起動マネージャーの併用
Windows Vista 上でのインストールと保守に Windows インストーラー 4.0 を使用するアプリケーションでは、システムの再起動を減らすために、再起動マネージャーを自動的に使用します。 Windows Vista の既定の動作では、可能な限り、オペレーティング システムをシャットダウンして再起動するのではなく、アプリケーションをシャットダウンします。 システムの再起動が避けられない場合、インストーラーは再起動マネージャー API を使用して、ユーザーのワークフローの中断を最小限にとどめるように再起動をスケジュールできます。
Windows インストーラー開発者は、以下のアクションを実行して、再起動マネージャーと連動するようにパッケージを準備できます。
[MsiRMFilesInUse] ダイアログ ボックスをパッケージに追加します。 [MsiRMFilesInUse] ダイアログ ボックスがパッケージに存在している場合、"完全な UI" のユーザー インターフェイス レベルでインストールを実行している Windows Vista ユーザーには、アプリケーションを自動的に終了して再起動するためのオプションが与えられます。 インストール パッケージには、[MsiRMFilesInUse] ダイアログ ボックスと [FilesInUse] ダイアログ ボックスの両方の情報を含めることができます。 MsiRMFilesInUse ダイアログ ボックスは、Windows Vista の Windows インストーラー 4.0 以上を使用してパッケージをインストールした場合にのみ表示され、それ以外の場合は無視されます。 [MsiRMFilesInUse] ダイアログ ボックスがない既存のパッケージは、引き続き [FilesInUse] ダイアログ ボックスを使用して機能します。 カスタマイズ変換を使用して、[MsiRMFilesInUse] ダイアログ ボックスを既存のパッケージに追加できます。
エンド ユーザーは通常、"完全な UI" のユーザー インターフェイス レベルでインストールを実行します。 "基本的な UI" または "UI の削減" レベルのインストールでは、[MsiRMFilesInUse] ダイアログ ボックスが存在しない場合でも再起動マネージャーを使用してシステムの再起動を減らすオプションがユーザーに与えられます。 サイレント UI レベルのインストールでは常にアプリケーションとサービスをシャットダウンし、Windows Vista では常に再起動マネージャーを使用します。
RegisterApplicationRestart 関数を使用して、再起動のためにアプリケーションを登録します。 再起動マネージャーは、再起動のために登録されているアプリケーションのみを再起動できます。 インストール後、再起動マネージャーは登録されているアプリケーションを再起動します。 インストールでシステムの再起動が必要な場合、再起動マネージャーは、システムの再起動後、登録されているアプリケーションを再起動します。
MsiSetExternalUI および MsiSetExternalUIRecord 関数を使用して外部ユーザー インターフェイス ハンドラーを有効にする場合は、INSTALLLOGMODE_RMFILESINUSE を指定します。 Windows インストーラーは、再起動マネージャーをサポートする外部ユーザー インターフェイス ハンドラーに対して INSTALLMESSAGE_RMFILESINUSE メッセージを送信します。 INSTALLMESSAGE_RMFILESINUSE メッセージを処理する登録済みまたは内部のユーザー インターフェイスがない場合、インストーラーは [FilesInUse] ダイアログ ボックスをサポートするユーザー インターフェイス ハンドラーに対して INSTALLMESSAGE_FILESINUSE メッセージを送信します。 詳細については、外部 UI での再起動マネージャーの使用に関するページを参照してください。
カスタム アクションでは、再起動マネージャー セッションに属するリソースを追加できます。 このカスタム アクションは InstallValidate アクションよりも前の順序にする必要があります。 カスタム アクションでは、MsiRestartManagerSessionKey プロパティを使用してセッション キーを取得できます。また、再起動マネージャー API の RmJoinSession 関数と RmEndSession 関数を呼び出す必要があります。 カスタム アクションでは、再起動マネージャー セッションに属するリソースを削除できません。 カスタム アクションでは、RmShutdown、RmGetList、RmRestart の各関数を使用してアプリケーションのシャットダウンまたは再起動を試みてはなりません。
パッケージの作成者は、システムの再起動が保留中のときにパッケージがインストールされないように、LaunchCondition テーブルの MsiSystemRebootPending プロパティで条件を設定できます。
パッケージの作成者と管理者は、MSIRESTARTMANAGERCONTROL、MSIDISABLERMRESTART、MSIRMSHUTDOWN の各プロパティと DisableAutomaticApplicationShutdown ポリシーを使用して、Windows インストーラーと再起動マネージャーの対話を制御できます。
アプリケーションとサービスでは、「再起動マネージャー」ドキュメントの「再起動マネージャーの使用」セクションで説明されているガイドラインに従う必要があります。