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

Может кто объяснит мне, почему напр. биошок не добовляется в WGE (там же инфа вшита?!), а Фабле берет данные из GameUXLegacyGDFs.dll нормально? Также эскизы не качатся.

ЗЫ. Есть апрельский directx sdk 2007,пишите кому надо.

Edited by matrixbbs

Share this post


Link to post

matrixbbs

Потому, что пиратка.

Edited by FreoN

Share this post


Link to post

FreoN

Пиратка? ОС или игры? Почему тогда после переустановки висты все снова работает?

Нашел решение проблемы загрузки эскизов к играм.

1. В IE7 вставить этот линк:

https://games.metaservices.microsoft.com/ga...WebService.asmx

2. После загрузки страницы с ошибкой, надо установить новый сертификат. Он находится в конце строки адреса в виде замка.

3. Щелкаем на замок устанавлием сертификат и все.

4. (возможно) Если у вас прокси в IE7, то надо будет установить общий ip с портом для всех протоколов.

PS. Работает для игр которые при запуске попадают автоматом в GameExplorer, без эскизов (как уменя).

Edited by matrixbbs

Share this post


Link to post

Вот кусок скрипта правильной интеграции игры в WGE (все как Microsoft рекомендует)для Inno (на примере Mass Effect)

Spoiler

#define MainExe "{app}\MassEffectLauncher.exe"

#define GDFBinary "{app}\Binaries\MassEffectGDF.dll"

[Files]

Source: "GameuxInstallHelper.dll"; DestDir: "{app}"; Flags: overwritereadonly


type

TGUID = record

Data1: Cardinal;

Data2,

Data3: Word;

Data4: array [0..8] of char;

end;

function GenerateGUID(var GUID: TGUID): Cardinal;

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

function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal;

external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall setuponly';

function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal;

external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly';

function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal;

external 'RetrieveGUIDForApplicationA@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

function RemoveFromGameExplorer(var GUID: TGUID): Cardinal;

external 'RemoveFromGameExplorer@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

function RemoveTasks(var GUID: TGUID): Cardinal;

external 'RemoveTasks@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

const

PlayTask = 0;

SupportTask = 1;

var

GUID: TGUID;

procedure CurStepChanged(CurStep: TSetupStep);

var

Binary, MainExe: String;

begin

if CurStep = ssInstall then

GenerateGUID(GUID);

if CurStep = ssPostInstall then

begin

Binary:=ExpandConstant('{#GDFBinary}');

MainExe:=ExpandConstant('{#MainExe}');

AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID);

CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, '');

CreateTask(3, GUID, SupportTask, 0, 'BioWare Website', 'http://www.bioware.com/', '');

CreateTask(3, GUID, SupportTask, 1, 'Support WebSite', 'http://masseffect.bioware.com/route/me/pc/vt/cs/en/', '');

end;

end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

var

Binary: String;

GUID: TGUID;

begin

if CurUninstallStep=usUninstall then

begin

Binary:=ExpandConstant('{#GDFBinary}');

RetrieveGUIDForApplication(Binary, GUID);

RemoveFromGameExplorer(GUID);

RemoveTasks(GUID);

UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));

end;

end;

Share this post


Link to post

Скрипт конешно класс, но он как то не на все гамы подходит, на какие то добавляется и все окей, а какие то добавляются и пишет Оценки отсутствуют (IsSigned=0), изза чего это вообще? Можно какнибудь параметр Guid перевести в String? тогда б можно самому былоб заставить IsSigned в 1 переключать.

Share this post


Link to post

Evil Rico, скорее всего в GDFBinary нет инфы об оценке. А IsSigned это кажется немного другое (подписана игра или нет).

 

Spoiler

#define MainExe "{app}\MassEffectLauncher.exe"

#define GDFBinary "{app}\Binaries\MassEffectGDF.dll"

[setup]

AppName=My Program

AppVerName=My Program version

DefaultDirName={pf}\My Program

OutputDir=.

[Files]

