Verwaltete Veröffentlichung bei Google Play

In diesem Dokument erfahren Sie, wie Sie Ihr Spiel mit der Play Managed Installation bei Google Play Games auf dem PC veröffentlichen.

Bei der verwalteten Installation über Google Play werden die Installation, Aktualisierung und Deinstallation des Spiels über Google Play verwaltet. Dazu werden die Spieldateien und Metadaten verwendet, die Sie in einer Windows App Bundle-Datei (WAB-Datei) bereitstellen.

Hinweis

Integrieren Sie das Google Play Games SDK in Ihr Spiel.

Spiel als WAB-Datei verpacken

So erstellen Sie eine WAB-Datei für die verwaltete Installation über Google Play:

  1. Laden Sie das Play-Publishing-Tool herunter. Sie können dieses Tool über die Windows-Befehlszeile oder PowerShell ausführen.

  2. Erstellen Sie die Play-Veröffentlichungskonfigurationsdatei mit einem beliebigen Namen. Beispiel: play_publishing_config.xml mit dem folgenden Format:

    <?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>

    Ersetzen Sie dabei Folgendes:

    • PACKAGE_NAME: Der Paketname Ihres Spiels. Dies ist die eindeutige Kennung, die Ihrem Spiel bei Google Play zugewiesen wird. Beispiel: com.yourcompany.yourgame. Der Paketname muss den folgenden Regeln entsprechen:
      • Er muss mindestens zwei Segmente (einen oder mehrere Punkte) enthalten.
      • Jedes Segment muss mit einem Buchstaben beginnen.
      • Alle Zeichen müssen alphanumerisch oder ein Unterstrich ([a-zA-Z0-9_]) sein.
    • VERSION_NAME: Der Versionsstring des Spiels. Dies kann ein beliebiger String sein, er muss jedoch für alle hochgeladenen WABs für Ihr Spiel eindeutig sein. Beispiel: 1.0, 1.0.1-beta, 2025.11.24, v1.rc1.
    • PATH_TO_ROOT_FOLDER: Der Pfad zum Stammordner mit Ihren Spieldateien. Alle Dateien in diesem Ordner, mit Ausnahme der in den Ausschlüssen genannten, werden dem Bundle hinzugefügt. Dieser Pfad kann absolut oder relativ zum Verzeichnis mit der Datei play_publishing_config.xml sein.

    • exclusions: (Optional) Gibt Dateipfade oder Muster für Dateien in PATH_TO_ROOT_FOLDER an, die aus dem Bundle ausgeschlossen werden sollen. Sie können mehrere file-path-Elemente im Element exclusions angeben. Ein Pfad kann auf zwei Arten dargestellt werden:

      • Als Dateipfad: Pfad zur auszuschließenden Datei.
      • Als Regex-String: Alle Dateien, die mit dem Regex-String übereinstimmen, werden aus dem Bundle ausgeschlossen. Verwenden Sie die RE2-Syntax.
    • file-attribute: (Optional) Definiert Attribute für bestimmte Dateien oder Dateien, die einem Muster für reguläre Ausdrücke entsprechen.

      • FILE_ATTRIBUTE_VALUE: Kann eines der Folgenden sein:
        • SKIP_UPDATE: Bei einem Update wird das System durch dieses Attribut angewiesen, die Datei nur zu kopieren, wenn sie noch nicht vorhanden ist. Änderungen an einer vorhandenen Datei bleiben erhalten.
        • MODIFIED_ON_DEVICE: Verwenden Sie diese Option für Dateien, die aktualisiert werden müssen, aber nach der Installation auf dem Gerät geändert werden können. Das System lädt die vollständige neue Datei herunter und überschreibt die installierte Version während eines Updates. Wenn sich diese Datei bei der Überprüfung der Installationsintegrität von der installierten Version unterscheidet, gilt die Installation nicht als beschädigt.
      • file-path: Gibt Dateien für dieses Attribut an. Sie können mehrere file-path-Elemente in jedes file-attribute-Element einfügen. Jeder Pfad kann auf zwei Arten dargestellt werden:
        • Als Dateipfad: Pfad zu der Datei, der dieses Attribut zugeordnet werden soll.
        • Als Regex-String: Alle Dateien, die mit dem Regex-String übereinstimmen, werden dem Attributwert zugeordnet. Verwenden Sie die RE2-Syntax.
    • PATH_TO_LAUNCH_FILE: Pfad zur ausführbaren Datei, die zum Starten des Spiels verwendet wird.

    • ARGUMENTS: (Optional) Befehlszeilenargumente. Mit dem Element <arguments> werden Argumente an eine ausführbare Datei übergeben, die in <launch-command>, <install-operation> oder <uninstall-operation> angegeben ist. Jede Verwendung des <arguments>-Elements gilt nur für die ausführbare Datei, für die es definiert ist. So können Sie unterschiedliche Argumente für verschiedene ausführbare Dateien angeben.

      • Wenn ein ausführbares Programm mehrere Argumente hat, trennen Sie diese durch ein Leerzeichen.
      • Stellen Sie Argumenten -- oder - voran, wenn dies für die ausführbare Datei erforderlich ist. Beispiel:
        <arguments>--package_name --version_name</arguments>
    • lifecycle-operations: (Optional) Benutzerdefinierte Aktionen, die während der Installation oder Deinstallation des Spiels ausgeführt werden sollen.

      • install-operation: Eine Aktion, die ausgeführt werden soll, wenn das Spiel installiert ist. Sie können zwei Arten von Installationsvorgängen angeben: execute-file und update-registry.
      • uninstall-operation: Eine Aktion, die vor der Deinstallation des Spiels ausgeführt werden soll. update-registry-Vorgänge werden bei der Deinstallation automatisch rückgängig gemacht.
      • INSTALL_OPERATION_REQUIRES_ELEVATION: Gibt an, ob für den Installationsvorgang Administratorberechtigungen erforderlich sind.

        • „true“: Als Administrator ausführen.
        • „false“: Als aktueller Nutzer ausführen. Wenn nicht angegeben, ist dies der Standardwert.
      • UNINSTALL_OPERATION_REQUIRES_ELEVATION: Gibt an, ob für die Deinstallation Administratorberechtigungen erforderlich sind.

        • „true“: Als Administrator ausführen.
        • „false“: Als aktueller Nutzer ausführen. Wenn nicht angegeben, ist dies der Standardwert.
      • operation-identifier: Ein eindeutiger String zur Identifizierung eines install-operation.

      • execute-file: Führt eine ausführbare Datei aus.

        • PATH_TO_INSTALL_EXECUTE_FILE: Pfad zu einer ausführbaren Datei, die während der Installation ausgeführt werden soll.
        • PATH_TO_UNINSTALL_EXECUTE_FILE: Pfad zu einer ausführbaren Datei, die vor der Deinstallation ausgeführt werden soll.
      • update-registry: Erstellt oder aktualisiert einen Windows-Registrierungseintrag.

        • BASE_KEY: Definiert den Stammschlüssel, der in der Windows-Registrierung verwendet werden soll. Zulässige Werte: HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_PERFORMANCE_DATA und HKEY_USERS. Legen Sie beim Ausführen eines update-registry-Vorgangs requiresElevation="true" für das übergeordnete install-operation basierend auf dem verwendeten baseKey fest:
          • HKEY_LOCAL_MACHINE oder HKEY_CURRENT_CONFIG: Legen Sie requiresElevation="true" fest.
          • HKEY_CURRENT_USER: requiresElevation="true" ist nicht erforderlich.
          • HKEY_CLASSES_ROOT: Setzen Sie requiresElevation="true" nur, wenn Sie in computerweite Abschnitte schreiben. Für nutzerspezifische Abschnitte ist dies nicht erforderlich.
          • HKEY_USERS: Enthält Profile für alle Nutzer. Legen Sie requiresElevation="true" fest, wenn Sie andere Profile als das des aktuellen Nutzers ändern, z.B. andere Nutzer oder .DEFAULT.
        • SUB_KEY_PATH: Dies ist der Pfad zu einem bestimmten Schlüssel in der Windows-Registrierung, der unter dem Hauptschlüssel baseKey verschachtelt ist.
        • VALUE_NAME: Gibt den Namen des Dateneintrags an, den Sie im angegebenen Unterschlüssel ändern möchten.
        • REGISTRY_VALUE_TYPE: Dieses Attribut gibt den Datentyp des Werts an, der in die Registrierung geschrieben wird. Unterstützte Werte sind STRING für einen String oder DWORD für eine 32-Bit-Zahl.
        • VALUE_TEXT: Daten, die im Registrierungsschlüssel gespeichert werden sollen.

    Reguläre Ausdrücke verwenden

    Sie können reguläre Ausdrücke in RE2-Syntax in file-path-Tags verwenden, um Ausschlüsse oder Dateiattribute auf eine Gruppe von Dateien anzuwenden. Verwenden Sie Schrägstriche / als Verzeichnistrennzeichen und maskieren Sie Sonderzeichen für reguläre Ausdrücke mit einem umgekehrten Schrägstrich \. Verwenden Sie beispielsweise \., um eine wörtliche Übereinstimmung mit einem Punkt . zu erzielen, oder \d, um eine Übereinstimmung mit einer Ziffer zu erzielen.

    Hier einige Beispiele:

    • Alle Dateien mit einer bestimmten Erweiterung (z. B. .log) in einem beliebigen Verzeichnis abgleichen

      Verwenden Sie .*\.log, um alle Pfade abzugleichen, die mit .log enden, z. B. game.log oder logs/errors.log.

      <file-path>.*\.log</file-path>
    • Alle Dateien und Unterverzeichnisse in einem bestimmten Ordner abgleichen (z. B. „temp“)

      Mit temp/.* werden alle Pfade abgeglichen, die mit temp/ beginnen, z. B. temp/data.txt oder temp/saves/file.sav.

      <file-path>temp/.*</file-path>
    • Dateien abgleichen, die einem Muster in einem bestimmten Ordner entsprechen

      Verwenden Sie assets/level\d\.dat, um assets/level1.dat und assets/level2.dat, aber nicht assets/other.dat abzugleichen.

      <file-path>assets/level\d\.dat</file-path>
    • Ordnername abgleichen, wenn er an einer beliebigen Stelle im Pfad vorkommt

      Mit .*/cache/.* werden Dateien in einem beliebigen Verzeichnis mit dem Namen cache abgeglichen, z. B. game/cache/file.txt oder temp/cache/other.log.

      <file-path>.*/cache/.*</file-path>
    • Dateien mit einer von mehreren Erweiterungen abgleichen (z. B. .ini, .cfg, .sav)

      Verwenden Sie .*\.(ini|cfg|sav), um Dateien mit der Endung .ini, .cfg oder .sav abzugleichen, z. B. settings.ini, config.cfg oder saves/slot1.sav.

      <file-path>.*\.(ini|cfg|sav)</file-path>
    • Dateien mit einer bestimmten Erweiterung in bestimmten Verzeichnissen abgleichen (z. B. .ogg in music/ oder sfx/)

      Mit (music|sfx)/.*\.ogg werden alle .ogg-Dateien abgeglichen, die sich entweder im Verzeichnis music/ oder sfx/ befinden, aber nicht an anderer Stelle. Entspricht music/level1.ogg oder sfx/explosion.ogg, aber nicht voice/intro.ogg.

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

    Beispiel für eine Konfigurationsdatei für die Play-Veröffentlichung

    Hier ist ein Beispiel für play_publishing_config.xml für ein Spiel namens TestGame:

    <?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. Führen Sie das Play-Veröffentlichungstool über die Windows-Befehlszeile oder PowerShell mit dem Befehl build-bundle aus:

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

    Wenn Sie eine vorhandene WAB-Datei mit demselben Namen überschreiben möchten, verwenden Sie das Argument --force.

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

    Ersetzen Sie dabei Folgendes:

    • PLAY_PUBLISHING_CONFIG_PATH: Der Pfad zur Play-Veröffentlichungskonfiguration. Beispiel: path\to\play_publishing_config.xml.
    • WAB_OUTPUT_PATH: Der Pfad zur WAB-Datei. Beispiel: path\to\output_bundle.wab.

    Play-Veröffentlichungstool verwenden

    Wenn sich playpublishingtool.exe, play_publishing_config.xml und Ihre Spieldateien in game_files/ im aktuellen Arbeitsverzeichnis befinden:

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

    So erstellen Sie pmi_bundle.wab im selben Verzeichnis:

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

    Während das Tool das Bundle erstellt, wird im Terminal eine Fortschrittsanzeige angezeigt:

    Building bundle: [====       ] 40%
    

    Bei Erfolg sollte die Ausgabe in etwa so aussehen:

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

    Suchen Sie die WAB-Datei im Ordner:

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