앱 파일 준비
크로스플레이 런처로 앱을 배포하려면, 먼저 앱 아이콘, 앱 실행 파일, 앱 설정 파일 등 PC에서 앱 실행에 필요한 파일들을 준비해야 합니다. 가상 예시로, 컴투스 프로야구 2024 게임 앱 파일이 아래와 같이 준비되어 있다고 가정해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 |
Com2us_ProBaseball_2024 │ app.ico │ app.exe │ app.ini │ ... └─ resources └─ data └─ packages └─ ... |
이 경우, 크로스플레이 런처로 컴투스 프로야구 2024 게임을 배포하려면 아래와 같은 디렉토리 구조를 준비해야 합니다.
1 2 3 4 5 6 7 8 |
// 루트 폴더입니다. 앱 개발사가 원하는 이름을 사용합니다. Com2us_Game_for_Crossplay_Launcher // 앱 실행에 필요한 파일들을 담은 폴더입니다. 앱 개발사가 원하는 이름을 사용합니다. └─ Com2us_ProBaseball_2024 // meta.json 파일입니다. └─ meta.json |
루트 폴더
루트 폴더는 크로스플레이 런처로 앱을 배포하는 데 필요한 모든 데이터를 담은 최상위 디렉토리입니다. 루트 폴더에는 앱 폴더와 meta.json을 넣습니다. 루트 폴더 폴더명은 앱 개발사에서 원하는 이름으로 지정합니다. 이름을 지정한 후 Hive 콘솔 크로스플레이 런처 > 앱 관리 > 다운로드 설정 > 게임 설치 옵션 > 폴더명에 루트 폴더 이름을 입력해야 합니다.
앱 폴더
앱 실행에 필요한 파일들을 담은 폴더입니다. 앱 실행 파일, 아이콘 파일, 리소스, 데이터 등 필요한 파일들을 준비하여 넣습니다. 앱 폴더 폴더명은 앱 개발사에서 원하는 이름으로 지정합니다. 단, 앱 폴더와 앱 폴더 하위에 있는 폴더를 포함하여 폴더명에 “#” 또는 “;” 문자를 포함해서는 안 되며, 앱 폴더 하위에는 비어 있는 폴더를 넣으면 안 됩니다.
META.JSON
meta.json은 앱 폴더에 넣은 앱 실행 파일(app.exe)의 상대 경로, 앱 아이콘(app.ico) 파일의 상대 경로, 앱 삭제 시 앱과 함께 삭제할 폴더 경로 또는 레지스트리 경로를 입력한 파일입니다. 여기서, 앱 실행 파일과 앱 아이콘 파일의 상대 경로는 meta.json 파일 위치를 기준으로 한 상대 경로입니다. meta.json은 앱 폴더와 반드시 같은 위치에 있어야 합니다.
meta.json 파일은 다음과 같은 형식으로 작성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{ "launch": "앱 폴더/app.exe", "icon": "앱 폴더/app.ico", "delete": [ { "type": "CSIDL", "path": "0x1c/myGameLocalRes" }, { "type": "general", "path": "C:/myGameGlobalRes" }, { "type": "registrykey", "root": "0x80000001", "path": "SOFTWARE\\MyGame" } ] } |
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
launch |
크로스플레이 런처로 앱을 실행할 때 사용하는 앱 실행 파일(예시:app.exe)의 상대 경로입니다. |
string | Y |
icon |
크로스플레이 런처로 앱을 설치할 때, PC 바탕 화면과 시작 메뉴에 바로가기 파일을 생성하는 데 필요한 앱 아이콘 파일(예시:app.ico) 상대 경로입니다. 크로스플레이 런처에서 바로가기 파일을 생성하려면 아이콘 파일이 반드시 있어야 합니다. 파일 포맷은
|
string | Y |
delete |
앱을 실행하는 과정에서 앱 설치 폴더가 아닌 다른 폴더에 데이터를 생성할 수 있습니다. 나중에 앱을 삭제할 때, 이렇게 앱 설치 폴더가 아닌 다른 곳에 존재하는 파일 또는 레지스트리를 함께 삭제해야할 경우, 삭제할 파일이 담긴 폴더 정보와 레지스트리 정보를 담은 배열입니다.
|
array | N |
다음은 delete
배열에 대한 안내입니다.
필드명 | 설명 | 타입 | 필수 여부 |
---|---|---|---|
type |
삭제할 데이터 종류입니다. |
string | Y |
root |
레지스트리 Root에 해당하는 16진수 문자열로
|
string | N |
path |
|
string | Y |
다음은 어떤 게임 앱 파일이 아래와 같이 준비되었을 때 meta.json을 구성하는 예시입니다.
데이터 | 종류 | 데이터 위치 | 비고 |
---|---|---|---|
game.exe | 게임 실행 파일 | 루트 폴더/game | 루트 폴더와 game은 모두 게임사가 지정한 디렉토리 |
icon.ico | 아이콘 파일 | 루트 폴더/game | 루트 폴더와 game은 모두 게임사가 지정한 디렉토리 |
MyGame | 레지스트리 | HKEY_CURRENT_USER/SOFTWARE/SOFTWARE/MyGame | 게임 실행 과정에서 생성한 데이터로, 게임 삭제 시 함께 삭제해아 하는 레지스트리 |
myGameGlobalRes | 폴더(일반 경로) | C:/myGameGlobalRes | 게임 실행 과정에서 생성한 데이터로, 게임 삭제 시 함께 삭제해아 하는 파일이 있는 폴더 |
myGameLocalRes | 폴더(특수 경로) | C:/Users/[username]/AppData/Local/myGameLocalRes | 게임 실행 과정에서 생성한 데이터로, 게임 삭제 시 함께 삭제해아 하는 파일이 있는 폴더 |
위 상황에서 meta.json 파일은 아래와 같이 작성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{ "launch": "game/game.exe", "icon": "game/icon.ico", "delete": [ { "type": "CSIDL", "path": "0x1c/myGameLocalRes" }, { "type": "general", "path": "C:/myGameGlobalRes" }, { "type": "registrykey", "root": "0x80000001", "path": "SOFTWARE\\MyGame" } ] } |