ゲーム開発者向けの Windows ゲーム エクスプローラー
ゲーム ディベロッパー グループ
2005 年 12 月
はじめに
Microsoft Windows Vista では、ゲーム エクスプローラーを搭載することによって、Windows でのゲームのユーザー エクスペリエンスが向上されています。ゲーム エクスプローラーは、Windows Vista の [スタート] メニューに [ゲーム] フォルダーとして表示され、ゲームにアクセスするための中心的な場所を提供しています。この記事では、ゲーム エクスプローラーと保護者による制限にゲームを登録するプロセスの概要を説明します。
目次
- 前提条件
- 統合プロセス
- ゲーム エクスプローラー タスク
- 削除プロセス
- インストーラーへの統合
- InstallScript への統合
- MSI パッケージへの統合
- デバッグに関するヒント
- まとめ
前提条件
ゲームをゲーム エクスプローラーに統合するには、ゲーム定義ファイル (GDF) を作成しておく必要があります。GDF は、ゲームを記述するメタデータを含んだ XML ファイルです。Microsoft は、この作成プロセスが簡単になるように、DirectX SDK で GDF をオーサリングするためのツール Game Definition File Editor を提供しています。このツールは、ローカライズされたバージョンの GDF の作成にも役立ちます。
オーサリングして、ローカライズした GDF は、バイナリ ファイル (実行可能ファイルまたは DLL) のリソース セクション内に、ゲームのサムネイルおよびアイコンと一緒にカプセル化する必要があります。GDF には、ゲームのレーティングを初め、ゲームに関連するすべてのメタデータが含まれます。Windows Vista の保護者による制限では、ゲームのレーティングを使用して、保護者がゲームへのアクセスを制御できるようになっています。GDF が含まれるバイナリ ファイルは、有効な Authenticode 証明書でデジタル署名されている必要があります。デジタル署名されていない場合、認定なしではレーティング情報を信用できないため、ゲーム エクスプローラーおよび保護者による制限システムでは、ゲームのレーティングが無視されます。Authenticode によるコード署名の詳細については、「ゲーム開発者のための Authenticode 署名」を参照してください。
統合プロセス
GDF および関連ファイルをバイナリ リソースに追加したら、ゲームをゲーム エクスプローラーに統合できるようになります。ゲーム エクスプローラーとのゲームの統合は、インストール プロセスで実行することを強くお勧めします。次に、統合プロセスの概要を示します。
- すべてのファイルをユーザーのハードディスクにインストールします。AddGame ステップによって、保護者による制限がアクティブになり、ユーザーがインストール ディレクトリにアクセスできなくなる可能性があります。
- IGameExplorer インターフェイスのインスタンスを作成します。
- IGameExplorer インターフェイスの VerifyAccess メソッドを呼び出し、これに GDF へのパスを渡します。
- IGameExplorer インターフェイスの AddGame メソッドを呼び出し、これに GDF へのパス、ルート インストール ディレクトリへのパス、およびゲーム インスタンス ID と呼ばれる一意の GUID を渡します。GIS_ALL_USERS で渡す場合は、管理者権限が必要です。
- ゲーム インスタンス ID を使用して、ゲーム エクスプローラー タスクと呼ばれるショートカットを作成します。ゲーム エクスプローラー タスクについては、次のセクションで説明します。
ゲーム エクスプローラー タスク
ゲーム エクスプローラー タスクは、ユーザーがゲーム エクスプローラーでゲームを右クリックしたときに表示されるものです。タスクは、既知のフォルダーにある単純なショートカットです。タスクは、プレイ タスクとサポート タスクに分かれます。たとえば、ゲームをマルチプレイヤー モードで起動するショートカットが必要な場合、これはプレイ タスクです。Web サイトへのショートカットが必要な場合、このショートカットはサポート タスクです。プレイ タスクおよびサポート タスクは、対応する名前 PlayTasks および SupportTasks が付けられたディレクトリに格納されます。ユーザーはプレイ タスクをカスタマイズできますが、サポート タスクはカスタマイズできません。開発者は、ショートカットおよびショートカットを配置するディレクトリの両方を作成します。
次の、タスク フォルダーのレイアウトの例では、ショートカットへのパスは、CSIDL_COMMON_APPDATA または CSIDL_LOCAL_APPDATA を渡すことによって https://msdn2.microsoft.com/en-us/library/bb762181.aspx から返されるパスで始まっています。ゲームをすべてのユーザーに対してインストールするか、現在のユーザーのみに対してインストールするかによっていずれかの値を渡します。また、{ゲーム インスタンス ID} は、AddGame 関数に渡される GUID です。
次に、ショートカットの例を示します。
.\Microsoft\Windows\GameExplorer\{ゲーム インスタンス ID}\PlayTasks\0\Play.lnk
.\Microsoft\Windows\GameExplorer\{ゲーム インスタンス ID}\PlayTasks\1\Play Online.lnk
.\Microsoft\Windows\GameExplorer\{ゲーム インスタンス ID}\SupportTasks\0\Developer's Website.lnk
注 これらのパスで指定された場所は、https://msdn2.microsoft.com/en-us/library/bb762181.aspx によって返される場所を基準にした相対パスです。
タスクが表示されるとき、PlayTasks 内の常に Play という名前の最初のリンクを除いて、リンクの名前がユーザーに表示されます。タスクは、各タスクのリンクの番号付けされたサブディレクトリについて昇順で表示されます。タスクの詳細については、ゲーム エクスプローラーのドキュメントを参照してください。
削除プロセス
ゲーム エクスプローラーからゲームを削除するプロセスは簡単で、次の手順に従って実行できます。
- IGameExplorer インターフェイスのインスタンスを作成します。
- 統合プロセスで使用したゲーム インスタンス ID で RemoveGame メソッドを呼び出します。ゲームが GIS_ALL_USERS を使用して追加されていた場合は、管理者権限が必要です。それ以外の場合は、ゲームの追加に使用したものと同じユーザー アカウントを使用する必要があります。
- 該当するゲーム ファイルおよびタスク フォルダーを削除します。
このプロセスでは、1 つのインストールのみが削除されます。ゲームが複数回インストールされていた場合は、このプロセスをインストールごとに繰り返す必要があります。
インストーラーへの統合
可能な場合は、インストール時に、ゲーム エクスプローラーの API を呼び出す必要があります。GameuxInstallHelper は、このプロセスで役に立つサンプル DLL で、GameuxInstallHelper とそのソース コードは、DirectX SDK で提供されています。GameuxInstallHelper は、InstallShield や Wise Installation System のスクリプト、および MSI カスタム アクションやカスタム インストール ツールと連動するように設計されています。この DLL からエクスポートされる関数は、次のとおりです。
- GenerateGUID
一意のゲーム インスタンス ID を作成します。 - AddToGameExplorerW
指定されたゲーム インスタンス ID および GDF バイナリへのパスに従って、ゲーム エクスプローラーにゲームを登録します。 - AddToGameExplorerA
ゲーム エクスプローラーにゲームを登録します。AddToGameExplorerW の ANSI バージョンです。 - RetrieveGUIDForApplicationW
指定された登録済み GDF バイナリへのパスに従って、ゲーム インスタンス ID を返します。 - RetrieveGUIDForApplicationA
ゲーム インスタンス ID を返します。RetrieveGUIDForApplicationW の ANSI バージョンです。 - CreateTaskW
指定されたゲーム インスタンス ID に従って、適切な場所にタスク ショートカットを作成します。 - CreateTaskA
適切な場所にタスク ショートカットを作成します。CreateTaskW の ANSI バージョンです。 - RemoveTasks
特定のゲーム インスタンス ID に関連付けられているすべてのタスクを削除します。 - SetupRichSavedGamesW
リッチ セーブ データを有効にするレジストリ キーを作成します。 - SetupRichSavedGamesA
リッチ セーブ データを有効にするレジストリ キーを作成します。SetupRichSavedGamesW の ANSI バージョンです。 - RemoveRichSavedGamesW
リッチ セーブ データを有効にするレジストリ キーを削除します。 - RemoveRichSavedGamesA
リッチ セーブ データを有効にするレジストリ キーを削除します。RemoveRichSavedGamesW の ANSI バージョンです。 - SetMSIGameExplorerProperties
MSI 遅延カスタム インストールのアクションに CustomActionData のプロパティを構成します。この関数の使用方法の詳細については後述します。 - AddToGameExplorerUsingMSI
ゲーム エクスプローラーにゲームを追加します。MSI カスタム アクションのインストール時に使用します。 - RemoveFromGameExplorer
指定されたゲーム インスタンス GUID に従って、ゲーム エクスプローラーへの登録からゲームを削除します。 - RemoveFromGameExplorerUsingMSI
ゲーム エクスプローラーからゲームを削除します。MSI カスタム アクションのインストール時に使用します。 - RegisterWithMediaCenterW
GDF メタデータを使用して Media Center にゲームを登録します。 - RegisterWithMediaCenterA
GDF メタデータを使用して Media Center にゲームを登録します。RegisterWithMediaCenterW の ANSI バージョンです。 - UnRegisterWithMediaCenterW
Media Center からゲームの登録を解除します。 - UnRegisterWithMediaCenterA
Media Center からゲームの登録を解除します。UnRegisterWithMediaCenterW の ANSI バージョンです。
これらの関数の詳細については、GameUXInstallHelper.h ヘッダーの箇所で説明します。
InstallScript への統合
InstallShield の InstallScript からゲーム エクスプローラーの API を呼び出す処理は、前述のサンプル DLL の GameuxInstallHelper を使用すると簡単になります。次に、InstallShield との統合に必要な手順を示します。
InstallShield エディターで InstallScript プロジェクトを開きます。
ターゲット ディレクトリにインストールされるように、GameuxInstallHelper.dll をプロジェクトに追加します。
GameuxInstallHelper.dll を InstallScript プロジェクトに追加するには :
[インストール デザイナー](Installation Designer) タブで、左のナビゲーション ペインの [アプリケーション データ](Application Data) をクリックします。
[ファイルとフォルダー](Files and Folders) をクリックして、[ソース コンピューターのフォルダー](Source computer's folders) を参照し、[ソース コンピューターのファイル](Source computer's files) の GameuxInstallerHelper.dll を見つけます。
GameuxInstallerHelper.dll のデフォルトの場所は、DirectX SDK ルート\Samples\C++\Misc\Bin\x86 です。
[インストール先コンピューターのフォルダー] の対象のフォルダーをクリックします。
GameuxInstallerHelper.dll を [ソース コンピューターのファイル](Source computer's files) から [インストール先コンピューターのファイル](Destination computer's files) にドラッグします。
InstallScript のエクスプローラーで、DLL 関数を呼び出す InstallScript ファイル (通常は setup.rul) をクリックします。
次の InstallScript をファイルに貼り付けます。
typedef GUID begin LONG Data1; SHORT Data2; SHORT Data3; CHAR Data4(8); end; prototype LONG GameuxInstallHelper.AddToGameExplorerW( WSTRING, WSTRING, NUMBER, GUID POINTER ); prototype LONG GameuxInstallHelper.RemoveFromGameExplorer( GUID POINTER ); prototype LONG GameuxInstallHelper.RetrieveGUIDForApplicationW( WSTRING, GUID POINTER ); prototype LONG GameuxInstallHelper.GenerateGUID( GUID POINTER ); prototype LONG GameuxInstallHelper.CreateTaskW( NUMBER, GUID POINTER, NUMBER, NUMBER, WSTRING, WSTRING, WSTRING ); prototype LONG GameuxInstallHelper.RemoveTasks( GUID POINTER ); prototype LONG GameuxInstallHelper.SetupRichSavedGamesW( WSTRING, WSTRING, WSTRING ); prototype LONG GameuxInstallHelper.RemoveRichSavedGamesW( WSTRING ); function OnMoved() WSTRING gdfbin[256]; WSTRING path[256]; NUMBER scope; NUMBER supportTask; NUMBER playTask; GUID guid; GUID POINTER pGuid; begin if !MAINTENANCE then UseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" ); UseDLL( WINSYSDIR ^ "OLE32.dll" ); path = TARGETDIR; gdfbin = TARGETDIR ^ "bin\\ExampleGame.exe"; // TODO: Change this to point to binary containing the GDF pGuid = &guid; playTask = 0; supportTask = 1; if ALLUSERS == 1 then scope = 3; else scope = 2; endif; GameuxInstallHelper.GenerateGUID( pGuid ); GameuxInstallHelper.AddToGameExplorerW( gdfbin, path, scope, pGuid ); // TODO: Add/remove/change tasks // Play tasks. You can define up to 6 GameuxInstallHelper.CreateTaskW( scope, pGuid, playTask, 0, "Play", gdfbin, "" ); GameuxInstallHelper.CreateTaskW( scope, pGuid, playTask, 1, "Network Play", gdfbin, "-network" ); GameuxInstallHelper.CreateTaskW( scope, pGuid, playTask, 2, "Safe Mode", gdfbin, "-safe" ); // Support tasks. You can define up to 5 GameuxInstallHelper.CreateTaskW( scope, pGuid, supportTask, 0, "Support", "https://www.msn.com", "" ); // Setup rich save game support // TODO: change the saved game file extension GameuxInstallHelper.SetupRichSavedGamesW( ".ExampleSaveGame", gdfbin, "%1" ); UnUseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" ); UnUseDLL( WINSYSDIR ^ "OLE32.dll" ); endif; end; function OnMoving() WSTRING gdfbin[256]; GUID guid; GUID POINTER pGuid; begin if MAINTENANCE && UNINST != "" then UseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" ); UseDLL( WINSYSDIR ^ "OLE32.dll" ); gdfbin = path ^ "bin\\ExampleGame.exe"; // TODO: Change this to point to binary containing the GDF pGuid = &guid; GameuxInstallHelper.RetrieveGUIDForApplicationW( gdfbin, pGuid ); GameuxInstallHelper.RemoveFromGameExplorer( pGuid ); GameuxInstallHelper.RemoveTasks( pGuid ); GameuxInstallHelper.RemoveRichSavedGamesW( ".ExampleSaveGame" ); UnUseDLL( TARGETDIR ^ "GameuxInstallHelper.dll" ); UnUseDLL( WINSYSDIR ^ "OLE32.dll" ); endif; end;
MSI パッケージへの統合
次に、MSI カスタム アクションを使用してゲーム エクスプローラーの API を呼び出す際に必要な概要手順について説明します。
- GDF バイナリへの相対パスを含む "RelativePathToGDF" という名前の MSI Property テーブルにプロパティを追加します。
- CostFinalize アクションの次に、GameuxInstallHelper DLL 関数 SetMSIGameExplorerProperties を即時カスタム アクションで呼び出して、その他のカスタム アクションに適切な MSI プロパティを設定します。
- インストール時に、InstallFiles アクションの次に、GameuxInstallHelper DLL 関数 AddToGameExplorerUsingMSI を呼び出す遅延カスタム アクションをトリガーします。インストールがすべてのユーザーに対するインストールである場合は、このカスタム アクションに msidbCustomActionTypeNoImpersonate フラグを設定する必要があります。そうでない場合は、このフラグを設定しないでください。このようにして、次のほぼ同一の 2 つのカスタム アクションを定義します。それらは GameUXAddAsAdmin と GameUXAddAsCurUser です。
- アンインストール時に、RemoveFiles アクションの前に、GameuxInstallHelper DLL 関数 RemoveFromGameExplorerUsingMSI を呼び出す遅延カスタム アクションをトリガーします。インストールがすべてのユーザーに対するものであった場合は、このカスタム アクションに msidbCustomActionTypeNoImpersonate フラグを設定する必要があります。そうでない場合は、このフラグを設定しないでください。このようにして、次のほぼ同一の 2 つのカスタム アクションを定義します。それらは、GameUXRemoveAsAdmin と GameUXRemoveAsCurUser です。
- 前述のカスタム アクションのいずれかが実行された後で、ユーザーがインストールまたはアンインストール プロセスをキャンセルする場合に対処するために、ロールバック カスタム アクションを定義します。これによって、さらに次の 4 つのカスタム アクションを定義します。それらは GameUXRollBackAddAsAdmin、GameUXRollBackAddAsCurUser、GameUXRollBackRemoveAsAdmin、および GameUXRollBackRemoveAsCurUser です。
この操作については、次の手順で詳しく説明します。次の手順は、Platform SDK に含まれる Orca エディターなどの MSI エディターを使用して実行できます。MSI エディターによっては、次の構成手順の一部を簡略化するウィザードが使用できる場合があります。
ゲーム エクスプローラーと統合するように MSI パッケージを構成するには
Orca で MSI パッケージを開きます。
MSI パッケージの Binary テーブルに、次の表に示す行を追加します。
名前 データ GAMEUX DLL へのファイル パス\GameuxInstallHelper.dll 注 このファイルは、MSI パッケージに埋め込まれるため、GameuxInstallHelper.dll を再コンパイルするたびにこの手順を実行する必要があります。
MSI パッケージの CustomAction テーブルに、次の表に示す行を追加します。
アクション タイプ Source ターゲット GameUXSetMSIProperties msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 GAMEUX SetMSIGameExplorerProperties GameUXAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX AddToGameExplorerUsingMSI GameUXAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX AddToGameExplorerUsingMSI MSI パッケージの InstallExecuteSequence テーブルに、次の表に示したアクション、条件、およびシーケンスの値を追加します。
アクション 条件 シーケンス 備考 GameUXSetMSIProperties 1015 このシーケンス番号によって、CostFinalize の直後にこのアクションが配置されます。 GameUXAddAsAdmin NOT Installed AND ALLUSERS 4003 このカスタム アクションは、すべてのユーザーに対する新規インストール時にのみ実行されます。シーケンス番号によって、InstallFiles の後およびロールバックの後にこのアクションが配置されます。 GameUXAddAsCurUser NOT Installed AND NOT ALLUSERS 4004 このカスタム アクションは、現在のユーザーに対する新規インストール時にのみ実行されます。シーケンス番号によって、InstallFiles の後およびロールバックの後にこのアクションが配置されます。 GameUXRollBackAddAsAdmin NOT Installed AND ALLUSERS 4001 このカスタム アクションは、すべてのユーザーに対する新規インストールがキャンセルされたときにのみ実行されます。シーケンス番号によって、InstallFiles の後および Add カスタム アクションの前にこのアクションが配置されます。 GameUXRollBackAddAsCurUser NOT Installed AND NOT ALLUSERS 4002 このカスタム アクションは、現在のユーザーに対する新規インストールがキャンセルされたときにのみ実行されます。シーケンス番号によって、InstallFiles の後および Add カスタム アクションの前にこのアクションが配置されます。 GameUXRemoveAsAdmin REMOVE~="ALL" AND ALLUSERS 3452 このカスタム アクションは、すべてのユーザーに対するアンインストール時にのみ実行されます。シーケンス番号によって、RemoveFiles の直後およびロールバックの後にこのアクションが配置されます。 GameUXRemoveAsCurUser REMOVE~="ALL" AND NOT ALLUSERS 3453 このカスタム アクションは、現在のユーザーに対するアンインストール時にのみ実行されます。シーケンス番号によって、RemoveFiles の直後およびロールバックの後にこのアクションが配置されます。 GameUXRollBackRemoveAsAdmin REMOVE~="ALL" AND ALLUSERS 3450 このカスタム アクションは、すべてのユーザーに対するアンインストールがキャンセルされたときにのみ実行されます。シーケンス番号によって、RemoveFiles の直前および Remove カスタム アクションの後にこのアクションが配置されます。 GameUXRollBackRemoveAsCurUser REMOVE~="ALL" AND NOT ALLUSERS 3451 このカスタム アクションは、現在のユーザーに対するアンインストールがキャンセルされたときにのみ実行されます。シーケンス番号によって、RemoveFiles の直前および Remove カスタム アクションの後にこのアクションが配置されます。 MSI パッケージの Property テーブルに、次の表に示す行を追加します。
プロパティ 値 RelativePathToGDF 相対ファイル パス\GDF が含まれるバイナリ ファイルの名前 注 このパスで指定される場所は、インストール パスによって指定される場所を基準にした相対パスです。たとえば、bin\GDF.dll です。
MSI パッケージを保存します。
MSI パッケージおよび Windows インストーラーの詳細については、「Windows Installer」を参照してください。
デバッグに関するヒント
ゲーム エクスプローラーの API を呼び出す際のデバッグの問題の解決に役立つヒントを次に示します。
サンプル コードを使用してテストします。
GameuxInstallHelper サンプル ソリューションをビルドすることによって、GameUXInstallHelper.dll と GDFInstall.exe が作成されます。GDFInstall.exe は、GameUXInstallHelper.dll を使用するサンプル アプリケーションです。GDFInstall.exe を実行すると、ゲーム エクスプローラーで GDF バイナリをインストールするか、または削除するかを確認するプロンプトが表示されます。GDF バイナリ ファイルを最初のコマンド ライン引数として GDFInstall.exe に渡すことによって、この GDF バイナリ ファイルをテストできます。
GDF バイナリ ファイルがないか、GDF バイナリ ファイルのインストールに失敗した場合は、DirectX SDK のサンプル GDF を使用してみてください。GDFExampleBinary サンプルは、DirectX SDK にあり、GDF ファイルのみを含む DLL です。DirectX SDK には、GDFMaker プロジェクトも含まれています。このプロジェクトをビルドし、GDFInstall.exe を使用してテストできます。このプロジェクトの XML を実際の XML と比較して、問題点を特定することもできます。
ゲームが適切に削除されたことを確認します。
ゲームがゲーム エクスプローラーに既にインストールされている場合、その後の IGameExplorer::AddGame への呼び出しによって E_FAIL が返されるため、テストの前にゲームがインストールされていないことを確認してください。これは、GDF を現在のユーザーに対してのみインストールした後に、GDF をすべてのユーザーに対してインストールしようとした場合にも当てはまります。IGameExplorer::AddGame を正常に実行するには、まず、現在のユーザーからゲームを削除する必要があります。
GDFInstall.exe enum を実行すると、サンプル アプリケーションは別のモードになり、インストールされているすべてのゲーム エクスプローラーのゲームが列挙され、これらのゲームの削除を求めるメッセージが表示されます。HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GameUX でレジストリを参照および検索して、ゲームがシステム上の別のユーザーに対してインストールされていないことを確認することもできます。ただし、これらのレジストリ キーについては、オペレーティング システムの将来のバージョンで互換性が維持されることは保証されていないため、レジストリ キーをその他の目的で変更しないでください。
必ず Authenticode を使用して署名します。
レーティングを指定したが、ゲーム エクスプローラーに表示されない場合、レーティングを含んでいる実行可能ファイルまたは DLL ファイルを Authenticode によって署名しているか確認してください。ゲーム エクスプローラーでは、未署名ファイルのレーティング情報は無視されます。Authenticode の詳細については、「ゲーム開発者のための Authenticode 署名」を参照してください。
保護者による制限が使用可能であることを確認します。
保護者による制限を提供している Windows Vista のエディションでは、保護者による制限をテストしてください。それらのエディションは、Home Basic、Home Premium、および Ultimate です。Windows Vista Business および Windows Vista Enterprise は保護者による制限を提供していませんが、Windows Vista Ultimate でテストする場合にテスト コンピューターがドメインに結合されているときは、保護者による制限が表示されるように、グループ ポリシーの設定を変更する必要があります。これを実行するには、「ゲーム エクスプローラーの基礎知識」を参照してください。
タスクの種類が正しいことを確認します。
サポート タスクを指定したが、ゲーム エクスプローラーに表示されない場合は、それらのサポート タスクがすべて Web リンクであることを確認してください。Web リンク以外のショートカット タスクはすべて、プレイ タスクとして作成する必要があります。タスクについては、このトピックの前半の「ゲーム エクスプローラー タスク」で説明しています。
GDF バイナリのデータを確認します。
GDFTrace.exe は、DirectX SDK に含まれるツールの 1 つです。GDF バイナリで GDFTrace.exe を実行すると、このバイナリに含まれるすべての GDF メタデータがサポートされている言語ごとに出力され、直ちに確認することができます。不足している情報や失効した情報に関する警告も表示されます。
まとめ
Windows Vista のゲーム エクスプローラーは、Windows Vista のユーザーにゲームを提供するための簡単でカスタマイズ可能な手段として利用できます。ただし、インストール プロセスでシステムにゲームを登録する必要があります。この記事で説明しているサンプル コードおよび DLL の GameuxInstallerHelper を使用することによって、この登録プロセスが簡単になります。