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:
Laden Sie das Play-Publishing-Tool herunter. Sie können dieses Tool über die Windows-Befehlszeile oder PowerShell ausführen.
Erstellen Sie die Play-Veröffentlichungskonfigurationsdatei mit einem beliebigen Namen. Beispiel:
play_publishing_config.xmlmit 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 Dateiplay_publishing_config.xmlsein.exclusions: (Optional) Gibt Dateipfade oder Muster für Dateien inPATH_TO_ROOT_FOLDERan, die aus dem Bundle ausgeschlossen werden sollen. Sie können mehrerefile-path-Elemente im Elementexclusionsangeben. 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 mehrerefile-path-Elemente in jedesfile-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-fileundupdate-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 einesinstall-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_DATAundHKEY_USERS. Legen Sie beim Ausführen einesupdate-registry-VorgangsrequiresElevation="true"für das übergeordneteinstall-operationbasierend auf dem verwendetenbaseKeyfest:HKEY_LOCAL_MACHINEoderHKEY_CURRENT_CONFIG: Legen SierequiresElevation="true"fest.HKEY_CURRENT_USER:requiresElevation="true"ist nicht erforderlich.HKEY_CLASSES_ROOT: Setzen SierequiresElevation="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 SierequiresElevation="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üsselbaseKeyverschachtelt 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 sindSTRINGfür einen String oderDWORDfü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.logenden, z. B.game.logoderlogs/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 mittemp/beginnen, z. B.temp/data.txtodertemp/saves/file.sav.<file-path>temp/.*</file-path>
- Dateien abgleichen, die einem Muster in einem bestimmten Ordner entsprechen
Verwenden Sie
assets/level\d\.dat, umassets/level1.datundassets/level2.dat, aber nichtassets/other.databzugleichen.<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 Namencacheabgeglichen, z. B.game/cache/file.txtodertemp/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,.cfgoder.savabzugleichen, z. B.settings.ini,config.cfgodersaves/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)/.*\.oggwerden alle.ogg-Dateien abgeglichen, die sich entweder im Verzeichnismusic/odersfx/befinden, aber nicht an anderer Stelle. Entsprichtmusic/level1.oggodersfx/explosion.ogg, aber nichtvoice/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.xmlfür ein Spiel namensTestGame:<?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>
Führen Sie das Play-Veröffentlichungstool über die Windows-Befehlszeile oder PowerShell mit dem Befehl
build-bundleaus: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.xmlund Ihre Spieldateien ingame_files/im aktuellen Arbeitsverzeichnis befinden:.\ ├── game_files/ ├── play_publishing_config.xml ├── playpublishingtool.exe
So erstellen Sie
pmi_bundle.wabim 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