Добавление игры в Обозреватель игр - PullRequest
0 голосов
/ 03 февраля 2011

Я пытаюсь заставить игру интегрироваться с Windows Games Explorer.До сих пор я встраивал XML-файл формата определения игры в качестве ресурса в мой двоичный файл, и мой настоящий скрипт Inno Setup для интеграции библиотеки DLL с установщиком выглядит так:

Это то, что мне удалось сделатьна данный момент:

[Files]
Source: GameuxInstallHelper.dll;               DestDir: "{tmp}"; Flags: dontcopy
[Code]
const
 GIS_NOT_INSTALLED = 1;
  GIS_CURRENT_USER = 2;
 GIS_ALL_USERS = 3;
// Given a game instance GUID and path to GDF binary, registers game with Game Explorer 
procedure AddToGameExplorer( GDFBinPath: PChar; GameInstallPath: PChar; InstallScope : integer; GameGUID : GUID );
external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall';
// Given a game instance GUID, unregisters a game from Game Explorer
function RemoveFromGameExplorer( GameGUID : GUID ) : boolean;
external 'RemoveFromGameExplorer@files:GameuxInstallHelper.dll stdcall';
// Given a path to a GDF binary that has already been registered, returns a game instance GUID 
function RetrieveGUIDForApplication( GDFBinPath: PChar; var GameGUID : GUID ) : boolean; 
external 'RetrieveGUIDForApplicationA@files:GameuxInstallHelper.dll stdcall';
// Creates a unique game instance GUID
function GenerateGUID( var GameGUID : GUID ) : boolean;
external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall';
// Register with Media Center using the data from a GDF binary
procedure RegisterWithMediaCenter( GDFBinPath : PChar; GameInstallPath : PChar; InstallScope : integer; ExePath : PChar; CommandLineArgs : PChar; UseRegisterMCEApp : boolean );
external 'RegisterWithMediaCenterA@files:GameuxInstallHelper.dll stdcall';
// Unregister with Media Center
procedure UnRegisterWithMediaCenter( GameInstallPath : PChar; InstallScope : integer; strExePath : PChar; UseRegisterMCEApp : boolean );
external 'UnRegisterWithMediaCenterA@files:GameuxInstallHelper.dll stdcall';
// Given a a game instance GUID, creates a task shortcut in the proper location 
procedure CreateTask( InstallScope : integer; GameInstanceGUID : GUID; SupportTask : boolean; TaskID : integer; TaskName :PChar; LaunchPath : PChar; CommandLineArgs : PChar );
external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall';
// This removes all the tasks associated with a game instance GUID
// Pass in a valid GameInstance GUID that was passed to AddGame()
procedure RemoveTasks( GameInstanceGUID : GUID );
external 'RemoveTasks@files:GameuxInstallHelper.dll stdcall';
// Creates the registry keys to enable rich saved games. The game still needs to use 
// the rich saved game header as defined in the documentation and support loading a
// saved game from the command line.
procedure SetupRichSavedGames( SavedGameExtension : PChar; LaunchPath : PChar; CommandLineToLaunchSavedGame : PChar);
external 'SetupRichSavedGamesA@files:GameuxInstallHelper.dll stdcall';
// Removes the registry keys to enable rich saved games.
procedure RemoveRichSavedGames( SavedGameExtension : PChar);
external 'RemoveRichSavedGamesA@files:GameuxInstallHelper.dll stdcall';

Однако у меня есть две ошибки, и я не могу их преодолеть:

Unknown type 'GUID'

и

Cannot import dll:C:\Users\my user\AppData\Local\Temp\a random name folder\GameuxInstallHelper.dll

Есть идеи, какустранить ошибки или изменить код?

1 Ответ

0 голосов
/ 14 февраля 2011

Что касается проблемы с импортом DLL в папку User - вы проверяете административные привилегии?

Раздел: PrivilegesRequired

...