Google Play の管理対象の公開

このドキュメントでは、Play 管理インストールを使用して PC 版 Google Play Games でゲームを公開する方法について説明します。

Play Managed Installation では、Google Play は、Windows アプリバンドル(WAB)ファイルで提供されたゲームファイルとメタデータを使用して、ゲームのインストール、更新、アンインストールを管理します。

始める前に

Google Play Games SDK をゲームに統合します。

ゲームを WAB ファイルとしてパッケージ化する

Google Play Managed Installation WAB ファイルを作成する手順は次のとおりです。

  1. Google Play 公開ツールをダウンロードします。このツールは、Windows コマンドラインまたは PowerShell で実行できます。

  2. 任意の名前で Play パブリッシング構成ファイルを作成します。たとえば、次の形式の play_publishing_config.xml があります。

    <?xml version="1.0" encoding="UTF-8"?>
    <play-publishing-config version="1.0">
      <!-- Application metadata: This section contains basic information about your game. -->
      <application>
        <package-name>PACKAGE_NAME</package-name>
        <version-name>VERSION_NAME</version-name>
      </application>
    
      <!-- Game files: This section specifies which game files to include in the bundle and how to treat them. -->
      <game-files>
        <file-set>
          <root-folder-path>PATH_TO_ROOT_FOLDER</root-folder-path>
          <!-- absolute or relative to the parent directory of the config xml -->
          <!-- Exclusions: A list of files or folders to exclude from the bundle.
               This is useful for removing development files, temporary data, or redundant assets. -->
          <exclusions>
            <file-path>REGEX_PATTERN_OF_EXCLUDED_FILES</file-path>
            <file-path>PATH_TO_BE_EXCLUDED</file-path>
          </exclusions>
    
          <!-- File attributes: Define special handling for certain files during installation and updates. -->
          <file-attribute value=FILE_ATTRIBUTE_VALUE>
            <file-path>PATH_TO_FILE</file-path>
            <file-path>REGEX_PATTERN_OF_FILE_ATTRIBUTE_FILES</file-path>
          </file-attribute>
        </file-set>
      </game-files>
    
      <!-- This file represents the startup process for this game. Google Play Games for PC should start
          this process when user clicks on "Play" on this game. -->
      <launch-command>
        <path>PATH_TO_LAUNCH_FILE</path>
        <arguments>ARGUMENTS</arguments>
      </launch-command>
    
      <!-- Lifecycle operations: Custom actions to be performed during the game's installation and uninstallation. -->
      <lifecycle-operations>
        <!-- Install operations: These actions run when the game is installed. 'requiresElevation="true"'
            will trigger a UAC prompt for administrator rights. There are three types of install
            operations that can be specified. An instance of each is listed below. -->
        <install-operation requiresElevation=INSTALL_OPERATION_REQUIRES_ELEVATION>
          <operation-identifier>OPERATION_IDENTIFIER_STRING</operation-identifier>
          <execute-file>
            <path>PATH_TO_INSTALL_EXECUTE_FILE</path>
            <arguments>ARGUMENTS</arguments>
          </execute-file>
        </install-operation>
    
        <install-operation requiresElevation=INSTALL_OPERATION_REQUIRES_ELEVATION>
          <operation-identifier>OPERATION_IDENTIFIER_STRING</operation-identifier>
          <update-registry baseKey=BASE_KEY>
            <sub-key>SUB_KEY_PATH</sub-key>
            <value-name>VALUE_NAME</value-name>
            <value type=REGISTRY_VALUE_TYPE>VALUE_TEXT</value>
          </update-registry>
        </install-operation>
    
        <!-- Uninstall operations: These actions run before the game is uninstalled. -->
        <uninstall-operation requiresElevation=UNINSTALL_OPERATION_REQUIRES_ELEVATION>
          <execute-file>
            <path>PATH_TO_UNINSTALL_EXECUTE_FILE</path>
            <arguments>ARGUMENTS</arguments>
          </execute-file>
        </uninstall-operation>
      </lifecycle-operations>
    </play-publishing-config>

    以下を置き換えます。

    • PACKAGE_NAME: ゲームのパッケージ名。これは、Google Play でゲームに関連付けられる一意の識別子です。(例: com.yourcompany.yourgame)。パッケージ名は次のルールに準拠している必要があります。
      • 2 つ以上のセグメント(1 つ以上のドット)が必要
      • 各セグメントは文字で始まる必要がある
      • 使用できる文字は英数字とアンダースコア([a-zA-Z0-9_])のみ
    • VERSION_NAME: ゲームのバージョン文字列。任意の文字列を指定できますが、ゲーム用にアップロードされたすべての WAB で一意である必要があります。例: 1.01.0.1-beta2025.11.24v1.rc1
    • PATH_TO_ROOT_FOLDER: ゲームファイルを含むルートフォルダのパス。このフォルダ内のすべてのファイル(除外で指定されたファイルを除く)がバンドルに追加されます。このパスは、play_publishing_config.xml ファイルを含むディレクトリに対する絶対パスまたは相対パスにできます。

    • exclusions:(省略可)PATH_TO_ROOT_FOLDER 内のファイルのうち、バンドルから除外するファイルのファイルパスまたはパターンを指定します。exclusions 要素内には、複数の file-path 要素を含めることができます。パスは次のいずれかの方法で表すことができます。

      • ファイルパスとして: 除外するファイルへのパス。
      • 正規表現文字列として: 正規表現文字列に一致するすべてのファイルがバンドルから除外されます。RE2 構文を使用します。
    • file-attribute: (省略可)特定のファイルまたは正規表現パターンに一致するファイルの属性を定義します。

      • FILE_ATTRIBUTE_VALUE: 次のいずれかになります。
        • SKIP_UPDATE: アップデート中に、この属性は、ファイルがまだ存在しない場合にのみファイルをコピーし、既存のファイルへの変更を保持するようシステムに指示します。
        • MODIFIED_ON_DEVICE: 更新する必要があるが、インストール後にデバイスで変更できるファイルに使用します。アップデート中に、システムは新しいファイルをすべてダウンロードし、インストールされているバージョンを上書きします。このファイルがインストール時の整合性チェックでインストール済みのバージョンと異なる場合でも、インストールが破損しているとは見なされません。
      • file-path: この属性のファイルを識別します。各 file-attribute 要素内に複数の file-path 要素を含めることができます。各パスは、次の 2 つの方法のいずれかで表すことができます。
        • ファイルパスとして: この属性を関連付けるファイルへのパス。
        • 正規表現文字列として: 正規表現文字列に一致するすべてのファイルが属性値に関連付けられます。RE2 構文を使用します。
    • PATH_TO_LAUNCH_FILE: ゲームの起動に使用される実行可能ファイルのパス。

    • ARGUMENTS: (省略可)コマンドライン引数。<arguments> 要素は、<launch-command><install-operation>、または <uninstall-operation> で指定された実行可能ファイルに引数を渡すために使用されます。<arguments> 要素の各使用は、定義されている実行可能ファイルにのみ適用されます。これにより、実行可能ファイルごとに異なる引数を指定できます。

      • 実行可能ファイルに複数の引数がある場合は、スペースで区切ります。
      • 実行可能ファイルで必要な場合は、引数の先頭に -- または - を追加します。例:
        <arguments>--package_name --version_name</arguments>
    • lifecycle-operations:(省略可)ゲームのインストールまたはアンインストール中に実行するカスタム アクション。

      • install-operation: ゲームがインストールされたときに実行するアクション。インストール オペレーションには、execute-fileupdate-registry の 2 種類を指定できます。
      • uninstall-operation: ゲームがアンインストールされる前に実行するアクション。アンインストール中に update-registry オペレーションは自動的に元に戻されます。
      • INSTALL_OPERATION_REQUIRES_ELEVATION: インストール オペレーションを管理者権限で実行する必要があるかどうかを示します。

        • "true": 管理者として実行します。
        • 「false」: 現在のユーザーとして実行します。指定しない場合、これがデフォルトになります。
      • UNINSTALL_OPERATION_REQUIRES_ELEVATION: アンインストール オペレーションを管理者権限で実行する必要があるかどうかを示します。

        • "true": 管理者として実行します。
        • 「false」: 現在のユーザーとして実行します。指定しない場合、これがデフォルトになります。
      • operation-identifier: install-operation を識別する一意の文字列。

      • execute-file: 実行可能ファイルを実行します。

        • PATH_TO_INSTALL_EXECUTE_FILE: インストール中に実行する実行可能ファイルへのパス。
        • PATH_TO_UNINSTALL_EXECUTE_FILE: アンインストールの前に実行する実行可能ファイルへのパス。
      • update-registry: Windows レジストリ エントリを作成または更新します。

        • BASE_KEY: Windows レジストリで使用するルートキーを定義します。指定できる値: HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_PERFORMANCE_DATAHKEY_USERSupdate-registry オペレーションを実行するときは、使用する baseKey に基づいて、親 install-operationrequiresElevation="true" を設定します。
          • HKEY_LOCAL_MACHINE または HKEY_CURRENT_CONFIG: requiresElevation="true" を設定します。
          • HKEY_CURRENT_USER: requiresElevation="true" は不要です。
          • HKEY_CLASSES_ROOT: マシン全体のセクションに書き込む場合にのみ requiresElevation="true" を設定します。ユーザー固有のセクションでは必要ありません。
          • HKEY_USERS: すべてのユーザーのプロファイルが含まれます。現在のユーザー以外のプロファイル(他のユーザーや .DEFAULT など)を変更する場合は、requiresElevation="true" を設定します。
        • SUB_KEY_PATH: これは、メインの baseKey の下にネストされた Windows レジストリ内の特定のキーのパスを表します。
        • VALUE_NAME: 指定されたサブキー内で変更するデータ エントリの名前を指定します。
        • REGISTRY_VALUE_TYPE: この属性は、レジストリに書き込まれる値のデータ型を指定します。サポートされている値は、文字列の場合は STRING、32 ビット数値の場合は DWORD です。
        • VALUE_TEXT: レジストリ キーに保存されるデータ。

    正規表現の使用方法

    file-path タグで RE2 構文の正規表現を使用すると、除外またはファイル属性をファイルのグループに適用できます。ディレクトリ区切り文字にはスラッシュ / を使用し、正規表現の特殊文字はバックスラッシュ \ でエスケープしてください。たとえば、\. を使用してリテラル ドット . を照合したり、\d を使用して数字を照合したりします。

    一般的な例を以下に示します。

    • 任意のディレクトリにある特定の拡張子(.log など)のすべてのファイルに一致させる

      .*\.log を使用して、.log で終わるすべてのパス(game.loglogs/errors.log など)を照合します。

      <file-path>.*\.log</file-path>
    • 特定のフォルダ(「temp」など)内のすべてのファイルとサブディレクトリを照合する

      temp/.* を使用して、temp/ で始まるすべてのパス(temp/data.txttemp/saves/file.sav など)に一致させます。

      <file-path>temp/.*</file-path>
    • 特定のフォルダ内のパターンに一致するファイルを照合する

      assets/level\d\.dat を使用して、assets/level1.datassets/level2.dat と一致させますが、assets/other.dat とは一致させません。

      <file-path>assets/level\d\.dat</file-path>
    • パスの任意の場所にフォルダ名が含まれている場合に一致させる

      .*/cache/.* を使用して、game/cache/file.txttemp/cache/other.log など、cache という名前のディレクトリにあるファイルを照合します。

      <file-path>.*/cache/.*</file-path>
    • 複数の拡張子(.ini、.cfg、.sav など)のいずれかを持つファイルに一致させる

      .*\.(ini|cfg|sav) を使用して、.ini.cfg.sav で終わるファイル(settings.iniconfig.cfgsaves/slot1.sav など)を照合します。

      <file-path>.*\.(ini|cfg|sav)</file-path>
    • 特定のディレクトリ内の特定の拡張子のファイルに一致させる(例: music/ または sfx/ 内の .ogg)

      (music|sfx)/.*\.ogg を使用して、music/ ディレクトリまたは sfx/ ディレクトリの下にある .ogg ファイルを照合します。music/level1.ogg または sfx/explosion.ogg と一致しますが、voice/intro.ogg とは一致しません。

      <file-path>(music|sfx)/.*\.ogg</file-path>

    Google Play の公開構成ファイルの例

    TestGame というゲームの play_publishing_config.xml の例を次に示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <play-publishing-config version="1.0">
      <application>
        <package-name>com.test.package</package-name>
        <version-name>1.0</version-name>
      </application>
    
      <game-files>
        <file-set>
          <root-folder-path>C:\Users\Username\game-files</root-folder-path>
          <exclusions>
            <file-path>mock_game\d\.exe</file-path> <!-- exclude files using a regex -->
            <file-path>deprecated_graphics</file-path> <!-- exclude a folder -->
            <file-path>.*\.log</file-path> <!-- recursively exclude all files with .log extension -->
          </exclusions>
    
          <file-attribute value="SKIP_UPDATE">
            <file-path>settings.ini</file-path>
          </file-attribute>
    
          <file-attribute value="MODIFIED_ON_DEVICE">
            <file-path>game_assets\d\.zip</file-path> <!-- define the path using regex -->
          </file-attribute>
        </file-set>
      </game-files>
    
      <launch-command>
        <path>launcher_test_game.exe</path>
        <arguments>--launch-arg</arguments> <!-- optional -->
      </launch-command>
    
      <lifecycle-operations>
        <install-operation requiresElevation="true">
          <operation-identifier>elevated-execute-file</operation-identifier>
          <execute-file>
            <path>install_file.exe</path>
            <arguments>--arg</arguments> <!-- optional -->
          </execute-file>
        </install-operation>
    
        <install-operation requiresElevation="true">
          <operation-identifier>elevated-update-registry</operation-identifier>
          <update-registry baseKey="HKEY_LOCAL_MACHINE">
            <sub-key>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TestGame</sub-key>
            <value-name>InstallLocation</value-name>
            <value type="STRING">C:\Program Files\TestGame</value>
          </update-registry>
        </install-operation>
    
        <uninstall-operation requiresElevation="true">
          <execute-file>
            <path>uninstall.exe</path>
            <arguments>--test-arg</arguments> <!-- optional -->
          </execute-file>
        </uninstall-operation>
      </lifecycle-operations>
    </play-publishing-config>
  3. build-bundle コマンドを使用して、Windows コマンドラインまたは PowerShell で Play パブリッシング ツールを実行します。

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

    同じ名前の既存の WAB ファイルを上書きするには、--force 引数を使用します。

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

    次のように置き換えます。

    • PLAY_PUBLISHING_CONFIG_PATH: Google Play の公開構成へのパス。たとえば、path\to\play_publishing_config.xml のように指定できました。
    • WAB_OUTPUT_PATH: WAB ファイルへのパス。たとえば、path\to\output_bundle.wab のように指定できました。

    Google Play の公開ツールの使用方法

    現在の作業ディレクトリの game_files/playpublishingtool.exeplay_publishing_config.xml、ゲームファイルがある場合:

    .\
    ├── game_files/
    ├── play_publishing_config.xml
    ├── playpublishingtool.exe
    

    同じディレクトリに pmi_bundle.wab を作成するには、次のコマンドを実行します。

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

    ツールがバンドルをビルドしている間、ターミナルに進行状況バーが表示されます。

    Building bundle: [====       ] 40%
    

    成功すると、次のような出力が表示されます。

    Building bundle: [===========] 100%
    Successfully built the managed install bundle at pmi_bundle.wab
    

    次のフォルダで WAB ファイルを探します。

      .\
      ├── game_files/
      ├── pmi_bundle.wab
      ├── play_publishing_config.xml
      ├── playpublishingtool.exe