安装程序发布

本文档介绍了如何使用游戏安装程序在 Google Play 游戏电脑版上发布游戏。

在“开发者安装”流程中,您提供的游戏安装程序必须管理游戏的安装、更新和卸载。

准备工作

Google Play Games SDK 集成到游戏中。

将游戏打包为 WAB 文件

Google Play 游戏电脑版要求您将游戏的安装程序作为 Windows app bundle (WAB) 文件上传到 Google Play 管理中心。如需创建 WAB 文件,请按以下步骤操作:

  1. 下载 Play 发布工具。 您可以在 Windows 命令行或 PowerShell 中运行此工具。

  2. 创建 Play 发布配置文件,可使用任意名称。例如,play_publishing_config.xml 采用以下格式:

    <?xml version="1.0" encoding="UTF-8"?>
    <play-publishing-config version="1.0">
      <application>
        <package-name>PACKAGE_NAME</package-name>
        <version-name>VERSION_NAME</version-name>
      </application>
      <installer requiresElevation=INSTALLER_REQUIRES_ELEVATION acceptsCommandLineArguments=ACCEPTS_COMMAND_LINE_ARGUMENTS>
        <path>INSTALLER_PATH</path>
        <installation-path-registry-location>
          <key-name>UNIQUE_REGISTRY_PATH</key-name>
          <value-name>InstallLocation</value-name>
        </installation-path-registry-location>
      </installer>
      <launcher requiresElevation=LAUNCHER_REQUIRES_ELEVATION>
        <launch-path-registry-location>
          <key-name>UNIQUE_REGISTRY_PATH</key-name>
          <value-name>InstallLocation</value-name>
        </launch-path-registry-location>
        <executable-invocation>
          <filename>RELATIVE_PATH_TO_LAUNCHER_EXE</filename>
          <arguments>LAUNCHER_ARGS_IF_ANY</arguments>
        </executable-invocation>
      </launcher>
      <uninstaller requiresElevation=UNINSTALLER_REQUIRES_ELEVATION>
        <uninstall-path-registry-location>
          <key-name>UNIQUE_REGISTRY_PATH</key-name>
          <value-name>UninstallString</value-name>
        </uninstall-path-registry-location>
      </uninstaller>
    </play-publishing-config>

    请替换以下内容:

    • PACKAGE_NAME:游戏的软件包名称。 这是将与您的游戏相关联的唯一标识符。例如 com.yourcompany.yourgame。 软件包名称必须遵循以下规则:
      • 必须至少包含两段(一个或多个点号)。
      • 每段必须以字母开头。
      • 所有字符必须为字母数字或下划线 ([a-zA-Z0-9_])。
    • VERSION_NAME:游戏的版本字符串。这可以是任意字符串,但必须在您游戏的所有已上传 WAB 中保持唯一。例如:1.01.0.1-beta2025.11.24v1.rc1

      • INSTALLER_REQUIRES_ELEVATION:指示是否需要以管理员身份运行安装程序可执行文件才能完成安装过程。

        • “true”:以管理员身份运行可执行文件。
        • “false”:以当前用户身份运行可执行文件。
      • ACCEPTS_COMMAND_LINE_ARGUMENTS:一个布尔值,用于指示安装程序是否可以接受命令行实参来启用自动播放功能。此字段是可选字段,默认值为 false。如需了解详情,请参阅启用自动播放

      • INSTALLER_PATH:WAB 中安装程序文件的路径。此路径可以是绝对路径,也可以是相对于 Play 发布配置父目录的相对路径。例如,path\to\test\installer。 请务必使用 Authenticode 和代码签名为游戏的安装程序可执行文件签名。

      • UNIQUE_REGISTRY_PATH:Windows 注册表键路径。 此路径必须相对于注册表配置单元(例如 HKEY_LOCAL_MACHINEHKEY_CURRENT_USER)提供;请勿在路径字符串中包含配置单元名称。例如,如果安装程序写入到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName,则仅指定 Software\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName。Google Play 游戏电脑版会在多个配置单元下搜索此路径,以找到启动和卸载所需的值。

        INSTALLER_PATH 中指定的可执行文件必须创建这些注册表项。在安装完成之前,必须创建 installation-path-registry-locationlaunch-path-registry-locationuninstall-path-registry-location 下指定的注册表项和值名称对。虽然示例中使用了 InstallLocationUninstallString,但您可以在这些 <value-name> 标记中指定任何名称,只要安装程序为这三个名称创建相应的注册表条目即可。 Google Play 游戏电脑版会使用这些值来启动和卸载游戏。如果游戏使用启动器,则此路径必须指向包含启动器安装信息的注册表键,并且由 launch-path-registry-location 指定的注册表条目中的值必须指向启动器的目录。

        此路径在用户机器上必须是唯一的。例如:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName

        如果您的游戏安装程序是 64 位 Windows 上运行的 32 位应用,Windows 会使用注册表重定向HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node 下写入注册表条目。例如,对 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName 的写入会重定向到 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\YourUniqueName

      • LAUNCHER_REQUIRES_ELEVATION:指示启动器或游戏可执行文件是否需要在每次启动时以管理员身份运行。

        • “true”:以管理员身份运行可执行文件。
        • “false”:以当前用户身份运行可执行文件。
      • RELATIVE_PATH_TO_LAUNCHER_EXE:安装目录中启动器或游戏可执行文件的路径。必须包含启动器或游戏可执行文件名。例如,如果启动器或游戏文件名为 mygame.exe,且位于 {INSTALL_DIR}\Resources\mygame.exe 下,则必须将 Resources\mygame.exe 填写在此路径中。

      • LAUNCHER_ARGS_IF_ANY:需要传递到启动器或游戏中的任何命令行实参。 此条目是可选的。

        • 如果可执行文件关联了多个实参,则需要用空格分隔这些实参。
        • 如果可执行文件需要,则需要在实参前添加“--”或“-”。
      • UNINSTALLER_REQUIRES_ELEVATION:指示是否需要以管理员身份运行卸载程序可执行文件才能完成卸载过程。

        • “true”:以管理员身份运行可执行文件。
        • “false”:以当前用户身份运行可执行文件。

    Play 发布配置文件示例

    假设有一款名为 MyGame 的游戏,其游戏安装程序为 game_installer.exe,游戏启动器为 launcher.exe。该示例还展示了如何使用 CDATA。 play_publishing_config.xml 的示例内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <play-publishing-config version="1.0">
      <application>
        <!-- The package name for your game. -->
        <package-name>com.mycompany.mygame</package-name>
        <!-- The game's version string. -->
        <version-name>1.0.0</version-name>
      </application>
      <!-- If requiresElevation is "true", installer runs as Administrator
           and a UAC prompt is displayed. This is required for system-wide
           installs (e.g., to Program Files) or writing to HKLM. -->
      <!-- If acceptsCommandLineArguments is "true", the installer must
           be able to accept command-line arguments to enable the auto-play
           feature. -->
      <installer requiresElevation="true" acceptsCommandLineArguments="true">
        <!-- Path to your installer executable. -->
        <path>game_installer.exe</path>
        <!-- The registry location where the installer writes the installation path. -->
        <installation-path-registry-location>
          <!-- Registry key path (typically under HKLM or HKCU).
               game_installer.exe MUST create this key. -->
          <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySystemWideUniqueKey</key-name>
          <!-- game_installer.exe, specified in <path>, creates the registry
               value called 'InstallLocation' within
               SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySystemWideUniqueKey
               by the time it exits. -->
          <value-name>InstallLocation</value-name>
        </installation-path-registry-location>
      </installer>
    
      <!-- If requiresElevation is "true", launcher runs as Administrator
           and a UAC prompt is displayed on every game launch. -->
      <launcher requiresElevation="true">
        <!-- Specifies the registry location where Google Play Games reads the installation path
             in order to launch the game. -->
        <launch-path-registry-location >
          <!-- Registry key path (typically under HKLM or HKCU) where
               the launch path can be found. -->
          <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySystemWideUniqueKey</key-name>
          <!-- Google Play Games reads the installation directory from this
               registry value, for example InstallLocation, to launch the game. -->
          <value-name>InstallLocation</value-name>
        </launch-path-registry-location>
        <executable-invocation>
          <!-- Game executable or launcher filename, relative to the
               directory path specified in the InstallLocation registry value. -->
          <filename>launcher.exe</filename>
          <!-- Optional arguments to pass to the executable.
               CDATA is used here to avoid issues with special characters
               like & or >. -->
          <arguments><![CDATA[arg1&arg2>arg3]]></arguments>
        </executable-invocation>
      </launcher>
    
      <!-- If requiresElevation is "true", uninstaller runs as
           Administrator and a UAC prompt is displayed for uninstall. -->
      <uninstaller requiresElevation="true">
        <!-- Registry key where Google Play Games finds the
             uninstallation command. -->
        <uninstall-path-registry-location>
          <!-- Registry key path (typically under HKLM or HKCU) where
               uninstall command can be found. -->
          <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySystemWideUniqueKey</key-name>
          <!-- game_installer.exe also creates the registry value, for example, 'UninstallString'
               within SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MySystemWideUniqueKey,
               containing the command Google Play Games executes to uninstall
               the game. -->
          <value-name>UninstallString</value-name>
        </uninstall-path-registry-location>
      </uninstaller>
    </play-publishing-config>
    
  3. 在 Windows 命令行或 PowerShell 中运行 Play 发布工具。

    playpublishingtool.exe build-installer-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
    

    如需覆盖同名的现有 WAB 文件,请使用 --force 实参。

    playpublishingtool.exe build-installer-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
    

    替换以下内容:

    • PLAY_PUBLISHING_CONFIG_PATH:Play 发布配置的路径。例如 path\to\play_publishing_config.xml
    • WAB_OUTPUT_PATH:WAB 文件的路径。 例如 path\to\output_bundle.wab

    如何使用 Play 发布工具

    假设您在当前工作目录中拥有 Play 发布工具二进制文件 playpublishingtool.exe、Play 发布配置 play_publishing_config.xml 和游戏安装程序 game_installer.exe

    您当前的工作目录应如下所示:

    .\
    ├── game_installer.exe
    ├── play_publishing_config.xml
    ├── playpublishingtool.exe
    

    如需在同一目录中创建名为 installer_bundle.wab 的 WAB,命令如下所示:

    playpublishingtool.exe build-installer-bundle --input=play_publishing_config.xml --output=installer_bundle.wab
    

    使用 --force 实参时,命令如下所示:

    playpublishingtool.exe build-installer-bundle --input=play_publishing_config.xml --output=installer_bundle.wab --force
    

    成功后,您应该会看到类似如下所示的输出:

    Successfully built the installer bundle at installer_bundle.wab
    

    在以下文件夹中找到 WAB 文件:

      .\
      ├── game_installer.exe
      ├── installer_bundle.wab
      ├── play_publishing_config.xml
      ├── playpublishingtool.exe
    

    在安装 PC 本地游戏时启用自动播放功能(可选)

    在 Google Play Games 电脑版中,您可以启用“自动播放”功能,该功能会在安装过程完成后立即自动启动游戏。此功能可让玩家直接进入游戏,并在 Google Play Games 电脑版生态系统中完成身份验证,从而提供无缝的用户体验。

    运作方式

    启用该功能后,Google Play Games 电脑版将使用命令行实参将会话令牌传递给第三方 (3P) 安装程序进程。然后,安装程序负责提取此令牌,并使用该令牌在经过身份验证的上下文中启动游戏可执行文件。

    前提条件

    如需使用此功能,您的第三方安装程序必须能够处理命令行实参。

    实施步骤

    1. 在 Play 发布配置中启用自动播放

      如需选择启用此功能,请在 play_publishing_config.xml 中将 acceptsCommandLineArguments 属性添加到 <installer> 元素。

      play_publishing_config.xml 内容的摘录示例:

           <installer requiresElevation="true" acceptsCommandLineArguments="true">
              <path>path/to/installer.exe</path>
              <installation-path-registry-location>
                <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\key</key-name>
                <value-name>InstallPath</value-name>
              </installation-path-registry-location>
           </installer>
      • 属性:acceptsCommandLineArguments
      • 类型:Boolean
      • 默认值:false
      • 行为:如果设置为 true,GPG 会在执行安装程序时将会话令牌附加到命令行实参。
    2. 在安装程序中处理会话令牌

      当安装程序由 GPG 客户端启动时,它将收到会话令牌作为命令行实参。

      • 实参格式:--g_session_token=<TOKEN>

      您必须执行以下操作:

      • 提取:安装程序必须解析命令行实参,以检索令牌字符串。
      • 传播:如果您的安装流程涉及启动辅助启动器或游戏进程,则安装程序负责将会话令牌安全地传递给使用 SDK 的最终游戏进程。
      • 启动:使用提供的会话令牌启动游戏可执行文件。这可确保游戏在经过身份验证的 GPG 上下文中运行。否则,InitializeSDK 将会失败,玩家需要重新启动游戏。
    3. 错误处理和回退

      • 令牌检索:如果 GPG 因任何原因无法生成或传递会话令牌(例如,令牌生成失败),安装过程仍会继续。不过,您的安装程序将启动,但不会使用 --g_session_token 实参。
      • 稳健性:安装程序应设计为能够处理会话令牌缺失的情况。在这种情况下,安装程序应继续执行标准安装;您不应触发自动启动游戏,因为 InitializeSDK 无论如何都会失败。
      • 安装程序错误:您需负责确保安装程序及其启动的游戏序列的稳健性和错误处理能力。GPG 无法控制启动安装程序后在安装程序内发生的过程。

