次の方法で共有


プライマリ インストーラーでの再起動マネージャーの使用

次の手順では、再起動マネージャーを使用して、アプリケーションとサービスをシャットダウンおよび再起動する方法について説明します。 再起動マネージャーを 1 つのインストーラーで使用する場合、このインストーラーは、ユーザー インターフェイスを制御するプライマリ インストーラーでもあります。

プライマリ インストーラーで再起動マネージャーを使用するには

  1. インストーラーは RmStartSession 関数を呼び出して、Restart Manager セッションを開始し、セッション ハンドルとキーを取得します。

  2. インストーラーは RmRegisterResources 関数を呼び出してリソースを登録します。 再起動マネージャーは、登録されているリソースのみを使用して、シャットダウンして再起動する必要があるアプリケーションとサービスを決定できます。 インストールの影響を受ける可能性のあるすべてのリソースをセッションに登録する必要があります。 リソースは、filename、service short name、または RM_UNIQUE_PROCESS 構造体で識別できます。

  3. インストーラーは RmGetList 関数を呼び出して、シャットダウンと再起動が必要なすべてのアプリケーションとサービスを一覧表示する RM_PROCESS_INFO 構造体の配列を取得します。

    RmGetList 関数によって返される lpdwRebootReason パラメーターの値が 0 以外の場合、再起動マネージャーは、アプリケーションまたはサービスのシャットダウンによって登録済みリソースを解放できません。 この場合、インストールを続行するには、システムのシャットダウンと再起動が必要です。 インストーラーは、ユーザーにアクションの入力を求める、プログラムまたはサービスを停止する、またはシステムのシャットダウンと再起動をスケジュールする必要があります。

    RmGetList 関数によって返される lpdwRebootReason パラメーターの値が 0 の場合、インストーラーは RmShutdown 関数を呼び出す必要があります。 これにより、登録済みリソースを使用しているサービスとアプリケーションがシャットダウンされます。 インストーラーは、インストールを完了するために必要なシステム変更を実行する必要があります。 最後に、インストーラーは RmRestart 関数を呼び出して、再起動マネージャーがシャットダウンし、再起動のために登録されているアプリケーションを再起動できるようにする必要があります。

  4. インストーラーは 、RmAddFilter 関数を使用して、指定されたアプリケーションとサービスが再起動マネージャー操作によってシャットダウンまたは再起動されるのを防ぐことができます。 RmGetFilterList 関数は、シャットダウンと再起動からフィルター処理されるアプリケーションとサービスの一覧を返します。 RmRemoveFilter 関数は、フィルターを削除します。

  5. インストーラーは RmEndSession 関数を呼び出して、再起動マネージャー セッションを閉じます。

プライマリ インストーラーを使用して再起動マネージャー セッションを開始して使用し、セカンダリ インストーラーを既存のセッションに参加させるコード スニペットの例については、「 セカンダリ インストーラーでの再起動マネージャーの使用」を参照してください。