게임 개발자를 위한 Windows 게임 탐색기
Windows Vista는 게임 탐색기를 포함하여 Windows에서 게임의 사용자 환경을 개선합니다. 게임 탐색기는 Windows Vista 시작 메뉴에 게임 폴더로 노출되며 게임에 액세스하기 위한 중앙 위치를 제공합니다.
DirectX SDK의 2009년 3월 릴리스부터 새 GDF(게임 정의 파일) 스키마를 사용하여 Windows 7, 게임 공급자 및 RSS 피드 및 IGameExplorer2의 기능을 지원합니다. IGameExplorer2는 게임을 게임 탐색기와 통합하는 프로세스를 간소화하는 Windows 7의 새로운 인터페이스입니다.
이 문서에서는 새 GDF 스키마를 사용하여 Windows Vista 및 Windows 7에서 게임 탐색기 및 자녀 보호에 게임을 등록하는 과정을 간략하게 설명합니다.
참고 항목
Windows 10 버전 1803 이상에서는 게임 탐색기를 사용할 수 없습니다.
목차:
필수 조건
게임을 게임 탐색기에 통합하려면 먼저 GDF(게임 정의 파일)를 만들어야 합니다. GDF는 게임을 설명하는 메타데이터를 포함하는 XML 파일입니다. DirectX SDK의 2009년 3월 릴리스에서는 게임 공급자, RSS 피드 및 게임 작업에 대한 섹션이 GDF 스키마에 추가되었습니다. 이 문서의 지침을 사용하려면 이 새 GDF 형식을 사용하여 GDF 파일을 만들어야 합니다.
Microsoft는 DirectX SDK, 게임 정의 파일 편집기에서 GDF를 작성하기 위한 도구를 제공하여 이 생성 프로세스를 더 쉽게 만듭니다. 이 도구를 사용하면 GDF의 지역화된 버전을 만들 수도 있습니다.
GDF가 작성되고 지역화되면 게임의 썸네일 및 아이콘과 함께 이진 파일(실행 파일 또는 DLL)의 리소스 섹션 내에 캡슐화되어야 합니다. GDF에는 게임 등급을 포함하여 게임과 연결된 모든 메타데이터가 포함됩니다. Windows 자녀 보호는 게임의 등급을 사용하여 부모가 게임에 대한 액세스를 제어할 수 있도록 합니다. GDF를 포함하는 이진 파일은 유효한 Authenticode 인증서로 디지털 서명되어야 합니다. 그렇지 않으면 인증 없이는 등급 정보를 신뢰할 수 없으므로 게임 탐색기와 자녀 보호 시스템은 게임의 등급을 무시합니다. Authenticode를 사용하여 코드 서명에 대한 자세한 내용은 게임 개발자를 위한 Authenticode 서명을 참조 하세요.
설치 관리자와 통합
게임 탐색기 통합을 간소화하기 위해 GameUXInstallHelper 샘플은 Windows XP, Windows Vista 및 Windows 7에서 호출할 수 있는 일반적인 API를 제공합니다. InstallShield 및 Wise Installation System용 스크립트와 MSI 사용자 지정 작업 및 사용자 지정 설치 도구를 사용하도록 설계되었습니다. 운영 체제 검색은 이 샘플 DLL 내에서 처리되므로 호출자는 클라이언트가 Windows XP, Windows Vista 또는 Windows 7을 실행하고 있는지 걱정할 필요가 없습니다.
이 DLL에서 내보낸 함수는 다음과 같습니다.
-
GameExplorerInstallW
-
GDF 이진 파일에 대한 경로, 게임이 설치된 폴더의 전체 경로 및 설치 범위가 지정된 게임 탐색기에 게임을 등록합니다.
-
GameExplorerInstallA
-
게임 탐색기에 게임을 등록합니다. GameExplorerInstallW의 ANSI 버전입니다.
-
GameExplorerUninstallW
-
GDF 이진 파일에 대한 경로가 지정된 경우 게임 탐색기에 대한 등록에서 게임을 제거합니다.
-
GameExplorerUninstallA
-
게임 탐색기를 사용하여 등록에서 게임을 제거합니다. GameExplorerUninstallW의 ANSI 버전입니다.
-
GameExplorerSetMSIProperties
-
MSI 지연된 사용자 지정 설치 작업에 대한 CustomActionData 속성을 구성합니다. 이 함수의 사용법은 이 문서의 뒷부분에 자세히 설명되어 있습니다.
-
GameExplorerInstallUsingMSI
-
게임 탐색기에 게임을 추가합니다. MSI 사용자 지정 작업 설치 중에 사용할 수 있습니다.
-
GameExplorerUninstallUsingMSI
-
게임 탐색기에서 게임을 제거합니다. MSI 사용자 지정 작업 설치 중에 사용할 수 있습니다.
이러한 함수는 GameUXInstallHelper.h 헤더에 자세히 설명되어 있습니다.
통합 프로세스
GDF 및 관련 파일이 이진 리소스에 추가되면 게임을 게임 탐색기와 통합할 수 있습니다. GameUXInstallHelper를 사용하면 통합 프로세스가 간소화됩니다. 게임 탐색기에 게임을 등록하려면 GDF 이진 경로, 게임이 설치된 폴더의 전체 경로 및 설치 범위를 사용하여 GameExplorerInstall을 호출합니다. 게임의 등록을 제거하려면 GDF 이진 경로로 GameExplorerUninstall을 호출합니다.
제거 프로세스는 하나의 고유한 설치만 제거합니다. 게임이 여러 번 설치된 경우 각 고유한 설치에 대해 이 프로세스를 반복해야 합니다.
게임 탐색기 작업
게임 탐색기 작업은 게임 탐색기에서 항목의 상황에 맞는 메뉴에 표시됩니다. 작업은 재생 작업 및 지원 작업으로 나뉩니다. 재생 작업은 특정 모드로 게임을 시작하고, 지원 작업은 웹 사이트에 대한 연결을 비롯한 다른 용도로 사용됩니다.
Windows Vista에서 작업은 특정 폴더에 있는 바로 가기일 뿐입니다. 재생 작업 및 지원 작업은 해당 이름 PlayTasks 및 SupportTasks와 함께 폴더에 저장됩니다. GameUXInstallHelper는 GDF 이진 파일에서 게임의 작업 정보를 읽고 모든 바로 가기를 자동으로 만들 수 있습니다.
Windows 7에서는 게임 탐색기가 GDF 이진 파일에서 직접 모든 작업 정보를 가져오기 때문에 작업에 대한 바로 가기가 필요하지 않습니다.
InstallScript에 통합
InstallShield의 InstallScript에서 게임 탐색기 API를 호출하는 것은 GameUXInstallHelper 샘플을 사용하여 쉽게 수행할 수 있습니다. InstallShield와 통합하는 데 필요한 단계는 다음과 같습니다.
InstallShield 편집기에서 InstallScript 프로젝트를 엽니다.
대상 디렉터리에 설치할 프로젝트에 GameUXInstallHelper.dll을 추가합니다.
InstallScript 프로젝트에 GameUXInstallHelper.dll을 추가하려면 다음을 수행합니다.
설치 디자이너 탭의 왼쪽 탐색 창에서 애플리케이션 데이터를 클릭합니다.
파일 및 폴더를 클릭하고 원본 컴퓨터의 폴더에서 검색하여 원본 컴퓨터의 파일에서 GameUXInstallerHelper.dll을 찾습니다.
GameUXInstallerHelper.dll의 기본 위치는 DirectX SDK root\Samples\C++\Misc\Bin\x86입니다.
대상 컴퓨터의 폴더에서 애플리케이션 대상 폴더를 클릭합니다.
GameUXInstallerHelper.dll을 원본 컴퓨터의 파일에서 대상 컴퓨터의 파일로 끌어옵니다.
InstallScript 탐색기에서 DLL 함수를 호출하는 InstallScript 파일(일반적으로 setup.rul)을 클릭합니다.
다음 InstallScript를 파일에 붙여넣습니다.
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;
MSI 패키지에 통합
다음은 MSI 사용자 지정 작업을 사용하여 게임 탐색기 API를 호출하는 데 필요한 단계에 대한 개략적인 설명입니다.
- GDF 이진 파일에 대한 상대 경로를 포함하는 "RelativePathToGDF"라는 MSI 속성 테이블에 속성을 추가합니다.
- CostFinalize 작업 후에는 즉시 사용자 지정 작업에서 GameUXInstallHelper DLL 함수 SetMSIGameExplorerProperties 를 호출하여 다른 사용자 지정 작업에 적절한 MSI 속성을 설정합니다.
- 설치 시 GameUXInstallHelper DLL 함수 AddToGameExplorerUsingMSI를 호출하는 InstallFiles 작업 후에 지연된 사용자 지정 작업을 트리거합니다. 모든 사용자에 대한 설치인 경우 사용자 지정 작업은 msidbCustomActionTypeNoImpersonate 플래그를 설정해야 합니다. 그렇지 않으면 이 플래그를 설정하면 안 됩니다. 따라서 거의 동일한 두 가지 사용자 지정 작업인 GameUXAddAs관리 및 GameUXAddAsCurUser가 정의됩니다.
- 설치를 제거하면 GameUXInstallHelper DLL 함수 RemoveFromGameExplorerUsingMSI를 호출하는 RemoveFiles 작업 전에 지연된 사용자 지정 작업을 트리거합니다. 모든 사용자에 대한 설치인 경우 사용자 지정 작업은 msidbCustomActionTypeNoImpersonate 플래그를 설정해야 합니다. 그렇지 않으면 이 플래그를 설정하면 안 됩니다. 따라서 거의 동일한 두 가지 사용자 지정 작업인 GameUXRemoveAs관리 및 GameUXRemoveAsCurUser가 정의됩니다.
- 이러한 사용자 지정 작업 중 하나가 이미 발생한 후 사용자가 설치 또는 제거를 취소하는 경우를 처리하도록 롤백 사용자 지정 작업을 정의합니다. 이로 인해 GameUXRollBackAddAs관리, GameUXRollBackAddAsCurUser, GameUXRollBackRemoveAs관리 및 GameUXRollBackRemoveAsCurUser 등 4가지 사용자 지정 작업이 추가로 수행됩니다.
이 절차는 플랫폼 SDK에 있는 Orca 편집기처럼 MSI 편집기를 사용하여 수행할 수 있는 프로세스를 설명하는 다음 지침에 자세히 설명되어 있습니다. 일부 MSI 편집기에서는 이러한 구성 단계 중 일부를 간소화하는 마법사가 있습니다.
게임 탐색기와의 통합을 위해 MSI 패키지를 구성하려면
Orca에서 MSI 패키지를 엽니다.
MSI 패키지의 이진 테이블에 다음 표에 표시된 행을 추가합니다.
이름 데이터 GAMEUX DLL\GameUXInstallHelper.dll에 대한 파일 경로 참고 항목
이 파일은 MSI 패키지에 포함되므로 GameUXInstallHelper.dll을 다시 컴파일할 때마다 이 단계를 수행해야 합니다.
MSI 패키지의 CustomAction 테이블에 다음 표에 표시된 행을 추가합니다.
작업 형식 원본 대상 GameUXSetMSIProperties msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 GAMEUX SetMSIGameExplorerProperties GameUXAddAs관리 msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX AddToGameExplorerUsingMSI GameUXAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackAddAs관리 msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackAddAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAs관리 msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript = 1089 GAMEUX RemoveFromGameExplorerUsingMSI GameUXRollBackRemoveAs관리 msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3393 GAMEUX AddToGameExplorerUsingMSI GameUXRollBackRemoveAsCurUser msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeRollback + msidbCustomActionTypeInScript = 1345 GAMEUX AddToGameExplorerUsingMSI 다음 표의 Action, Condition 및 Sequence에 대해 표시된 값을 MSI 패키지의 InstallExecuteSequence 테이블에 추가합니다.
작업 조건 시퀀스 주의 GameUXSetMSIProperties 1015 시퀀스 번호는 CostFinalize 직후에 작업을 배치합니다. GameUXAddAs관리 설치되지 않음 및 ALLUSERS 4003 이 사용자 지정 작업은 모든 사용자에 대해 새로 설치하는 동안에만 발생합니다. 시퀀스 번호는 InstallFiles 뒤와 롤백 후에 작업을 배치합니다. GameUXAddAsCurUser 설치되지 않고 ALLUSERS가 아님 4004 이 사용자 지정 작업은 현재 사용자에 대해서만 새로 설치하는 동안에만 발생합니다. 시퀀스 번호는 InstallFiles 뒤와 롤백 후에 작업을 배치합니다. GameUXRollBackAddAs관리 설치되지 않음 및 ALLUSERS 4001 이 사용자 지정 작업은 모든 사용자에 대한 새 설치가 취소된 경우에만 발생합니다. 시퀀스 번호는 InstallFiles 뒤와 사용자 지정 추가 작업 앞에 작업을 배치합니다. GameUXRollBackAddAsCurUser 설치되지 않고 ALLUSERS가 아님 4002 이 사용자 지정 작업은 현재 사용자에 대한 새 설치가 취소된 경우에만 발생합니다. 시퀀스 번호는 InstallFiles 뒤와 사용자 지정 추가 작업 앞에 작업을 배치합니다. GameUXRemoveAs관리 REMOVE~="ALL" 및 ALLUSERS 3452 이 사용자 지정 작업은 모든 사용자를 제거하는 동안에만 발생합니다. 시퀀스 번호는 RemoveFiles 바로 앞과 롤백 후에 작업을 배치합니다. GameUXRemoveAsCurUser REMOVE~="ALL" 및 ALLUSERS 아님 3453 이 사용자 지정 작업은 현재 사용자를 제거하는 동안에만 발생합니다. 시퀀스 번호는 RemoveFiles 바로 앞과 롤백 후에 작업을 배치합니다. GameUXRollBackRemoveAs관리 REMOVE~="ALL" 및 ALLUSERS 3450 이 사용자 지정 작업은 모든 사용자에 대한 제거가 취소된 경우에만 발생합니다. 시퀀스 번호는 RemoveFiles 바로 앞과 사용자 지정 제거 작업 앞에 작업을 배치합니다. GameUXRollBackRemoveAsCurUser REMOVE~="ALL" 및 ALLUSERS 아님 3451 이 사용자 지정 작업은 현재 사용자에 대한 제거가 취소된 경우에만 발생합니다. 시퀀스 번호는 RemoveFiles 바로 앞과 사용자 지정 제거 작업 앞에 작업을 배치합니다. 다음 표에 표시된 행을 MSI 패키지의 속성 테이블에 추가합니다.
속성 값 RelativePathToGDF GDF를 포함하는 이진 파일의 상대 파일 경로\이름 참고 항목
경로에 지정된 위치는 설치 경로에 지정된 위치를 기준으로 합니다. 예를 들어 bin\GDF.dll입니다.
MSI 패키지를 저장합니다.
MSI 패키지 및 Windows Installer에 대한 자세한 내용은 Windows Installer를 참조 하세요.
디버깅 팁
다음은 게임 탐색기 API를 호출할 때 문제를 디버그하는 데 도움이 되는 몇 가지 팁입니다.
샘플 코드로 테스트
GameUXInstallHelper 샘플 솔루션을 빌드하면 GameUXInstallHelper.dll 및 GDFInstall.exe가 생성됩니다. GDFInstall.exe는 GameUXInstallHelper.dll을 사용하는 샘플 애플리케이션입니다. GDFInstall.exe를 실행하면 게임 탐색기에서 GDF 이진 파일을 설치하거나 제거할지 묻는 메시지가 표시됩니다. GDF 이진 파일을 GDFInstall.exe에 첫 번째 명령줄 인수로 전달하여 테스트할 수 있습니다.
GDF 이진 파일이 없거나 설치에 실패한 경우 DirectX SDK에서 샘플 GDF를 사용해 보세요. GDFExampleBinary 샘플은 DirectX SDK에서 찾을 수 있으며 GDF 파일만 포함하는 DLL일 뿐입니다. 원본에는 GDFMaker 프로젝트도 포함되어 있습니다. GDFInstall.exe를 사용하여 빌드하고 테스트할 수 있습니다. 또한 해당 XML을 사용자와 비교하여 문제가 있는 위치를 정확하게 파악할 수 있습니다.
게임이 제대로 제거되었는지 확인
게임이 게임 탐색기에 이미 설치되어 있는 경우 IGameExplorer::AddGame에 대한 후속 호출은 E_FAIL 반환하므로 테스트 전에 게임이 설치되지 않았는지 확인합니다. 현재 사용자에 대해서만 GDF를 설치한 다음 모든 사용자에 대해 GDF를 설치하려는 경우에도 적용됩니다. IGameExplorer::AddGame이 성공하기 전에 먼저 현재 사용자로부터 게임을 제거해야 합니다.
GDFInstall.exe 열거형을 실행하는 경우 샘플 애플리케이션은 설치된 모든 게임 탐색기 게임을 열거하고 제거하라는 메시지를 표시하는 다른 모드로 전환됩니다. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GameUX에서 레지스트리를 찾아 검색하여 시스템의 다른 사용자를 위해 게임이 설치되지 않았는지 확인할 수도 있습니다. 그러나 이러한 레지스트리 설정은 향후 버전의 운영 체제에서 다시 호환되도록 보장되지 않으므로 다른 용도로 변경하지 기본.
Authenticode를 사용하여 서명해야 합니다.
등급을 제공했지만 게임 탐색기에 표시되지 않는 경우 Authenticode를 사용하여 등급이 포함된 실행 파일 또는 DLL 파일에 서명했는지 확인합니다. 게임 탐색기는 서명되지 않은 파일에서 등급 정보를 무시합니다. Authenticode에 대한 자세한 내용은 게임 개발자를 위한 Authenticode 서명을 참조 하세요.
자녀 보호 기능을 사용할 수 있는지 확인합니다.
자녀 보호 기능을 제공하는 Windows Vista 버전(Home Basic, Home Premium 또는 Ultimate)에서 자녀 보호 기능을 테스트하고 있는지 확인합니다. Windows Vista Business 및 Windows Vista Enterprise는 자녀 보호 기능을 제공하지 않습니다. 그러나 Windows Vista Ultimate에서 테스트하고 테스트 컴퓨터가 할 일에 조인된 경우기본 그룹 정책 설정을 변경하여 자녀 보호 기능을 표시해야 합니다. 이렇게 하려면 게임 탐색기 시작을 참조하세요.
태스크가 올바른 형식인지 확인합니다.
게임 탐색기에 표시되지 않는 지원 작업을 지정한 경우 모든 웹 링크인지 확인합니다. 다른 바로 가기 작업은 재생 작업으로 만들어야 합니다. 작업은 게임 탐색기 작업의 이 문서의 앞부분에서 다룹니다.
GDF 이진 파일에서 데이터 확인
GDFTrace.exe는 DirectX SDK에 있는 도구입니다. GDF 이진 파일에서 GDFTrace.exe를 실행할 수 있으며 빠른 유효성 검사를 위해 지원되는 모든 언어에 대해 이진 파일에 포함된 모든 GDF 메타데이터를 출력합니다. 누락되거나 오래된 정보에 대한 경고도 표시됩니다.
요약
Windows Vista의 게임 탐색기는 Windows Vista 사용자에게 게임을 쉽고 사용자 지정할 수 있는 방법을 제공하지만 설치 프로세스 중에 시스템에 게임을 등록해야 합니다. GameUXInstallHelper 샘플은 개발자를 위해 이 프로세스를 크게 간소화합니다.