使用 Play 管理中心发布游戏

为游戏成功创建 WAB 后,将其上传到 Play 管理中心,并管理其设置和要求。请按以下步骤发布游戏:

添加“Google Play 游戏电脑版”设备规格

只有在首次发布游戏时,才需要执行此步骤。

  1. 在 Play 管理中心左侧菜单中,依次选择测试和发布 > 设置 > 高级设置直接链接)。
  2. 前往设备规格标签页,然后从 + 添加设备规格下拉菜单中添加 Google Play Games on PC

  3. 点击右侧与 Google Play 游戏电脑版设备规格对应的管理按钮。

  4. 选择为您的 Windows app bundle 游戏使用专用轨道选项。

  5. 点击保存,然后在确认对话框中再次点击保存

开启自管式发布模式

如需开启自管式发布模式,请按以下步骤操作。

  1. 发布概览页面上的自管式发布部分中,点击开启自管式发布模式
  2. 此时会出现一个对话框。将相应轨道的自管式发布模式切换为开启
  3. 点击保存

上传 WAB 文件

如需上传 WAB 文件,请按以下步骤操作:

  1. 在 Play 管理中心的左侧菜单中,依次选择测试和发布 > 高级设置直接链接)。
  2. 高级设置页面中,点击设备规格标签页。
  3. 设备规格标签页中,点击 + 添加设备规格,然后选择 Google Play 游戏电脑版进行添加。
  4. Google Play 游戏电脑版部分,点击管理
  5. 选择为您的 Windows app bundle 游戏使用专用轨道
  6. 点击保存
  7. 在 Play 管理中心的左侧菜单中,依次选择测试和发布 > 正式版直接链接)。
  8. 正式版页面中,从“设备规格”下拉菜单中选择仅限 Google Play 游戏电脑版 (Windows)
  9. Windows 应用软件包标签页中,点击修改,然后上传 WAB 文件。

配置 Windows PC 要求

如需配置 Windows PC 要求,请执行以下操作:

  1. 在 Play 管理中心的左侧菜单中,依次选择扩大用户群 > 商店发布 > 商店设置直接链接)。
  2. 电脑要求部分,点击右侧的修改按钮。
  3. 更新相应字段,然后点击保存

配置应用内购图片

这是一个可选步骤。 如需配置应用内购图片,请执行以下操作:

  1. 在 Play 管理中心的左侧菜单中,依次选择扩大用户群 > 商店发布 > 商品详情直接链接)。
  2. 商品详情标签页的默认商品详情部分中,点击右侧的 ->(箭头)按钮。系统会将您转到默认商品详情页面。
  3. 前往 Google Play 游戏电脑版部分,然后在 Google Play 游戏电脑版 (Windows) 应用内购买图片中上传图片。
  4. 点击保存

将更改内容送审

  1. 在 Play 管理中心的左侧菜单中,选择发布概览
  2. 更改内容尚未送审部分中,点击将更改内容送审

当审核团队批准您的更改后,用户便可在 Google Play 上发现您的游戏。