Поделиться через


Обозреватель игр Windows для разработчиков игр

Windows Vista улучшает взаимодействие пользователей с играми в Windows, включая Обозреватель игр. Обозреватель игр предоставляется в меню "Пуск" Windows Vista в качестве папки "Игры" и предоставляет центральное расположение для доступа к играм.

Начиная с выпуска пакета SDK DirectX за март 2009 г., для поддержки функций в Windows 7, поставщика игр и RSS-канала и IGameExplorer2 используется новая схема определения игры . IGameExplorer2 — это новый интерфейс в Windows 7, упрощающий интеграцию игры с Game Explorer.

В этой статье описывается процесс регистрации игры в Обозревателе игр и родительских элементов управления в Windows Vista и Windows 7 с помощью новой схемы GDF.

Заметка

Game Explorer недоступна в Windows 10 версии 1803 и более поздних версиях.

Содержание:

Необходимые условия

Прежде чем интегрировать игру в Game Explorer, необходимо создать файл определения игры (GDF). GDF — это XML-файл, содержащий метаданные, описывающие игру. В выпуске пакета SDK DirectX за март 2009 г. в схему GDF добавлен раздел поставщика игр, RSS-канала и игровой задачи. Чтобы использовать инструкции в этой статье, необходимо использовать этот новый формат GDF для создания GDF-файла.

Корпорация Майкрософт предоставляет средство разработки GDF в пакете SDK DirectX, редакторе файла определения игры, чтобы упростить процесс создания. Это средство также помогает создавать локализованные версии GDF.

После создания и локализации GDF его необходимо инкапсулировать в разделе ресурса двоичного файла (исполняемого файла или библиотеки DLL), а также эскиз и значок игры. GDF содержит все метаданные, связанные с игрой, включая рейтинг игры. Родительские элементы управления Windows используют рейтинг игры, чтобы позволить родителям контролировать доступ к игре. Двоичный файл, содержащий GDF, должен иметь цифровую подпись с допустимым сертификатом Authenticode; в противном случае Обозреватель игр и система родительского контроля игнорирует рейтинг игры, так как сведения о рейтинге не могут быть доверенными без сертификации. Дополнительные сведения о подписи кода с помощью Authenticode см. в подписывание Authenticode для разработчиков игр.

Интеграция с установщиком

Чтобы упростить интеграцию Games Explorer, пример GameUXInstallHelper предоставляет общий API, который можно вызывать в Windows XP, Windows Vista и Windows 7. Он предназначен для работы со скриптами для системы установки InstallShield и Wise Install System, а также пользовательских действий MSI и пользовательских средств установки. Обнаружение операционной системы обрабатывается в этом примере библиотеки DLL, поэтому вызывающий объект не должен беспокоиться о том, работает ли клиент под управлением Windows XP, Windows Vista или Windows 7.

Функции, экспортированные этой библиотекой DLL, приведены ниже.

GameExplorerInstallW

Регистрирует игру в Обозревателе игр, указав путь к двоичному файлу GDF, полный путь к папке, в которой установлена игра, и области установки.

GameExplorerInstallA

Регистрирует игру с помощью Обозревателя игр; Версия ANSI GameExplorerInstallW.

GameExplorerUninstallW

Удаляет игру из регистрации в Game Explorer, указав путь к двоичному файлу GDF.

GameExplorerUninstallA

Удаляет игру из регистрации в Game Explorer; Версия ANSI GameExplorerUninstallW.

GameExplorerSetMSIProperties

Настраивает свойства CustomActionData для действий отложенной пользовательской установки MSI. Использование этой функции подробно описано далее в этой статье.

GameExplorerInstallUsingMSI

Добавляет игру в Обозреватель игр; для использования во время установки пользовательского действия MSI.

GameExplorerUninstallUsingMSI

Удаление игры из Обозревателя игр; для использования во время установки пользовательского действия MSI.

Эти функции более подробно описаны в заголовке GameUXInstallHelper.h.

Процесс интеграции

После добавления GDF и связанных файлов в двоичный ресурс можно интегрировать игру с Game Explorer. Использование GameUXInstallHelper упрощает процесс интеграции. Чтобы зарегистрировать игру в Game Explorer, вызовите GameExplorerInstall с путем к двоичному файлу GDF, полный путь к папке, в которой установлена игра, и области установки. Чтобы удалить регистрацию игры, вызовите GameExplorerUninstall с путем к двоичному файлу GDF.

