再起動マネージャーでの Windows インストーラーの使用
Windows Vista でのインストールとサービスに Windows インストーラー 4.0 を使用するアプリケーションでは、Restart Manager を自動的に使用して、システムの再起動を減らします。 Windows Vista の既定の動作では、可能な限りオペレーティング システムをシャットダウンして再起動するのではなく、アプリケーションをシャットダウンします。 システムの再起動が避けられない場合、インストーラーは Restart Manager API を使用して、ユーザーのワークフローの中断を最小限に抑えるように再起動をスケジュールできます。
Windows インストーラー開発者は、次のアクションを実行して、Restart Managerで動作するようにパッケージを準備できます。
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 インストーラーは、Restart Managerをサポートする外部ユーザー インターフェース ハンドラーに対して、INSTALLMESSAGE_RMFILESINUSE メッセージを送信する予定です。 登録または内部のユーザー インターフェイスがINSTALLMESSAGE_RMFILESINUSE メッセージを処理しない場合、インストーラーは、FilesInUse ダイアログ ボックスをサポートするユーザー インターフェイス ハンドラーに対してINSTALLMESSAGE_FILESINUSE メッセージを送信します。 詳細については、「外部 UI で再起動マネージャーを使用する」を参照してください。
カスタム アクションでは、Restart Manager セッションに属するリソースを追加できます。 InstallValidate アクションの前に、カスタム アクションをシーケンスする必要があります。 カスタム アクションでは、MsiRestartManagerSessionKey プロパティを使用してセッション キーを取得できます。また、Restart Manager API の rmJoinSessionおよび rmEndSession関数を呼び出す必要があります。 カスタム アクションでは、再起動マネージャー セッションに属するリソースを削除できません。 カスタム アクションは、RmShutdown、RmGetList、および RmRestart関数使用して、アプリケーションをシャットダウンまたは再起動しないでください。
パッケージ作成者は、MsiSystemRebootPending プロパティに LaunchCondition テーブルの条件に基づいて、システムの再起動が保留中のときにパッケージがインストールされないようにすることができます。
パッケージ作成者と管理者は、MSIRESTARTMANAGERCONTROL、MSIDISABLERMRESTART、MSIRMSHUTDOWN プロパティ、および DisableAutomaticApplicationShutdown ポリシーを使用して、Windows インストーラーと再起動マネージャーの対話を制御できます。
アプリケーションとサービスは、Restart Manager ドキュメントの「Restart Manager の使用」セクションで説明されているガイドラインに従う必要があります。