Game Prerequisite Installers

에픽게임즈가 제공하는 필수 구성 요소 인스톨러 옵션에 관해 설명합니다.

3 분 소요

에픽게임즈는 세 가지 필수 구성 요소 인스톨러 옵션을 제공합니다.

시작 전 살펴볼 내용

Visual Studio에서 제공된 DLL 라이브러리를 사용하는 애플리케이션을 빌드할 경우에는 애플리케이션 사용자의 컴퓨터에도 해당 DLL이 있어야 애플리케이션이 실행됩니다. 대부분의 사용자가 Visual Studio를 설치하지 않았을 것이므로 DLL을 제공해야 합니다. Visual Studio는 애플리케이션 인스톨러에 포함할 수 있는 재배포 가능한 파일로 DLL을 만들어줍니다.

앱 로컬 디플로이

BuildPatchTool을 사용하여 업로드할 게임을 패키징할 경우, 필요한 다이내믹 링크 라이브러리(Dynamic-Link Library, DLL)를 게임 실행파일과 동일한 디렉터리에 복사하여 필수 구성 요소 설치를 포함할 수 있습니다.

이 방법은 필수 구성 요소 설치를 포함할 수 있는 여러 방법 중 하나이지만, 에픽게임즈가 선호하는 방법입니다. 앱 로컬 디플로이를 사용할 때의 장점은 사용자 액세스 권한을 승격하거나 모든 사용자를 위해 시스템을 변경할 필요가 없다는 것입니다.

하지만 이 방법은 좀 더 복잡한 설치가 필요할 경우에 적합하지 않을 수도 있습니다. 또한 이 방법으로는 재배포 가능 DLL이 일부만 배포될 수도 있습니다. 다른 방법으로는 BuildPatchTool 명령줄을 통한 에픽게임즈 런처 가 있습니다.

작업 방법

필요한 Visual Studio DLL을 설치 디렉터리에서 애플리케이션 디렉터리로 복사합니다. 애플리케이션과 번들해야 할 DLL을 확인하려면 Microsoft의 재배포할 DLL 확인 문서와 연습: 애플리케이션 로컬 폴더에 Visual C++ 애플리케이션 배포 문서를 참조하세요.

BuildPatchTool 명령줄을 통한 에픽게임즈 런처

종속성이 있는 DLL 복사가 실행 가능한 해결법이 아니라면, 게임을 처음 실행한 후 에픽게임즈 런처에서 인스톨러를 실행할 수 있습니다. 연결 ID가 로컬 머신에 이미 설치되어 있는 경우 인스톨러를 건너뛰게 되므로 사용자는 처음 실행할 때나 새 종속성을 포함할 때만 설치 프로세스를 보게 됩니다.

에픽게임즈 런처에서 필수 구성 요소 설치를 환경설정하면 인스톨러를 온전히 실행할 수 있습니다. 하지만 여기에는 중대한 결점이 있습니다. 사용자는 제공되는 승격 프롬프트를 거절하거나, 보지 못하거나, 오해할 수도 있으며, 필수 구성 요소 인스톨러에서 0이 아닌 반환 코드가 나오면 문제가 발생할 수 있습니다. 또한 이 방법으로 Visual Studio DLL을 설치하면 실패할 수 있으며 애플리케이션이 실행되지 않을 수도 있습니다. 자세한 정보는 Microsoft 웹사이트의 배포 방법 선택을 참조하세요.

작업 방법

에픽게임즈 런처에서 필수 구성 요소 인스톨러를 환경설정하려면 BuildPatchTool 명령줄 실행인자를 사용합니다. 다음 배치 파일 스니펫 예시는 UE3Redist 인스톨러를 첫 단계로 실행하는 방법을 보여줍니다.

SET UE3_PREREQ_IDS="UE3Redist,NotSharedReq,SharedReq2,SharedReq3"
SET UE3_PREREQ_NAME="UE3 Redistributables"
SET UE3_PREREQ_PATH="Binaries\Windows\UE3Redist.exe"
SET UE3_PREREQ_ARGS=""
BuildPatchTool … -mode=PatchGeneration -PrereqIds=%UE3_PREREQ_IDS%
-PrereqName=%UE3_PREREQ_NAME% -PrereqPath=%UE3_PREREQ_PATH%
-PrereqArgs=%UE3_PREREQ_ARGS%

이 환경설정은 다음을 가정합니다.

  • 필수 구성 요소 인스톨러는 Binaries\Windows 서브디렉터리에 있습니다.

  • 필수 구성 요소에는 사용자가 읽을 수 있는 이름이 있습니다.

  • 필수 구성 요소 ID는 인스톨러 실행 여부를 결정합니다.

  • 여러 게임에서 필수 구성 요소를 공유할 수 있도록 쉼표로 구분된 목록(공백 없음) 내 필수 구성 요소별 ID는 고유합니다.

게임의 후속 업데이트에서 새로운 필수 구성 요소가 추가될 경우 위의 방법은 또 다른 설치를 트리거할 수도 있습니다. 그러면 필수 구성 요소 목록에 새로운 고유 ID를 추가해야 합니다. 런처는 새 ID를 설치되지 않은 것으로 인식하여 인스톨러가 다시 실행되게 합니다. 인스톨러가 성공적으로 완료되면, 런처가 해당 ID를 로컬 머신에 설치된 것으로 표시하고 런처를 다시 실행하지 않습니다.

배치 스크립트

위의 방법이 게임에 적합하지 않으면, 배치 파일을 사용하면 됩니다. 배치 파일을 사용하면 게임에 전달되기 전에 설치 중인 필수 구성 요소가 있는지 조건부로 확인할 수 있습니다. 이 방법은 응용하기 쉽고 유연합니다. 하지만 에픽게임즈 런처에서 게임을 실행할 때 DOS 박스가 잠깐만 깜빡입니다. 또한 2분 넘게 걸리는 느린 설치 때문에 교환 코드가 게임에 전달되기 전에 만료되어 게임을 재실행해야 할 수도 있습니다.

작업 방법

BuildPatchTool에 지정된 것처럼 실행파일로 사용할 배치 파일을 생성합니다. 생성된 배치 파일은 필수 구성 요소가 있는지 확인하고 명령줄 실행인자를 게임에 전달해야 합니다. 다음 배치 파일은 플레이어의 머신에서 실행하기 위해 UE3Redist.exe 인스톨러가 필요한 가상의 UE3 타이틀입니다. 이 배치 파일은 바이너리 디렉터리에서 실행되도록 설정되어 있으며, Windows 서브디렉터리에 UE3Redist.exe 인스톨러가 있습니다.

reg query HKEY_CLASSES_ROOT\Installer\Products\70140BF22CB7C94419A535B0925B0EEF
if %ERRORLEVEL% EQU 0 goto LAUNCH_UE3_GAME
.\Windows\UE3Redist.exe
:LAUNCH_UE3_GAME
UE3Game.com %*

관련 BuildPatchTool 설정은 다음과 같습니다.

BuildPatchTool … -mode=PatchGeneration -FeatureLevel=Latest -AppLaunch="Binaries\UE3Game.bat"