Source: "GameuxInstallHelper.dll"; DestDir: "{app}"; Flags: overwritereadonly

Source: "MassEffectLauncher.exe"; DestDir: "{app}"; Flags: overwritereadonly

Source: "Binaries\MassEffectGDF.dll"; DestDir: "{app}\Binaries\"; Flags: overwritereadonly

[Registry]

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{code:GetGUID}"; ValueType: DWord; ValueName: "IsSigned"; ValueData: "0"


type

TGUID = record

Data1: Cardinal;

Data2,

Data3: Word;

Data4: array [0..7] of char;

end;

function GenerateGUID(var GUID: TGUID): Cardinal;

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

function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal;

external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall setuponly';

function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal;

external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly';

function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal;

external 'RetrieveGUIDForApplicationA@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

function RemoveFromGameExplorer(var GUID: TGUID): Cardinal;

external 'RemoveFromGameExplorer@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

function RemoveTasks(var GUID: TGUID): Cardinal;

external 'RemoveTasks@{app}\GameuxInstallHelper.dll stdcall uninstallonly';

function IntToHex(Int: Cardinal; Digits: Integer): String;

var

i, Digit: Integer;

ch: Byte;

begin

result:='';

for i:=0 to Digits-1 do

begin

digit:=Int mod 16;

Int:=Int div 16;

if digit<0 then

digit:=digit+16;

ch:=Ord('0')+digit;

if digit>9 then

ch:=ch+7;

result:=chr(ch)+result;

end;

end;

const

PlayTask = 0;

SupportTask = 1;

var

GUID: TGUID;

function GetGUID(S: String): String;

var

i: integer;

begin

result:='{'+IntToHex(GUID.Data1, 8)+'-'+IntToHex(GUID.Data2, 4)+'-'+IntToHex(GUID.Data3, 4)+'-'+IntToHex(Ord(GUID.Data4[0]), 2)+IntToHex(Ord(GUID.Data4[1]), 2)+'-';

for i:=2 to 7 do

result:=result+IntToHex(Ord(GUID.Data4), 2);

result:=result+'}';

end;

procedure CurStepChanged(CurStep: TSetupStep);

var

Binary, MainExe: String;

begin

if CurStep = ssInstall then

GenerateGUID(GUID);

if CurStep = ssPostInstall then

begin

Binary:=ExpandConstant('{#GDFBinary}');

MainExe:=ExpandConstant('{#MainExe}');

AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID);

CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, '');

CreateTask(3, GUID, SupportTask, 0, 'BioWare Website', 'http://www.bioware.com/', '');

CreateTask(3, GUID, SupportTask, 1, 'Support WebSite', 'http://masseffect.bioware.com/route/me/pc/vt/cs/en/', '');

end;

end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

var

Binary: String;

GUID: TGUID;

begin

if CurUninstallStep=usUninstall then

begin

Binary:=ExpandConstant('{#GDFBinary}');

RetrieveGUIDForApplication(Binary, GUID);

RemoveFromGameExplorer(GUID);

RemoveTasks(GUID);

UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));

end;

end;

Share this post


Link to post

Спасибо большое, даже огромное спасибо, именно это меня и интересовало. У меня вот в самодельном GDFе для ре4 выставляется IsSigned=0 терь нормально сделаю

7b12d9158eaa.jpg

Вообще очень печально наблюдать как наши локализаторы паганят установку, Mass Effect, Unreal Tournament 3 - инфа не добавляется, приходится самому все делать.

Share this post


Link to post

не прочитай я об этой программе ещё на thevista.ru, то не догадался бы, что реклама :)

Share this post


Link to post
не прочитай я об этой программе ещё на thevista.ru, то не догадался бы, что реклама :)

Просто сделал страницу с кратким описанием и ссылкой на скачивание, а то ее стали выкладывать на рапиду и депозит, как варез какой-то. А прога-то бесплатная.

Share this post


Link to post
Sign in to follow this  



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

Система Orphus

×