Jump to content
Zone of Games Forum
Sign in to follow this  
Evil Rico

Идентификация игр в Windows Vista

Recommended Posts

Некоторые игр в висте автоматически идентифицируются, виста пишет их рейтинг, качает бокс арт, но при этом большинство игр нераспазнается что очень неприятно. Когда открываеш папку игры становится не по себе когда половина с цивильными бокс артами а вторая половина с мелкими иконками. Немного покопавшись в реестре нашол ветку

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX

в ней содержатся информация о играх, например:

Если в параметре ConfigInstallType стоит 4 значит игра не идентифицированна, если 3 значит идентифицированна, если 2 то на ней ещо и рейтинг производительности стоит.

Но если просто поменять циферку ничего е выйдет

Главное сдесь параметр ApplicationId и WMGameid именно сдесь хранится особенный номер по которому виста определяет что это за игра.

Собственно в честь этого я и создал тему, чтобы узнать что это ваабще за индефикаторы и как заставить узнавать игру

...И вот ещо

Vista Game Explorer Editor

Это сайт одной проги, каторая обманывает Game Explorer прога корявинькая но по крайней мере с помощью неё можно на любую игру поставить цЫвильный значок

Share this post


Link to post

А есть более удобная вещь - Game Explorer Manager. Можно найти через Google.

Share this post


Link to post

Evil Rico

Тоже задавался этим вопросом и вот к чему пришел:

Чтобы добавить игру в Game Explorer нужно чтобы игра содержала информацию о рейтинге ESRB, жанре, сис. требованиях, сайтах издателя/разрботчика и т.д. Обычно эта информация хранится в ехе-шнике игры или в специальных библиотеках. Проверить это можно с помощью вьюверов ресурсов (Restorator, PE Explorer и т.д.). Открыв ехе или dll с помощью такой программы, можно будет увидеть такие ресурсы: __GDF_THUMBNAIL и __GDF_XML. Первый содержит картинку, а второй текстовую информацию об игре. Так вот как раз из __GDF_XML нам понадобится значение "GameDefinition gameID", которое является уникальным для каждой игры. Затем, как ты верно заметил, нужно внести информацию в реестр, а именно в ветке "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{ИГРА}" создать следующие ключи:

ConfigApplicationPath={путь к игре}

Title={название игры}

ConfigInstallType={с этим ты сам разобрался}

AppExePath={имя exe или dll с информацией}

ApplicationId={тот самый GameDefinition gameID}

ConfigGDFBinaryPath={полный путь к exe или dll с информацией}

IsSigned=dword:1

Затем нужно создать ярлыки для запуска. В папке "C:\Users\{имя_пользователя}\AppData\Local\Microsoft\Windows\GameExplorer" нужно создать папку с именем как в реестре ({ИГРА}) в ней папку PlayTasks, в PlayTasks создать папку 0, а в папке 0 содать ярлык "Play" на запуск игры.

После этого игра должна добавиться в Game Explorer.

PS в качестве значения {ИГРА} лучше использовать GameID(не путать с GameDefinition gameID) от установщика игры.

Share this post


Link to post

Я так понял что на старые игры информация содержится в C:\Windows\system32\GameUXLegacyGDFs.dll

А что ещо за ключик такой WMGameId, как раз он стоит в тех играх у которых нет инфы в GameUXLegacyGDFs.dll

З.Ы. Для гам ещо есть описание (Description) чот я его в гейм експлорере не заметил, где оное читается ваабще?

Edited by Evil Rico

Share this post


Link to post

Кароче всё упирается в создание файла с инфой про гаму, есть прога называемая GDF maker'ом http://msdn2.microsoft.com/en-us/library/ms687219.aspx ана входит в состав DirectX SDK и отдельно от него не качается, а мне с моим GPRS 400 мегов не скачать, карочь народ у каво стоит СДК выложите ГДФ Мэйкер плиз

Share this post


Link to post

А еще есть специальная библиотека, для программ-установщиков (Inno, NSIS, InstallShield) чтобы игра добавлялась в Game Explorer еще на стадии установки.

Share this post


Link to post

Unc1e чо за библиотека?