Обратите внимание, что процесс удаления удаляет только одну уникальную установку. Если игра была установлена несколько раз, этот процесс должен повторяться для каждой уникальной установки.

Задачи обозревателя игр

Задачи Обозревателя игр будут отображаться в контекстном меню элемента в Обозревателе игр. Задачи делятся на задачи воспроизведения и задачи поддержки. Воспроизведение задач запускает игру в определенном режиме, а задачи поддержки служат любой другой цели, включая связывание с веб-сайтами.

В Windows Vista задачи — это просто ярлыки, расположенные в определенных папках. Задачи воспроизведения и задачи поддержки хранятся в папках с соответствующими именами PlayTasks и SupportTasks. GameUXInstallHelper может считывать сведения о задаче игры из двоичного файла GDF и автоматически создавать все сочетания клавиш.

В Windows 7 сочетания клавиш для задач не требуются, так как обозреватель игр получает все сведения о задаче непосредственно из двоичного файла GDF.

Интеграция с InstallScript

Использование примера GameUXInstallHelper с помощью API-интерфейсов Обозревателя игр из InstallShield. Действия, необходимые для интеграции с InstallShield, приведены ниже.

  1. Откройте проект InstallScript в редакторе InstallShield.

  2. Добавьте GameUXInstallHelper.dll в проект, который будет установлен в целевой каталог.

    Добавление GameUXInstallHelper.dll в проект InstallScript:

    1. На вкладке конструктора установки щелкните данных приложения в области навигации слева.

    2. Щелкните файлы и папки и перейдите в папки исходного компьютера, чтобы найти GameUXInstallerHelper.dll в файлах исходного компьютера.

      Расположение по умолчанию для GameUXInstallerHelper.dll — корневой каталог SDK DirectX\Samples\C++\Misc\Bin\x86.

    3. В разделе папок конечного компьютеращелкните целевую папку приложения.

    4. Перетащите GameUXInstallerHelper.dll из файлов исходного компьютера в файлы конечного компьютера .

  3. В обозревателе InstallScript щелкните файл InstallScript (обычно setup.rul), который вызывает функцию DLL.

  4. Вставьте следующий installScript в файл:

    typedef GUID
    begin
    LONG  Data1;
    SHORT Data2;
    SHORT Data3;
    CHAR  Data4(8);
    end;
    
    prototype LONG GameUXInstallHelper.GameExplorerInstallW(WSTRING, WSTRING, NUMBER);
    prototype LONG GameUXInstallHelper.GameExplorerUninstallW(WSTRING);
    
    function OnMoved()
    
    WSTRING gdfbin[256];
    WSTRING path[256];
    NUMBER scope;
    
    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
    
    if ALLUSERS == 1 then
    scope = 3;
    else
    scope = 2;
    endif;
    
    GameUXInstallHelper.GameExplorerInstallW( gdfbin, path, scope);
    
    UnUseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" );
    UnUseDLL( WINSYSDIR ^ "OLE32.dll" );
    
    endif;
    
    end;
    
    function OnMoving()
    
    WSTRING gdfbin[256];
    
    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
    
    GameUXInstallHelper.GameExplorerUninstallW(gdfbin);
    UnUseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" );
    UnUseDLL( WINSYSDIR ^ "OLE32.dll" );
    
    endif;
    
    end;
    

Интеграция с пакетом MSI

Ниже приведено высокоуровневое описание шагов, необходимых для вызова API Обозревателя игр с помощью пользовательских действий MSI:

  1. Добавьте свойство в таблицу свойств MSI с именем "RelativePathToGDF", содержащую относительный путь к двоичному файлу GDF.
  2. После действия CostFinalize вызовите функцию DLL GameUXInstallHelper SetMSIGameExplorerProperties в немедленном настраиваемом действии, чтобы задать соответствующие свойства MSI для других пользовательских действий.
  3. После установки активируйте отложенное настраиваемое действие после действия InstallFiles, которое вызывает функцию DLL GameUXInstallHelper AddToGameExplorerUsingMSI. Если установка для всех пользователей, то настраиваемое действие должно задать флаг msidbCustomActionTypeNoImpersonate; в противном случае он не должен задавать этот флаг. Поэтому определены два практически идентичных пользовательских действия: GameUXAddAsAdmin и GameUXAddAsCurUser.
  4. После удаления установки активируйте отложенное настраиваемое действие перед действием RemoveFiles, которое вызывает функцию DLL GameUXInstallHelper RemoveFromGameExplorerUsingMSI. Если установка была для всех пользователей, настраиваемое действие должно задать флаг msidbCustomActionTypeNoImpersonate; в противном случае он не должен задавать этот флаг. Поэтому определены два практически идентичных пользовательских действия: GameUXRemoveAsAdmin и GameUXRemoveAsCurUser.
  5. Определите настраиваемые действия отката для обработки ситуации, когда пользователь отменяет установку или удаление после того, как одно из этих пользовательских действий уже произошло. Это приводит к дополнительным 4 пользовательским действиям: GameUXRollBackAddAsAdmin, GameUXRollBackAddAsCurUser, GameUXRollBackRemoveAsAdmin и GameUXRollBackRemoveAsCurUser.

