Windows インストーラーを使用して、エンド ユーザーのマシンにゲームをインストールする方法を示します。 Windows インストーラーでは、カスタマイズされたユーザー インターフェイスと修正プログラムの適用が完全にサポートされます。
Microsoft Windows インストーラーは、Windows ベースのコンピューターにソフトウェアをインストールするための推奨 API です。 Windows インストーラーの機能の多くは企業環境でのビジネス アプリケーションの展開をサポートするように設計されていますが、Windows インストーラーはエンド ユーザーのマシンにゲームをインストールする場合にも完全に適しています。 ゲームのインストールに Windows インストーラーを使用する主な利点は次のとおりです。
- Reliable uninstall
- オンデマンドでコンテンツをインストールする機能
- 完全カスタム ユーザー インターフェイスのサポート
- 効率的な修正プログラムの適用
この記事では、特にゲーム開発者を対象とした Windows インストーラーの概要について説明します。 この記事で説明されている機能と API の詳細なドキュメントについては、Windows プラットフォーム SDK を参照してください。
- の概要
- Windows インストーラーの主要な概念
- インストール状態
- オンデマンド インストール
- カスタム ユーザー インターフェイス の
- 修正プログラムの適用
- その他のリソース を する
概要
すべての Windows インストーラー ベースのセットアップでは、MSI ファイルと呼ばれるインストール データベース ファイルを使用して、アプリケーションのインストール方法を記述します。 MSI ファイルには、インストールするファイル、レジストリ キー、デスクトップ ショートカット、ファイルの関連付け、およびその他のアプリケーション要素に関する情報が含まれています。 インストールする実際のファイルは、MSI ファイル自体内で圧縮したり、バンドルして個別の "キャビネット ファイル" に圧縮したり、インストール メディア上の別の場所に個別の圧縮されていないファイルとして保存したりできます。 MSI ファイルは、MSI ファイルでネイティブに許可されていないアクションを許可するために、外部で実装されたカスタム アクションを参照することもできます。
MSI ファイルには、必要に応じて、インストール プロセスをユーザーに案内するユーザー インターフェイスを含めることができます。 この UI は、ほとんどのアプリケーションに適しています。 ただし、通常の Windows アプリケーションの外観があり、多くのゲーム開発者は、より一貫性のあるエンド ユーザー エクスペリエンスを提供するために、セットアップ アプリケーションがゲーム自体の外観を維持することを好みます。 この完全なカスタム UI シナリオをサポートするために、セットアップ アプリケーションで Windows インストーラーの組み込み UI をオフにし、ユーザー インターフェイス全体を処理できます。 Windows インストーラー API は、カスタム セットアップ UI にインストールの進行状況と、ディスク変更要求などの重要なイベントを通知するためのコールバック メカニズムを公開します。
Windows インストーラーは、セットアップを作成するためのエンド ツー エンドのソリューションではありません。 これは、ファイル、レジストリ キー、デスクトップ ショートカット、およびアプリケーションの他の要素の実際のインストールを行うためにセットアップ プログラムで使用できる API のみです。 すべての主要な商用セットアップ ツール (InstallShield、WISE、Microsoft Visual Studio など) の最新バージョンでは、Windows インストーラーがサポートされています。 これらのツールは、ゲームのセットアップを作成するための便利なユーザー インターフェイスを提供しますが、実際のインストールの多くを行うには Windows インストーラー API に依存しています。 これらのツールは、セットアップ パッケージを含む MSI データベースを構築するためだけに使用することもできます。このデータベースは、カスタム記述のセットアップ UI からインストールできます。 サード パーティ製ツールの代わりに、Windows インストーラー API は、MSI データベースをプログラムで作成および操作するために必要なすべての機能を提供し、Windows プラットフォーム SDK には Orca と呼ばれるベアボーン MSI データベース編集ツールが含まれています。
Windows インストーラーの主な概念
Windows インストーラーのコンポーネントと機能を次に示します。
コンポーネント
アプリケーションは、GUID コンポーネント ID で識別される 1 つ以上のコンポーネントで構成されます。 コンポーネントはアトミック単位です。完全にインストールされているか、まったくインストールされていません。 コンポーネントは、1 つのファイル、複数のファイル、レジストリ キー、デスクトップ ショートカット、またはその組み合わせで構成できます。 コンポーネント内のリソース (ファイルなど) は、そのコンポーネントに固有である必要があります。2 つのコンポーネントに同じリソースを含めてはなりません。 コンポーネントが明示的にインストールされることはありません。これは、機能の一部としてのみインストールされます (以下を参照)。
顔立ち
機能は、GUID 機能 ID で識別されるコンポーネントのグループです。 コンポーネントとは異なり、複数のフィーチャに同じコンポーネントが含まれている場合があります。 複数の機能間で共有されるコンポーネントは、これらの機能のいずれかがインストールされている場合にインストールされ、コンポーネントを参照するすべての機能がアンインストールされた場合にのみ削除されます。 機能のインストールは、製品のインストールの一環として自動的に行うか、MsiConfigureFeature API を使用して手動で行うことができます。
個別にインストールできる複数の "機能" を持つゲームはほとんどありませんが、Windows インストーラーの機能の概念はまだ役立ちます。 Windows インストーラー機能は、一緒にインストールできるコンポーネントのコレクションに過ぎないため、ゲームは機能を使用して、ゲームの特定のステージに必要なすべてのコンテンツをグループ化できます。 たとえば、レベル指向のゲームでは、そのレベルに必要なすべてのコンテンツで構成される、レベルごとに 1 つの機能を定義できます。 これにより、ゲームは、最初のインストール中にすべてのレベルのすべてのコンテンツをインストールするのではなく、ゲーム内から一度に 1 レベルずつコンテンツをインストールできます。
インストール状態
各コンポーネントまたは機能にはインストール状態が関連付けられています。この状態によって、コンポーネントまたは機能が使用可能かどうか、および使用できる場合は、コンポーネントまたは機能のファイルがインストールされる場所が決まります。 機能の考えられるインストール状態は次のとおりです。
-
欠席
-
この機能はインストールされていないため、アクセスできません。
-
ローカル
-
この機能は使用可能であり、ローカル ハード ドライブから実行するためにインストールされます。
-
ソース
-
この機能は、元のソース メディア (通常は CD または DVD) から実行するためにインストールされます。
-
アドバタイズされた
-
この機能はインストールされていませんが、MsiConfigureFeature API を使用してオンデマンドでインストールできます。 機能が実際にインストールされている場合は、ローカルまたはソースの状態にインストールできます。
コンポーネントは、"アドバタイズ済み" を除き、上記のいずれかの状態を持つことができます。コンポーネントがアドバタイズされた機能の一部である場合、機能がインストールされるまで、コンポーネントは "Absent" と表示されます。
オンデマンドインストール
Windows インストーラーを使用すると、アプリケーションは機能をアドバタイズ済みとしてマークできます。つまり、機能はまだインストールされていませんが、必要に応じて実行時にインストールできます。 実行時の機能のインストールは、"オンデマンドインストール" と呼ばれます。ゲームでは、実行時に必要になるまでゲーム コンテンツのインストールを延期することで、オンデマンドインストールを使用して、ゲームの初期セットアップに必要な時間を大幅に短縮できます。 実行時にコンテンツをインストールするために必要な遅延は、多くの場合、バックグラウンド スレッドでオンデマンド インストールを実行することで部分的または完全に非表示になる場合があり、それ以外の場合はユーザーがゲームを占有します。
カスタム ユーザー インターフェイス
Windows インストーラーには、アプリケーションのインストールをユーザーに指示する既定のユーザー インターフェイスが用意されていますが、このインターフェイスは標準の Windows アプリケーションのように見えます。 多くのゲーム開発者は、インストール UI の外観がゲーム自体と同じであることを好み、ゲームの雰囲気をユーザーに提供します。 これをサポートするために、Windows インストーラーでは、組み込みのユーザー インターフェイスを完全に無効にすることができ、開発者は完全にカスタム UI を提供できます。
カスタム セットアップ プログラムは、まず、MsiSetInternalUI API を使用して Windows インストーラーの組み込みユーザー インターフェイスを無効にして、UI レベルを INSTALLUILEVEL_NONE に設定します。 その後、MsiSetExternalUI API を呼び出して、インストールプロセス中に呼び出されるコールバック関数を指定して、インストール時にセットアップ プログラムにキー イベントを通知します。
その後、実際のインストール プロセスは、MsiInstallProduct API を呼び出すことによって開始されます。 この API は、呼び出し元が名前付きプロパティの値を指定できるようにするパラメーター文字列を受け入れます。 これらのプロパティは、インストール データベース自体内で使用して、アプリケーションのインストール方法をカスタマイズできます。 これらのプロパティを使用して、次の値を指定できます。
- アプリケーションをインストールするディレクトリ
- ローカルにインストールする機能と、CD/DVD から実行するためにインストールする機能 (たとえば、最小限のインストールとフル インストールのどちらかを選択できるようにするため)
- コンピューターのすべてのユーザーに対してアプリケーションをインストールするか、現在のユーザーのみにインストールするか
インストールの過程で、セットアップ プログラムはコールバック関数に送信された通知メッセージを使用して、進行状況インジケーター UI を更新するタイミング、ユーザーに次の CD の挿入を求めるタイミング、またはインストール プロセスのエラーについてユーザーに通知するタイミングを決定します。
パッチ
Windows インストーラーを使用すると、パッチ ファイルを適用することで、インストールされているアプリケーションにパッチを適用できます。 パッチ ファイルには、パッチによって追加される新しいファイル、パッチによって変更されたファイル、およびインストール データベースに加える変更の一覧が含まれます。 領域を節約するために、パッチによって変更されたファイルの完全な内容を格納する代わりに、パッチ ファイルには実際には、ファイルの元のバージョンと新しいバージョンのファイルの違いのみが含まれています。
パッチを作成するには、パッチをアップグレードするアプリケーションの各バージョンのセットアップ イメージと、アップグレードされた新しいバージョンのアプリケーションのセットアップ イメージが必要です。 セットアップ イメージは、MSI データベースと、アプリケーションのすべての実際のデータ ファイルで構成されます。 アプリケーションの新しいバージョンのセットアップ イメージを作成する最善の方法は、以前のバージョンのアプリケーションからセットアップ イメージをコピーし、そのコピーを修正プログラムが適用されたバージョンに更新するために必要な変更を加える方法です。
必要なすべてのセットアップ イメージを作成したら、プラットフォーム SDK の一部として使用できるパッチ作成ツールである Msimsp.exeを使用してパッチを作成できます。 このツールは、各セットアップ イメージの場所を要求し、連続するバージョン間の違いを効率的に表す方法を決定します。 ツールの出力は最終的なパッチ ファイルです (拡張子 MSP によって識別されます)。 プログラムでパッチをインストールするには、MsiApplyPatch API を呼び出します。 ユーザーは、エクスプローラーで MSP ファイルをダブルクリックして、パッチを手動でインストールすることもできます。
その他のリソース
- Windows インストーラー API の詳細については、「Windows インストーラーの」を参照してください。
- ゲームのインストールのベスト プラクティスについては、「ゲームのインストールとメンテナンス」を参照してください。