Во составил пошаговую инструкцию как добовлять игры в гейм експлорер на примере биошока:

1. Тупо кидаем ярлык в папку игры

2. Врубаем PE Explorer и открываем им bioshock.exe, переходим в раздел Resource Viewer, открываем папку data, потом открываем _GDF_XML, выбираем там любую цыфорку (там идут 1024, 1031, 1033, 1034, 1036, 1040), видим там строчку <GameDefinition gameID="{626DCEE9-781B-49D7-81C0-C41CCC9386F7}">

копируем {626DCEE9-781B-49D7-81C0-C41CCC9386F7}, со скобками но без ковычек

3 Нажимаем Win+R и в появившемся окошке вводит Regedit, ищем адрес, он должен быть примерно такой HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\S-1-5-21-3292720868-1703521539-3581440055-1000\{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}

4. Вставляем заранее скопированный gameid ({626DCEE9-781B-49D7-81C0-C41CCC9386F7}) в параметр ApplicationId

5. В параметр AppExePath вводим адрес EXE файла биошок например D:\games\Bioshock\Builds\Release\bioshock.exe

6. ConfigApplicationPath - пишем где EXE лежит например D:\games\Bioshock\Builds\Release\

7. ConfigGDFBinaryPath опять пишем адрес EXE файла D:\games\Bioshock\Builds\Release\bioshock.exe

8. ConfigInstallType ставим 2

9. IsSigned(параметр DWORD) ставим 1

Примечание к пункту 7

Это относится больше к новым играм, когда информация содержится в EXE, ана может быть и в DLL валяющихся в папке с игрой, открывайте все подряд и ищите _GDF_XML, У стареньких игр таких как Medal Of Honour Alied Assault инфа лежит в файле C:\Windows\system32\GameUXLegacyGDFs.dll и ConfigInstallType нада ставить 3, А для очень старых например Resident Evil 1, инфы нету нигде в таком случае нада использовать прогу GDF Maker которая создает файлы с инфой... И которую я до сих пор не нашол :bad:

Share this post


Link to post

Библиотека называется GameuxInstallHelper.dll. Она входит в пакет DirectX SDK, скачать можно тут http://forums.winamp.com/attachment.php?postid=2057654 . Чтобы её использовать в любом установщике нужно неплохо знать языки программирования. А именно уметь вызывать функции из этой библиотеки. На сайте Microsoft есть примеры использования этой библиотеки в InstallShield и в MSI Package http://msdn2.microsoft.com/en-us/library/bb206359.aspx . На сайте Winampa (на форуме) есть примеры для NSIS. Я пользуюсь Inno Setup, и вот для него то нигде нет ни одной статейки, как вызывать из этой библиотеки функции. Вот пример который я сделал для того же Bioshock`а в Inno:

[Tasks]

Name: WGE; Description: Создать ярлык в папке «Игры» (только Windows® Vista®); GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[icons]

Name: {reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,Local AppData|{userappdata}}\Microsoft\Windows\GameExplorer\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}\PlayTasks\0\Play; Filename: {app}\Builds\Release\ Bioshock.exe; WorkingDir: {app}\Builds\Release; Tasks: WGE

Name: {reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,Local AppData|{userappdata}}\Microsoft\Windows\GameExplorer\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}\PlayTasks\1\Play - DirectX9; Filename: {app}\Builds\Release\ Bioshock.exe; WorkingDir: {app}\Builds\Release; Parameters: -dx9; Tasks: WGE

[Registry]

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: string; ValueName: ConfigInstallType; ValueData: 2; Flags: uninsdeletekey

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: string; ValueName: ConfigApplicationPath; ValueData: {app}\Builds\Release; Flags: uninsdeletekey

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: string; ValueName: ConfigGDFBinaryPath; ValueData: {app}\Builds\Release\ Bioshock.exe; Flags: uninsdeletekey

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: string; ValueName: ApplicationId; ValueData: {{9BC6CDD8-07EA-404D-A381-99B4E400AFA5}; Flags: uninsdeletekey

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: string; ValueName: Title; ValueData: BioShock; Flags: uninsdeletekey

Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}; ValueType: dword; ValueName: IsSigned; ValueData: $00000001; Flags: uninsdeletekey

