Google Play の管理対象の公開

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

Play 管理対象インストールを使用すると、Google Play は、Windows App Bundle(WAB)ファイルで提供されたゲームファイルとメタデータを使用して、ゲームのインストール、更新、アンインストールを管理します。

始める前に

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

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

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 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 要素を含めることができます。各パスは次のいずれかの方法で表すことができます。
        • ファイルパスとして: この属性を関連付けるファイルへのパス。
        • 正規表現文字列として: 正規表現文字列に一致するすべてのファイルが 属性値に関連付けられます。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」: 現在のユーザーとして実行します。指定しない場合のデフォルトです。
        <install-operation><uninstall-operation><execute-file>requiresElevation="true"
      • 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_USERS
            オペレーションを実行する場合は、親の に基づいて、使用する を設定します。update-registryrequiresElevation="true"install-operationbaseKey
          • 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/.* を使用すると、cache という名前のディレクトリ内のファイルに一致します。たとえば、game/cache/file.txttemp/cache/other.log などです。

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

      .*\.(ini|cfg|sav) を使用すると、.ini.cfg、または .sav で終わる任意のファイルに一致します。たとえば、settings.iniconfig.cfg、または saves/slot1.sav などです。

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

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

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

    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: Play 公開構成へのパス。例: path\to\play_publishing_config.xml
    • WAB_OUTPUT_PATH: WAB ファイルへのパス。 例: path\to\output_bundle.wab

    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