今回は、デスクトップアプリ開発におけるリスタートマネージャー(Restart Manager)について投稿したいと思います。今回は概要です。詳細についても順次投稿していきたいと思います。
リスタートマネージャー(Restart Manager)とは
Windowsにおけるリスタートマネージャーとは、アプリケーションやサービスなどのプロセスを必要に応じて、停止および再起動する仕組みです。この仕組みはWindows Vistaのときに導入されました。
リスタートマネージャーは、アプリのインストールや更新時に必要となるシステムの再起動の回数を減らすことを目的としていました。
アプリのインストールや更新時にシステムの再起動が必要になる原因は、インストーラーによる更新対象のファイルがあるプロセスによって使用中でファイルの置き換えができないことです。システムを再起動し、Windowsの初期化段階のファイルが使用中になる前であればファイルを更新できます。この理由のためにインストールを完了するためにシステムの再起動が必要となっています。
インストールや更新時のシステムの再起動をなくすためには、更新対象ファイルが使用中であることをなくすしかありません。
Windows XPまで
Windows XPまでは、Windowsの仕組みとして、インストール時の再起動を減らすことをサポートする機能はありませんでした。そのため、多くのインストーラーは、ファイルが使用中であったら、システムの再起動を必要としていました。
一部のインストーラーでは、システムの再起動を減らすために、更新対象のファイルが使用中であった場合に独自の処理によって再起動を減らす努力をしているものもありました。プロセスの停止方法が既知の実行ファイルが使用中であれば、そのプロセスを停止して、ファイルを更新して、また、その実行ファイルを起動するという処理です。しかし、個々の実行ファイルでプロセスの終了方法が異なり、多くの実行ファイルに対応して、再起動を減らすのは大変な実装作業でした。
Windows Vista以降
そこで、2006年にリリースされたWindows Vistaでは、Windowsシステムとしてプロセスの再起動をする仕組みが用意されました。マイクロソフトのサイトにリスタートマネージャーの仕組みの説明(英語)があります。
この仕組みを利用すると、システムの再起動を減らすためにインストーラーで個々のアプリやサービスに特有な実装は必要なくなり、共通の一つの実装ですべてのアプリやサービスのプロセスの再起動の対応が可能となります。
Restart Managerの仕組みの概要
Restart Managerでは、以下の二つのルールが定義されました。
- プロセスを停止したい側の手順
(主にインストーラーなどが利用する)
Using Restart Manager (英語) - プロセスを停止される側のルール
(主にアプリやサービスが実装する)
Guidelines for Applications and Services(英語)
それぞれ、英語にはなりますが、詳細情報へのリンクも記載しました。これらの詳細内容については、別の機会に投稿したいと思います。
プロセスを停止する側
インストーラーなどは、前者の手順に従うと、使用中のファイルを更新したいときには、ファイルを使用しているプロセスを一時的に中断して、更新後に、再度起動することができます。停止したいプロセスのアプリやサービスの実装に依存せず、同じ手順で可能となります。Windows Installerでは、バージョン4.0でRestart Managerの仕組みに対応しました。そのため、Windows Insaller技術を使って作成されるインストーラーは、簡単な対応でRestart Manager対応にすることができ、インストールまたは更新時のシステムの再起動を減らすことができます。
プロセスを停止される側
アプリやサービスは後者のルールに従って、外部から停止されたり、再起動されるときの処理を実装します。Windows Vista以降に対応していると宣言するアプリやサービスは、最低限、外部から停止される処理を実装している必要があります。
なぜなら、アプリやサービスがRestart Managerの停止要件に対応することはWindows Vistaのデスクトップアプリのソフトウェアのロゴプログラムに適合するための要件でもあったからです(Restart Managerの再起動要件は必須ではありませんでした)。
また、現行のWindowsであるWindows 10向けデスクトップアプリの認定要件でもRestart Managerに対応することが必要とされています。そのため、デスクトップアプリがWindows 10への適合しているかを確認するテストツールであるWACK (Windows App Certification Kit=Windowsアプリ認定キット)でもRestart Managerに対応しているかがテストされます。
リスタートマネージャーの効果
Restart Managerに対応したデスクトップアプリが増えるにつれ、アプリのインストール時や更新時に要求されるシステムの再起動の数は少なくなっています。
Windows XPのときはアプリのインストールや更新した時、インストールを完了するために、多くの場合、システムの再起動が必要でした。しかし、Windows 10に対応したインストーラーの場合は、アプリのインストールや更新時にシステムの再起動が必要とされる回数は確実に少なくなりました。
アプリのリスタートマネージャーへの対応状況
Restart Managerが導入(2006年)されて12年間が過ぎました。またWindows もVista / 7 / 8.0 / 8.1 / 10と4世代も世代交代しました。
しかし、現在においてもRestart Managerに対応できていないデスクトップアプリが少なからず存在します。
その結果、現在においても、アプリのインストールや更新時におけるシステムの再起動をなくすということが完全には実現できていません。
デスクトップアプリの開発者の皆さん、最低限、Restart Managerの停止要件には対応しましょう。そして、可能な限り再起動要件にも対応しましょう。
なお、Windows 10 1709 (Windows 10 Fall Creators Update)では、アプリのインストール以外のときもこの仕組みが利用されます。そのため、Restart Managerの停止要件だけでなく、再起動要件に対応することも、ますます重要となります。
以上、リスタートマネージャー(Restart Manager)の概要でした。次回はアプリ側へ通知されるリスタートマネージャーのメッセージについて投稿します。
“デスクトップアプリのリスタートマネージャー1(概要)” への1件の返信