Несколько замечаний: В пункте 2 циферки означают язык (лучше брать из 1033 – английский, или 1049 – русский; хотя разницы в GameDefinition gameID нет никакой)

В пункте 3 не нужно писать в S-1-5-21-3292720868-1703521539-3581440055-1000! Это уникальный ключ для каждой системы, поэтому лучше использовать просто \Microsoft\Windows\CurrentVersion\GameUX\Games\{10BAC0BE-3FB5-4B87-844E-561EDE59B95B}

Share this post


Link to post

Кароч вот файлик с GDF он от гарри поттера, легко редактируется, вписываем в него свою гаму ставим картинку и тд затем вписываем файлик в параметр ConfigGDFBinaryPath.

ЗЫ Unc1e за*бешся на каждую гаму такой инсталл ваять

http://msdn2.microsoft.com/en-us/library/bb173445.aspx инфа тут про редактирование

Share this post


Link to post

Unc1e

вызов функций и процедур в инно не сложное мероприятие. В секции

 объявляем

Функция

function <имя функции>(<параметры>):<тип возвращаемого значения>;

external '<имя функции>@GameuxInstallHelper.dll stdcall';

Процедура

function <имя процедуры>(<параметры>);

external '<имя процедуры>@GameuxInstallHelper.dll stdcall';

Что делать дальше - разберешься, пробуй.

Edited by FreoN

Share this post


Link to post

FreoN, это я как раз знаю, а вот что дальше писать - без понятия. Если разбираешься - может попробуешь для какой-нить игры написать скриптик? Буду безгранично благодарен! Вот начало (собственно только вызов функций)


function AddToGameExplorerW(): ;

external 'AddToGameExplorerW@files:GameuxInstallHelper.dll stdcall';

function RemoveFromGameExplorer():

external 'RemoveFromGameExplorer@files:GameuxInstallHelper.dll stdcall';

function RetrieveGUIDForApplicationW(): ;

external 'RetrieveGUIDForApplicationW@files:GameuxInstallHelper.dll stdcall';

function GenerateGUID(): ;

external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall';

function CreateTaskW(): ;

external 'CreateTaskW@files:GameuxInstallHelper.dll stdcall';

function RemoveTasks(): ;

external 'RemoveTasks@files:GameuxInstallHelper.dll stdcall';

function SetupRichSavedGamesW(): ;

external 'SetupRichSavedGamesW@files:GameuxInstallHelper.dll stdcall';

function RemoveRichSavedGamesW(): ;

external 'RemoveRichSavedGamesW@files:GameuxInstallHelper.dll stdcall';

Примеры для InstallShield см. ссылки выше. Можно по анологии сделать. Я в этом полный ноль!

Edited by Unc1e

Share this post


Link to post

Посмотрю сегодня-завтра... А ты не пират случаем?=))) зачем тебе инсталлы игр переделывать?=)))

Share this post


Link to post

FreoN

Устный пред за оверквотинг.

А ты, вероятно, ТОЛЬКО лицензию юзаешь?

Share this post


Link to post
FreoN

Устный пред за оверквотинг.

А ты, вероятно, ТОЛЬКО лицензию юзаешь?

Сори.

Раз уж ты спросил, нет конечно. Я честно говоря перепаковкой игр тоже занимаюсь, думал один такой, вот и спросил.

Share this post


Link to post

 

FreoN, Я - не пират. Поверь мне, таких любителей перепаковать игры огромное количество. Я как и все покупаю пираЦкую версию игры, если надо качаю no cd, с ZoG`а или таверны качаю русификатор. Теперь этот комплект нужно поместить в красивую обертку. Для этого в инстал добавляю фон, слайд-шоу, сплэш-заставку, фоновую музыку и т.д. и т.п. Получается хорошая версия игры, которую не грех и на болванку записать, и на полку, в архивчик. Пираты потом это продают и получают деньги, я же все делаю ИСКЛЮЧИТЕЛЬНО для себя!

 

Share this post


Link to post
Sign in to follow this  



Zone of Games © 2003–2019 | Реклама на сайте.

Система Orphus

×