Эта процедура подробно описана в следующих инструкциях, описывающих процесс, который можно выполнить с помощью редактора MSI, например редактор Orca, найденный в пакете SDK для платформы. В некоторых редакторах MSI есть мастеры, которые упрощают некоторые из этих шагов настройки.

Настройка пакета MSI для интеграции с Games Explorer

  1. Откройте пакет MSI в Orca.

  2. Добавьте строку, показанную в следующей таблице, в таблицу binary в пакете MSI.

    Имя Данные
    GAMEUX Путь к библиотеке DLL\GameUXInstallHelper.dll

     

    Заметка

    Этот файл будет внедрен в пакет MSI, поэтому этот шаг необходимо выполнить каждый раз при повторной компиляции GameUXInstallHelper.dll.

     

  3. Добавьте строки, показанные в следующей таблице, в таблицу CustomAction в пакете MSI.

    Действие Тип Источник Цель
    GameUXSetMSIProperties msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 GAMEUX SetMSIGameExplorerProperties
    GameUXAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3137 GAMEUX AddToGameExplorerUsingMSI
    GameUXAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX AddToGameExplorerUsingMSI
    GameUXRollBackAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3393 GAMEUX RemoveFromGameExplorerUsingMSI
    GameUXRollBackAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionActionTypeInScript = 1345 GAMEUX RemoveFromGameExplorerUsingMSI
    GameUXRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3137 GAMEUX RemoveFromGameExplorerUsingMSI
    GameUXRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX RemoveFromGameExplorerUsingMSI
    GameUXRollBackRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3393 GAMEUX AddToGameExplorerUsingMSI
    GameUXRollBackRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionActionTypeInScript = 1345 GAMEUX AddToGameExplorerUsingMSI

     

  4. Добавьте значения, отображаемые для действия, условия и последовательности в следующей таблице в таблицу InstallExecuteSequence в пакете MSI.

    Действие Состояние Последовательность Примечания
    GameUXSetMSIProperties 1015 Порядковый номер помещает действие вскоре после CostFinalize.
    GameUXAddAsAdmin NOT Installed AND ALLUSERS 4003 Это настраиваемое действие будет выполняться только во время новой установки для всех пользователей. Порядковый номер помещает действие после установкиFiles и после отката.
    GameUXAddAsCurUser НЕ установлен И НЕ ВСЕUSERS 4004 Это настраиваемое действие будет выполняться только во время новой установки только для текущего пользователя. Порядковый номер помещает действие после установкиFiles и после отката.
    GameUXRollBackAddAsAdmin NOT Installed AND ALLUSERS 4001 Это настраиваемое действие произойдет только при отмене новой установки для всех пользователей. Порядковый номер помещает действие после installFiles и перед добавлением настраиваемого действия.
    GameUXRollBackAddAsCurUser НЕ установлен И НЕ ВСЕUSERS 4002 Это настраиваемое действие произойдет только при отмене новой установки для текущего пользователя. Порядковый номер помещает действие после installFiles и перед добавлением настраиваемого действия.
    GameUXRemoveAsAdmin REMOVE~="ALL" И ALLUSERS 3452 Это настраиваемое действие будет выполняться только во время удаления для всех пользователей. Порядковый номер помещает действие непосредственно перед RemoveFiles и после отката.
    GameUXRemoveAsCurUser REMOVE~="ALL" И НЕ ALLUSERS 3453 Это настраиваемое действие будет выполняться только во время удаления текущего пользователя. Порядковый номер помещает действие непосредственно перед RemoveFiles и после отката.
    GameUXRollBackRemoveAsAdmin REMOVE~="ALL" И ALLUSERS 3450 Это настраиваемое действие произойдет только при отмене удаления для всех пользователей. Номер последовательности помещает действие непосредственно перед RemoveFiles и перед пользовательским действием Remove.
    GameUXRollBackRemoveAsCurUser REMOVE~="ALL" И НЕ ALLUSERS 3451 Это настраиваемое действие произойдет только при отмене удаления текущего пользователя. Номер последовательности помещает действие непосредственно перед RemoveFiles и перед пользовательским действием Remove.

     

  5. Добавьте строку, показанную в следующей таблице, в таблицу свойств в пакете MSI.

    Свойство Ценность
    RelativePathToGDF относительный путь к файлу\name двоичного файла, содержащего GDF

     

    Заметка

    Расположение, указанное путем, относительно расположения, указанного путем установки. Например, bin\GDF.dll.

     

  6. Сохраните пакет MSI.

