游戏必备安装程序选项

Epic Games提供的三个游戏必备安装程序选项。

Epic Games提供了三种先决安装程序方案:

开始之前

如果构建的应用程序使用Visual Studio提供的库DLL,则此应用程序的用户计算机上也必须具备这些DLL方可运行该应用程序。由于大部分用户可能并未安装Visual Studio,你必须为他们提供这些DLL。Visual Studio将这些DLL作为可重新分发的文件进行提供,你可以将这些文件包含在应用程序安装程序中。

应用程序本地部署

在打包游戏以通过BuildPatchTool上传时,可以将必需的动态关联库(DLL)复制到游戏可执行文件所在目录中,以包含必备的安装文件。

此方法不是包含必备安装文件的唯一方法,却是Epic Games首选的做法。使用应用程序本地部署的优势在于,不需要额外的用户访问权限,也不会针对所有用户更改系统。

但是,如果你需要更复杂的安装,此方法可能行不通。此外,并非所有可再分发的DLL都可以采用这种方式进行分发。其他方法包括基于BuildPatchTool命令行的Epic Games启动程序

如何操作

将所需的Visual Studio DLL从安装目录复制到应用程序的目录。按照Microsoft的以下文章来确定必须绑定到应用程序的DLL:确定需要重新分发的DLL操作说明:将Visual C++应用程序部署到应用程序本地文件夹

基于BuildPatchTool命令行的Epic Games启动程序

如果复制相关DLL不是可行的解决方案,则可以让Epic Games启动程序在首次启动游戏时运行安装程序。如果关联的IDsare已经安装在本地计算机上,将会跳过安装程序,因此用户只能在第一次或在添加新依赖关系时看到安装过程。

使用Epic Games启动程序配置必备安装文件,你可以运行完整的安装程序。但是,这样也有一些明显的缺点。如果收到提示,用户可能拒绝、看不到或误解此类提示,必备安装程序中返回的任何非零代码都可能导致出现问题。此外,使用这种方法安装Visual Studio DLL可能导致安装失败,并导致应用程序无法运行。如需更多信息,请参见Microsoft网址中提供的选择部署方法

如何操作

要为Epic Games启动程序配置必备安装程序,可以使用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标记为在本地计算机上已安装,不会重新启动安装程序。

批处理脚本

如果上述推荐的方法对你的游戏都不适用,则可以使用批处理文件来有条件地检查要安装的必备文件,然后再开始安装游戏。此方法容易开发,非常灵活。但是,当游戏从Epic Games启动程序运行时,DOS盒会闪烁一小段时间。此外,由于安装速度缓慢(超过两分钟),交换码在传送到游戏之前可能就会过期,因此需要重新启动游戏。

如何操作

创建一个批处理文件,按照BuildPatchTool中的指定,将其用作可执行文件。此批处理文件需要检查必备文件,然后将命令行参数传送到你的游戏。以下批处理文件是一个假想的UE3产品,需要在玩家的计算机上运行UE3Redist.exe安装程序。它设置为从Binaries目录运行,在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" …