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


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

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

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

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

Примечание.

Игра Обозреватель недоступна в Windows 10 версии 1803 и более поздних версиях.

Содержимое.

Необходимые компоненты

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

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

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

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

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

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

Игра Обозреватель InstallW

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

Игра Обозреватель InstallA

Регистрирует игру с Обозреватель игр; Версия ANSI Game Обозреватель InstallW.

Игра Обозреватель UninstallW

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

Игра Обозреватель UninstallA

Удаляет игру из регистрации с помощью игр Обозреватель; Версия ANSI Game Обозреватель UninstallW.

Игра Обозреватель SetMSIProperties

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

Игра Обозреватель InstallUsingMSI

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

Игра Обозреватель UninstallUsingMSI

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

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

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

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

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

Игры Обозреватель задачи

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

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

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

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

Вызов игр Обозреватель API из InstallShield в InstallShield упрощается с помощью примера GameUXInstallHelper. Действия, необходимые для интеграции с 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 SetMSIGame Обозреватель Properties в немедленном настраиваемом действии, чтобы задать соответствующие свойства MSI для других пользовательских действий.
  3. После установки активируйте отложенное настраиваемое действие после действия InstallFiles, которое вызывает функцию DLL GameUXInstallHelper AddToGame Обозреватель UsingMSI. Если установка для всех пользователей, то настраиваемое действие должно задать флаг msidbCustomActionTypeNoImpersonate; в противном случае он не должен задавать этот флаг. Поэтому определены два практически идентичных пользовательских действия: GameUXAddAs Администратор и GameUXAddAsCurUser.
  4. После удаления установки активируйте отложенное настраиваемое действие перед действием RemoveFiles, которое вызывает функцию DLL GameUXInstallHelper RemoveFromGame Обозреватель UsingMSI. Если установка была для всех пользователей, настраиваемое действие должно задать флаг msidbCustomActionTypeNoImpersonate; в противном случае он не должен задавать этот флаг. Поэтому определены два практически идентичных пользовательских действия: GameUXRemoveAs Администратор и GameUXRemoveAsCurUser.
  5. Определите настраиваемые действия отката для обработки ситуации, когда пользователь отменяет установку или удаление после того, как одно из этих пользовательских действий уже произошло. Это приводит к дополнительным 4 пользовательским действиям: GameUXRollBackAddAs Администратор, GameUXRollBackAddAsCurUser, GameUXRollBackRemoveAs Администратор и GameUXRollBackRemoveAsCurUser.

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

Настройка пакета MSI для интеграции с Играми Обозреватель

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

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

    Имя. Data
    GAMEUX путь к DLL\GameUXInstallHelper.dll

     

    Примечание.

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

     

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

    Действие Тип Оригинал Target
    GameUXSetMSIProperties msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 GAMEUX SetMSIGame Обозреватель Properties
    GameUXAddAs Администратор msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3137 GAMEUX AddToGame Обозреватель UsingMSI
    GameUXAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX AddToGame Обозреватель UsingMSI
    GameUXRollBackAddAs Администратор msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3393 GAMEUX RemoveFromGame Обозреватель UsingMSI
    GameUXRollBackAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionActionTypeInScript = 1345 GAMEUX RemoveFromGame Обозреватель UsingMSI
    GameUXRemoveAs Администратор msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3137 GAMEUX RemoveFromGame Обозреватель UsingMSI
    GameUXRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX RemoveFromGame Обозреватель UsingMSI
    GameUXRollBackRemoveAs Администратор msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionActionTypeNoImpersonate = 3393 GAMEUX AddToGame Обозреватель UsingMSI
    GameUXRollBackRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionActionTypeInScript = 1345 GAMEUX AddToGame Обозреватель UsingMSI

     

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

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

     

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

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

     

    Примечание.

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

     

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

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

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

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

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

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

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

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

Если игра уже установлена в играх Обозреватель, последующие вызовы iGame Обозреватель::AddGame вернет E_FAIL, чтобы убедиться, что ваша игра не установлена перед тестированием. Это также применяется, если установить GDF только для текущего пользователя, а затем попытаться установить GDF для всех пользователей. Прежде чем IGame Обозреватель::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, а тестовый компьютер присоединен к домену, необходимо изменить параметр групповой политики, чтобы сделать родительские элементы управления видимыми. Для этого см. статью "Начало работы с играми" Обозреватель.

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

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

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

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

Итоги

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