Вопрос Интеграция в Game Explorer

ROMKA-1977

Новичок
Как правильно создать два ярлыка в Game Explorer для двух файлов exe?
Имеющиеся файлы:
GameuxInstallHelper.dll,
GDFBinary.dll,
GDFBinary_64.dll
Name.exe
Name_x64.exe

Пример используемого кода для одного ярлыка:
Код:
#define MainExe "{app}\Name.exe"
#define GDFBinary "{app}\GDFBinary.dll"

[Files]
Source: GameuxInstallHelper.dll; DestDir: {app}; Flags: overwritereadonly

[Code]
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, '');
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;
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
ROMKA-1977, а... вопрос конечно супер. для двух никак сделать самому?
Код:
var
GUID1: TGUID;
GUID2: TGUID;
Binary: String;

procedure CurStepChanged(CurStep: TSetupStep);
var
MainExe1,MainExe2: String;
begin
if CurStep = ssInstall then
GenerateGUID(GUID1);
GenerateGUID(GUID2);

if CurStep = ssPostInstall then
begin
Binary:=ExpandConstant('{#GDFBinary}');
MainExe1:=ExpandConstant('{#MainExe1}');
MainExe2:=ExpandConstant('{#MainExe2}');
AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID1);
CreateTask(3, GUID1, PlayTask, 0, 'Play', MainExe1, '');
AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID2);
CreateTask(3, GUID2, PlayTask, 0, 'Play', MainExe2, '');
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usUninstall then
begin
RetrieveGUIDForApplication(Binary, GUID1);
RemoveFromGameExplorer(GUID1);
RemoveTasks(GUID1);
RetrieveGUIDForApplication(Binary, GUID2);
RemoveFromGameExplorer(GUID2);
RemoveTasks(GUID2);
UnloadDll(ExpandConstant('{app}\GameuxInstallHelper.dll'));
end;
end;
 
Сверху