Дополнительные сведения о пакетах MSI и установщике Windows см. в установщике Windows.

Советы по отладке

Ниже приведены некоторые советы по отладке проблем при вызове API Обозревателя игр:

Тестирование с помощью примера кода

Создание примера решения GameUXInstallHelper создаст GameUXInstallHelper.dll и GDFInstall.exe. GDFInstall.exe — это пример приложения, использующего GameUXInstallHelper.dll. При запуске GDFInstall.exe появится запрос на установку или удаление двоичного файла GDF из обозревателя игр. Вы можете протестировать двоичный файл GDF, передав его в качестве первой строки командной строки в GDFInstall.exe.

Если у вас нет двоичного файла GDF или не удается установить, попробуйте использовать пример GDF в пакете SDK DirectX. Пример GDFExampleBinary найден в пакете SDK DirectX и представляет собой библиотеку DLL, содержащую только GDF-файл. Кроме того, в источник входит его проект GDFMaker. Его можно создать и протестировать с помощью GDFInstall.exe. Вы также можете сравнить xml-код с вашими данными, чтобы точно определить, где возникла проблема.

Убедитесь, что ваша игра была удалена правильно

Если игра уже установлена в Обозревателе игр, последующие вызовы IGameExplorer::AddGame возвращают E_FAIL, чтобы убедиться, что ваша игра не установлена перед тестированием. Это также применяется, если установить GDF только для текущего пользователя, а затем попытаться установить GDF для всех пользователей. Прежде чем IGameExplorer::AddGame, необходимо сначала удалить игру из текущих пользователей.

Если вы запускаете GDFInstall.exe перечисления, пример приложения введет другой режим, который перечислит все установленные игры Обозревателя игр и предложит удалить их. Вы также можете просматривать и искать реестр в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GameUX, чтобы убедиться, что ваша игра не установлена для другого пользователя в системе. Однако не изменяйте эти параметры реестра для любой другой цели, так как они не гарантируют совместимость в будущих версиях операционной системы.

Обязательно подписывать с помощью Authenticode

Если вы предоставили рейтинг, но не видите его в Обозревателе игр, убедитесь, что вы использовали Authenticode для подписи исполняемого файла или DLL-файла, содержащего рейтинг. Обозреватель игр игнорирует сведения о оценках в неподписанных файлах. Дополнительные сведения об Authenticode см. в подписывание Authenticode для разработчиков игр.

Убедитесь, что родительский контроль доступен

Убедитесь, что вы тестируете родительский контроль на выпуске Windows Vista, который предоставляет родительский контроль: Home Basic, Home Premium или Ultimate. Windows Vista Business и Windows Vista Enterprise не предоставляют родительские средства контроля, однако если вы тестируете в Windows Vista Ultimate, а тестовый компьютер присоединен к домену, необходимо изменить параметр групповой политики, чтобы сделать родительские элементы управления видимыми. Для этого см. начало работы сGames Explorer.

Убедитесь, что задачи имеют правильный тип

Если вы указали задачи поддержки, которые не отображаются в Обозревателе игр, убедитесь, что они являются веб-ссылками. Все другие сочетания клавиш должны быть созданы в качестве задач воспроизведения. Задачи, описанные ранее в этой статье, описаны в статье Задачи обозревателя игр.

Проверка данных в двоичном файле GDF

GDFTrace.exe — это средство, найденное в пакете SDK DirectX. Вы можете запустить GDFTrace.exe в двоичном файле GDF и вывести все метаданные GDF, содержащиеся в двоичном файле для каждого поддерживаемого языка для быстрой проверки. В нем также отображаются предупреждения о отсутствующих или устаревших сведениях.

Сводка

Обозреватель игр в Windows Vista предоставляет простой, настраиваемый способ представления игры пользователям Windows Vista, но также требует регистрации игры в системе во время установки. Пример GameUXInstallHelper значительно упрощает этот процесс для разработчиков.