1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем ROMKA-1977, 3 июн 2014.

  1. Старожил

    Регистрация:
    17 апр 2013
    Сообщения:
    22
    Симпатии:
    2
    Как правильно создать два ярлыка в Game Explorer для двух файлов exe?
    Имеющиеся файлы:
    GameuxInstallHelper.dll,
    GDFBinary.dll,
    GDFBinary_64.dll
    Name.exe
    Name_x64.exe

    Пример используемого кода для одного ярлыка:
    Код (Text):
    #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;
     
    Последнее редактирование: 3 июн 2014
  2. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    613
    ROMKA-1977, а... вопрос конечно супер. для двух никак сделать самому?
    Код (Text):

    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;
     
    ROMKA-1977 нравится это.
  3. Старожил

    Регистрация:
    17 апр 2013
    Сообщения:
    22
    Симпатии:
    2
    sergey3695, всё OK!:yahoo:
     

Поделиться этой страницей