Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
System Windows Vista ulepsza środowisko użytkownika gier w systemie Windows, włączając Eksploratora gier. Eksplorator gier jest udostępniany w menu Start systemu Windows Vista jako folder Gry i zapewnia centralną lokalizację dostępu do gier.
Począwszy od wersji zestawu SDK DirectX z marca 2009 r., nowy schemat pliku definicji gry (GDF) jest używany do obsługi funkcji w systemie Windows 7, dostawca gier i kanał informacyjny RSS oraz IGameExplorer2. IGameExplorer2 to nowy interfejs w systemie Windows 7, który upraszcza proces integrowania gry z Eksploratorem gier.
W tym artykule opisano proces rejestrowania gry za pomocą Eksploratora gier i kontroli rodzicielskiej w systemach Windows Vista i Windows 7 przy użyciu nowego schematu GDF.
Nuta
Eksplorator gier jest niedostępny w systemie Windows 10 w wersji 1803 lub nowszej.
Treść:
- wymagania wstępne
- integrowanie z Instalatora
- procesu integracji
- Zadania Eksploratora gier
- integrowanie z InstallScript
- integrowanie z pakietem MSI
- wskazówki dotyczące debugowania
- podsumowania
Warunki wstępne
Aby można było zintegrować grę z Programem Games Explorer, należy utworzyć plik definicji gry (GDF). GDF to plik XML zawierający metadane opisujące grę. W wydaniu zestawu SDK DirectX z marca 2009 r. do schematu GDF dodano sekcję dotyczącą dostawcy gier, kanału informacyjnego RSS i zadania gry. Aby użyć instrukcji w tym artykule, należy użyć tego nowego formatu GDF, aby utworzyć plik GDF.
Firma Microsoft udostępnia narzędzie do tworzenia plików GDFs w zestawie SDK DirectX, Edytorze plików definicji gier, aby ułatwić ten proces tworzenia. To narzędzie ułatwia również tworzenie zlokalizowanych wersji usługi GDF.
Po utworzeniu i zlokalizowaniu usługi GDF należy ją hermetyzować w sekcji zasobów pliku binarnego (pliku wykonywalnego lub dll) wraz z miniaturą i ikoną gry. GDF zawiera wszystkie metadane skojarzone z grą, w tym ocenę gry. Windows Parental Controls używać oceny gry, aby umożliwić rodzicom kontrolowanie dostępu do gry. Plik binarny zawierający GDF musi być podpisany cyfrowo przy użyciu prawidłowego certyfikatu Authenticode; w przeciwnym razie Eksplorator Gier i system kontroli rodzicielskiej ignorują ocenę gry, ponieważ informacje o klasyfikacji nie mogą być zaufane bez certyfikacji. Aby uzyskać więcej informacji na temat podpisywania kodu za pomocą aplikacji Authenticode, zobacz Authenticode Signing for Game Developers.
Integrowanie z instalatorem
Aby uprościć integrację z eksploratorem gier, przykład GameUXInstallHelper udostępnia wspólny interfejs API, który można wywołać w systemach Windows XP, Windows Vista i Windows 7. Jest przeznaczony do pracy ze skryptami instalacji InstallShield i Wise Installation System, a także akcjami niestandardowymi MSI i niestandardowymi narzędziami instalacyjnymi. Wykrywanie systemu operacyjnego jest obsługiwane wewnątrz tej przykładowej biblioteki DLL, więc obiekt wywołujący nie musi martwić się, czy klient korzysta z systemu Windows XP, Windows Vista lub Windows 7.
Funkcje wyeksportowane przez tę bibliotekę DLL są następujące:
-
GameExplorerInstallW
-
Rejestruje grę w Eksploratorze gier, mając ścieżkę do pliku binarnego GDF, pełną ścieżkę do folderu, w którym jest zainstalowana gra, oraz zakres instalacji.
-
GameExplorerInstallA
-
Rejestruje grę w Eksploratorze gier; Wersja ANSI GameExplorerInstallW.
-
GameExplorerUninstallW
-
Usuwa grę z rejestracji w Eksploratorze gier, biorąc pod uwagę ścieżkę do pliku binarnego GDF.
-
GameExplorerUninstallA
-
Usuwa grę z rejestracji za pomocą Eksploratora gier; Wersja ANSI GameExplorerUninstallW.
-
GameExplorerSetMSIProperties
-
Konfiguruje właściwości CustomActionData dla akcji odroczonej instalacji niestandardowej msi. Użycie tej funkcji zostało szczegółowo opisane w dalszej części tego artykułu.
-
GameExplorerInstallUsingMSI
-
Dodaje grę do Eksploratora gier; do użycia podczas instalacji akcji niestandardowej MSI.
-
GameExplorerUninstallUsingMSI
-
Usuń grę z Eksploratora gier; do użycia podczas instalacji akcji niestandardowej MSI.
Te funkcje zostały dokładniej wyjaśnione w nagłówku GameUXInstallHelper.h.
Proces integracji
Po dodaniu plików GDF i powiązanych do zasobu binarnego można zintegrować grę z Eksploratorem gier. Użycie GameUXInstallHelper uprości proces integracji. Aby zarejestrować grę w Eksploratorze gier, wywołaj GameExplorerInstall ścieżką do pliku binarnego GDF, pełną ścieżkę do folderu, w którym jest zainstalowana gra, oraz zakres instalacji. Aby usunąć rejestrację gry, wywołaj GameExplorerUninstall ze ścieżką do pliku binarnego GDF.
Należy pamiętać, że proces usuwania usuwa tylko jedną unikatową instalację. Jeśli gra została zainstalowana wiele razy, ten proces musi zostać powtórzony dla każdej unikatowej instalacji.
Zadania Eksploratora gier
Zadania Eksploratora gier będą wyświetlane w menu kontekstowym elementu w Eksploratorze gier. Zadania podrzędne są podzielone na zadania podrzędne odtwarzania i zadania pomocy technicznej. Zadania odtwarzania uruchamiają grę w określonym trybie, a zadania pomocy technicznej służą innym celom, w tym łączenie z witrynami internetowymi.
W systemie Windows Vista zadania to po prostu skróty, które znajdują się w określonych folderach. Zadania odtwarzania i zadania pomocy technicznej są przechowywane w folderach o odpowiednich nazwach PlayTasks i SupportTasks. GameUXInstallHelper może odczytywać informacje o zadaniu gry z pliku binarnego GDF i automatycznie tworzyć wszystkie skróty.
W systemie Windows 7 skróty do zadań nie są potrzebne, ponieważ Eksplorator gier uzyskuje wszystkie informacje o zadaniu bezpośrednio z pliku binarnego GDF.
Integrowanie z oprogramowaniem InstallScript
Wywoływanie interfejsów API Programu Games Explorer z installScript narzędzia InstallShield jest łatwe przy użyciu przykładu GameUXInstallHelper. Kroki wymagane do zintegrowania z aplikacją InstallShield są następujące:
Otwórz projekt InstallScript w edytorze InstallShield.
Dodaj GameUXInstallHelper.dll do projektu, który ma zostać zainstalowany w katalogu docelowym.
Aby dodać GameUXInstallHelper.dll do projektu InstallScript:
Na karcie projektanta instalacji kliknij pozycję dane aplikacji w okienku nawigacji po lewej stronie.
Kliknij pliki i foldery i przejdź do folderów komputera źródłowego , aby zlokalizować GameUXInstallerHelper.dll w plikach komputera źródłowego .
Domyślną lokalizacją GameUXInstallerHelper.dll jest katalog główny zestawu SDK DirectX\Samples\C++\Misc\Bin\x86.
W obszarze foldery komputera docelowegokliknij folder docelowy aplikacji.
Przeciągnij GameUXInstallerHelper.dll z plików komputera źródłowego , aby plików komputera docelowego.
W Eksploratorze InstallScript kliknij plik InstallScript (zazwyczaj setup.rul), który wywołuje funkcję DLL.
Wklej następujący kod InstallScript do pliku:
typedef GUID begin LONG Data1; SHORT Data2; SHORT Data3; CHAR Data4(8); end; prototype LONG GameUXInstallHelper.GameExplorerInstallW(WSTRING, WSTRING, NUMBER); prototype LONG GameUXInstallHelper.GameExplorerUninstallW(WSTRING); function OnMoved() WSTRING gdfbin[256]; WSTRING path[256]; NUMBER scope; begin if !MAINTENANCE then UseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" ); UseDLL( WINSYSDIR ^ "OLE32.dll" ); path = TARGETDIR; gdfbin = TARGETDIR ^ "bin\\ExampleGame.exe"; // TODO: Change this to point to binary containing the GDF if ALLUSERS == 1 then scope = 3; else scope = 2; endif; GameUXInstallHelper.GameExplorerInstallW( gdfbin, path, scope); UnUseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" ); UnUseDLL( WINSYSDIR ^ "OLE32.dll" ); endif; end; function OnMoving() WSTRING gdfbin[256]; begin if MAINTENANCE && UNINST != "" then UseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" ); UseDLL( WINSYSDIR ^ "OLE32.dll" ); gdfbin = path ^ "bin\\ExampleGame.exe"; // TODO: Change this to point to binary containing the GDF GameUXInstallHelper.GameExplorerUninstallW(gdfbin); UnUseDLL( TARGETDIR ^ "GameUXInstallHelper.dll" ); UnUseDLL( WINSYSDIR ^ "OLE32.dll" ); endif; end;
Integrowanie z pakietem MSI
Poniżej przedstawiono ogólny opis kroków wymaganych do wywołania interfejsów API Eksploratora gier przy użyciu akcji niestandardowych MSI:
- Dodaj właściwość do tabeli właściwości MSI o nazwie "RelativePathToGDF" zawierającej ścieżkę względną do pliku binarnego GDF.
- Po akcji CostFinalize wywołaj funkcję Dll GameUXInstallHelper SetMSIGameExplorerProperties w natychmiastowej akcji niestandardowej, aby ustawić odpowiednie właściwości MSI dla innych akcji niestandardowych.
- Po zainstalowaniu wyzwól odroczone działanie niestandardowe po akcji InstallFiles, która wywołuje funkcję Dll GameUXInstallHelper AddToGameExplorerUsingMSI. Jeśli instalacja dotyczy wszystkich użytkowników, akcja niestandardowa musi ustawić flagę msidbCustomActionTypeNoImpersonate; w przeciwnym razie nie może ustawić tej flagi. W związku z tym definiowane są dwie niemal identyczne akcje niestandardowe: GameUXAddAsAdmin i GameUXAddAsCurUser.
- Po usunięciu instalacji wyzwól odroczona akcję niestandardową przed akcją RemoveFiles, która wywołuje funkcję DLL GameUXInstallHelper RemoveFromGameExplorerUsingMSI. Jeśli instalacja dotyczy wszystkich użytkowników, akcja niestandardowa musi ustawić flagę msidbCustomActionTypeNoImpersonate; w przeciwnym razie nie może ustawić tej flagi. W związku z tym definiowane są dwie niemal identyczne akcje niestandardowe: GameUXRemoveAsAdmin i GameUXRemoveAsCurUser.
- Zdefiniuj akcje niestandardowe wycofywania, aby obsłużyć przypadek, w którym użytkownik anuluje instalację lub usunięcie po wykonaniu jednej z tych akcji niestandardowych. Spowoduje to wykonanie dodatkowych 4 akcji niestandardowych: GameUXRollBackAddAsAdmin, GameUXRollBackAddAsCurUser, GameUXRollBackRemoveAsAdmin i GameUXRollBackRemoveAsCurUser.
Ta procedura została szczegółowo opisana w poniższych instrukcjach, które opisują proces, który można wykonać przy użyciu edytora MSI, takiego jak edytor Orca znaleziony w zestawie SDK platformy. Niektóre edytory MSI mają kreatory, które upraszczają niektóre z tych kroków konfiguracji.
Aby skonfigurować pakiet MSI na potrzeby integracji z programem Games Explorer
Otwórz pakiet MSI w usłudze Orca.
Dodaj wiersz pokazany w poniższej tabeli do tabeli binarnej w pakiecie MSI.
Nazwa Dane GAMEUX ścieżka pliku do biblioteki DLL\GameUXInstallHelper.dll Nuta
Ten plik zostanie osadzony w pakiecie MSI, więc należy wykonać ten krok za każdym razem, gdy ponownie skompilujesz GameUXInstallHelper.dll.
Dodaj wiersze przedstawione w poniższej tabeli do tabeli CustomAction w pakiecie MSI.
Akcja Typ Źródło Cel GameUXSetMSIProperties msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 GAMEUX SetMSIGameExplorerProperties GameUXAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX AddToGameExplorerUsingMSI GameUXAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackAddAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackRemoveAsAdmin msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX AddToGameExplorerUsingMSI Dodaj wartości wyświetlane dla tabeli Akcja, Warunek i Sekwencja w poniższej tabeli do tabeli InstallExecuteSequence w pakiecie MSI.
Akcja Warunek Kolejność Notatki GameUXSetMSIProperties 1015 Numer sekwencji umieszcza akcję wkrótce po costFinalize. GameUXAddAsAdmin NIE ZAINSTALOWANO I WSZYSCYUŻYTKOWNICY 4003 Ta akcja niestandardowa będzie wykonywana tylko podczas nowej instalacji dla wszystkich użytkowników. Numer sekwencji umieszcza akcję po instalacjiFiles i po wycofaniu. GameUXAddAsCurUser NIE ZAINSTALOWANO I NIE WSZYSCYUŻYTKOWNICY 4004 Ta akcja niestandardowa będzie miała miejsce tylko podczas nowej instalacji tylko dla bieżącego użytkownika. Numer sekwencji umieszcza akcję po instalacjiFiles i po wycofaniu. GameUXRollBackAddAsAdmin NIE ZAINSTALOWANO I WSZYSCYUŻYTKOWNICY 4001 Ta akcja niestandardowa będzie miała miejsce tylko wtedy, gdy zostanie anulowana nowa instalacja dla wszystkich użytkowników. Numer sekwencji umieszcza akcję po instalacjiFiles i przed akcją Dodaj niestandardową. GameUXRollBackAddAsCurUser NIE ZAINSTALOWANO I NIE WSZYSCYUŻYTKOWNICY 4002 Ta akcja niestandardowa będzie miała miejsce tylko wtedy, gdy nowa instalacja bieżącego użytkownika zostanie anulowana. Numer sekwencji umieszcza akcję po instalacjiFiles i przed akcją Dodaj niestandardową. GameUXRemoveAsAdmin REMOVE~="ALL" I ALLUSERS 3452 Ta akcja niestandardowa będzie wykonywana tylko podczas usuwania dla wszystkich użytkowników. Numer sekwencji umieszcza akcję bezpośrednio przed elementem RemoveFiles i po wycofaniu. GameUXRemoveAsCurUser REMOVE~="ALL" I NIE WSZYSCYUŻYTKOWNICY 3453 Ta akcja niestandardowa będzie wykonywana tylko podczas usuwania bieżącego użytkownika. Numer sekwencji umieszcza akcję bezpośrednio przed elementem RemoveFiles i po wycofaniu. GameUXRollBackRemoveAsAdmin REMOVE~="ALL" I ALLUSERS 3450 Ta akcja niestandardowa będzie miała miejsce tylko wtedy, gdy usunięcie wszystkich użytkowników zostanie anulowane. Numer sekwencji umieszcza akcję bezpośrednio przed poleceniem RemoveFiles i przed akcją Niestandardową Usuń. GameUXRollBackRemoveAsCurUser REMOVE~="ALL" I NIE WSZYSCYUŻYTKOWNICY 3451 Ta akcja niestandardowa będzie miała miejsce tylko wtedy, gdy usunięcie bieżącego użytkownika zostanie anulowane. Numer sekwencji umieszcza akcję bezpośrednio przed poleceniem RemoveFiles i przed akcją Niestandardową Usuń. Dodaj wiersz pokazany w poniższej tabeli do tabeli Właściwości w pakiecie MSI.
Własność Wartość RelativePathToGDF względna ścieżka pliku\npliku binarnego zawierającego GDF Nuta
Lokalizacja określona przez ścieżkę jest względna względem lokalizacji określonej przez ścieżkę instalacji. Na przykład bin\GDF.dll.
Zapisz pakiet MSI.
Aby uzyskać bardziej szczegółowe informacje na temat pakietów MSI i Instalatora Windows, zobacz Instalator Windows.
Porady dotyczące debugowania
Poniżej przedstawiono kilka wskazówek, które ułatwiają debugowanie problemów podczas wywoływania interfejsów API Eksploratora gier:
Testowanie przy użyciu przykładowego kodu
Utworzenie przykładowego rozwiązania GameUXInstallHelper spowoduje utworzenie GameUXInstallHelper.dll i GDFInstall.exe. GDFInstall.exe to przykładowa aplikacja używająca GameUXInstallHelper.dll. Uruchomienie GDFInstall.exe spowoduje wyświetlenie monitu o zainstalowanie lub usunięcie pliku binarnego GDF z eksploratora gier. Możesz przetestować plik binarny GDF, przekazując go jako pierwszy wiersz polecenia arg do GDFInstall.exe.
Jeśli nie masz pliku binarnego GDF lub instalacja nie powiedzie się, spróbuj użyć przykładowej funkcji GDF w zestawie SDK DirectX. Przykład GDFExampleBinary znajduje się w zestawie SDK DirectX i jest tylko biblioteką DLL, która zawiera tylko plik GDF. Również zawarte w źródle jest jego projekt GDFMaker. Możesz go skompilować i przetestować przy użyciu GDFInstall.exe. Możesz również porównać jego kod XML z twoimi, aby wskazać dokładnie, gdzie występuje problem.
Upewnij się, że gra została prawidłowo usunięta
Jeśli gra jest już zainstalowana w Eksploratorze gier, kolejne wywołania IGameExplorer::AddGame zostaną zwrócone E_FAIL, więc upewnij się, że gra nie została zainstalowana przed rozpoczęciem testowania. Dotyczy to również instalacji usługi GDF tylko dla bieżącego użytkownika, a następnie spróbuj zainstalować usługę GDF dla wszystkich użytkowników. Musisz najpierw usunąć grę z obecnych użytkowników przed IGameExplorer::AddGame powiedzie się.
Jeśli uruchomisz GDFInstall.exe wyliczenie, przykładowa aplikacja wprowadzi inny tryb, który będzie wyliczać wszystkie zainstalowane gry Games Explorer i monitować o ich usunięcie. Możesz również przeglądać i przeszukiwać rejestr w HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GameUX, aby upewnić się, że gra nie jest zainstalowana dla innego użytkownika w systemie. Nie należy jednak zmieniać tych ustawień rejestru w żadnym innym celu, ponieważ nie mają one gwarancji, że pozostaną zgodne w przyszłych wersjach systemu operacyjnego.
Pamiętaj, aby podpisać przy użyciu aplikacji Authenticode
Jeśli podano ocenę, ale nie widzisz jej w Eksploratorze gier, upewnij się, że użyto aplikacji Authenticode do podpisania pliku wykonywalnego lub pliku DLL zawierającego ocenę. Eksplorator gier ignoruje informacje o klasyfikacji w niepodpisanych plikach. Aby uzyskać więcej informacji na temat aplikacji Authenticode, zobacz Authenticode Signing for Game Developers.
Upewnij się, że dostępne są kontrole rodzicielskie
Upewnij się, że testujesz kontrolę rodzicielską w wersji systemu Windows Vista, która zapewnia kontrolę rodzicielską: Home Basic, Home Premium lub Ultimate. Systemy Windows Vista Business i Windows Vista Enterprise nie zapewniają kontroli rodzicielskiej, jednak jeśli testujesz w systemie Windows Vista Ultimate, a komputer testowy jest przyłączony do domeny, należy zmienić ustawienie zasad grupy, aby kontrola rodzicielska było widoczne. Aby to zrobić, zobacz Wprowadzenie do Eksploratora gier.
Sprawdź, czy zadania mają prawidłowy typ
Jeśli określono zadania pomocy technicznej, które nie są wyświetlane w Eksploratorze gier, sprawdź, czy są to wszystkie linki sieci Web. Wszystkie inne zadania skrótów muszą być tworzone jako zadania odtwarzania. Zadania zostały omówione wcześniej w tym artykule w Zadania Eksploratora gier.
Weryfikowanie danych w pliku binarnym GDF
GDFTrace.exe to narzędzie znajdujące się w zestawie SDK DirectX. Można uruchomić GDFTrace.exe w pliku binarnym GDF i wyświetli wszystkie metadane GDF zawarte w pliku binarnym dla każdego obsługiwanego języka w celu szybkiej weryfikacji. Wyświetla również wszelkie ostrzeżenia dotyczące brakujących lub nieaktualnych informacji.
Streszczenie
Eksplorator gier w systemie Windows Vista zapewnia łatwy, dostosowywalny sposób prezentowania gry użytkownikom systemu Windows Vista, ale wymaga również zarejestrowania gry w systemie podczas procesu instalacji. Przykład GameUXInstallHelper znacznie upraszcza ten proces dla deweloperów.