In diesem Dokument erfahren Sie, wie Sie Ihr Spiel mit der verwalteten Installation von Play auf Google Play Games auf dem PC veröffentlichen.
Bei der verwalteten Installation von Play verwaltet Google Play die Installation, Aktualisierung und Deinstallation des Spiels mithilfe der Spieldateien und Metadaten, die Sie in einer Windows App Bundle-Datei (WAB) 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 von Play:
Laden Sie das Play-Veröffentlichungstool herunter. Sie können dieses Tool in der Windows-Befehlszeile oder in PowerShell ausführen.
Erstellen Sie die Konfigurationsdatei für die Play-Veröffentlichung mit einem beliebigen Namen. Beispiel:
play_publishing_config.xmlmit folgendem 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 Folgendes:
PACKAGE_NAME: Der Paketname für Ihr Spiel. Dies ist die eindeutige ID, die Ihrem Spiel bei Google Play zugewiesen wird. Beispiel:com.yourcompany.yourgame. Der Paketname muss die folgenden Regeln erfüllen:- Er muss mindestens zwei Segmente haben (ein oder mehrere Punkte).
- 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, muss aber für alle hochgeladenen WAB-Dateien 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 in dasexclusions-Element einfügen. Ein Pfad kann auf zwei Arten dargestellt werden:- Als Dateipfad: Pfad zur auszuschließenden Datei.
- Als regulärer Ausdruck: Alle Dateien, die mit dem regulären Ausdruck übereinstimmen, werden aus dem Bundle ausgeschlossen. Verwenden Sie die RE2-Syntax.
file-attribute: (Optional) Definiert Attribute für bestimmte Dateien oder Dateien, die einem regulären Ausdruck entsprechen.FILE_ATTRIBUTE_VALUE: Kann einer der folgenden Werte sein:SKIP_UPDATE: Bei einer Aktualisierung weist dieses Attribut das System an, die Datei nur zu kopieren, wenn sie noch nicht vorhanden ist. Änderungen an einer vorhandenen Datei bleiben erhalten.MODIFIED_ON_DEVICE: Verwenden Sie dieses Attribut 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 bei einer Aktualisierung. 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 zur Datei, mit der dieses Attribut verknüpft werden soll.
- Als regulärer Ausdruck: Alle Dateien, die mit dem regulären Ausdruck übereinstimmen, werden mit dem Attributwert verknüpft. Verwenden Sie die RE2-Syntax.
PATH_TO_LAUNCH_FILE: Pfad zur ausführbaren Datei, mit der das Spiel gestartet wird.ARGUMENTS: (Optional) Befehlszeilenargumente. Das<arguments>Element wird verwendet, um Argumente an eine ausführbare Datei zu übergeben, die in<launch-command>,<install-operation>oder<uninstall-operation>angegeben ist. Jede Verwendung des Elements<arguments>gilt nur für die ausführbare Datei, neben der es definiert ist. So können Sie verschiedene Argumente für verschiedene ausführbare Dateien angeben.- Wenn eine ausführbare Datei mehrere Argumente hat, trennen Sie sie 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 wird, wenn das Spiel installiert wird. Sie können zwei Arten von Installationsvorgängen angeben:execute-fileundupdate-registry.uninstall-operation: Eine Aktion, die ausgeführt wird, bevor das Spiel deinstalliert wird.update-registry-Vorgänge werden während der Deinstallation automatisch rückgängig gemacht.INSTALL_OPERATION_REQUIRES_ELEVATION: Gibt an, ob der Installationsvorgang mit Administratorrechten ausgeführt werden muss.- "true": Als Administrator ausführen.
- "false": Als aktueller Nutzer ausführen. Dies ist die Standardeinstellung, wenn nichts angegeben ist.
UNINSTALL_OPERATION_REQUIRES_ELEVATION: Gibt an, ob der Deinstallationsvorgang mit Administratorrechten ausgeführt werden muss.- "true": Als Administrator ausführen.
- "false": Als aktueller Nutzer ausführen. Dies ist die Standardeinstellung, wenn nichts angegeben ist.
operation-identifier: Ein eindeutiger String zur Identifizierung einesinstall-operation-Elements.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. Wenn Sie einenupdate-registry-Vorgang ausführen, legen SierequiresElevation="true"für den übergeordneteninstall-operationbasierend auf dem verwendetenbaseKeyfest:HKEY_LOCAL_MACHINEoderHKEY_CURRENT_CONFIG: Legen SierequiresElevation="true"fest.HKEY_CURRENT_USER:requiresElevation="true"ist nicht erforderlich.HKEY_CLASSES_ROOT: Legen SierequiresElevation="true"nur fest, wenn Sie in maschinenweite 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 der 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 escapen Sie Sonderzeichen für reguläre Ausdrücke mit einem Rückstrich\. Verwenden Sie beispielsweise\., um einen wörtlichen Punkt.zu finden, oder\d, um eine Ziffer zu finden.Hier einige häufige Beispiele:
- Alle Dateien mit einer bestimmten Erweiterung (z. B. „.log“) in einem beliebigen Verzeichnis finden
Verwenden Sie
.*\.log, um alle Pfade zu finden, die mit.logenden, z. B.game.logoderlogs/errors.log.<file-path>.*\.log</file-path>
- Alle Dateien und Unterverzeichnisse in einem bestimmten Ordner finden (z. B. „temp“)
Verwenden Sie
temp/.*, um alle Pfade zu finden, die mittemp/beginnen, z. B.temp/data.txtodertemp/saves/file.sav.<file-path>temp/.*</file-path>
- Dateien finden, die einem Muster in einem bestimmten Ordner entsprechen
Verwenden Sie
assets/level\d\.dat, umassets/level1.dat,assets/level2.datzu finden, aber nichtassets/other.dat.<file-path>assets/level\d\.dat</file-path>
- Einen Ordnernamen finden, wenn er an einer beliebigen Stelle im Pfad vorkommt
Verwenden Sie
.*/cache/.*, um Dateien in einem beliebigen Verzeichnis mit dem Namencachezu finden, z. B.game/cache/file.txtodertemp/cache/other.log.<file-path>.*/cache/.*</file-path>
- Dateien mit einer von mehreren Erweiterungen finden (z. B. „.ini“, „.cfg“, „.sav“)
Verwenden Sie
.*\.(ini|cfg|sav), um alle Dateien zu finden, die mit.ini,.cfg, oder.savenden, z. B.settings.ini,config.cfg, odersaves/slot1.sav.<file-path>.*\.(ini|cfg|sav)</file-path>
- Dateien mit einer bestimmten Erweiterung in bestimmten Verzeichnissen finden (z. B. „.ogg“ in „music/“ oder „sfx/“)
Verwenden Sie
(music|sfx)/.*\.ogg, um alle.oggDateien zu finden, die sich 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 eine
play_publishing_config.xml-Datei fü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 in der Windows-Befehlszeile oder in PowerShell mit dem Befehl
build-bundleaus:playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
Verwenden Sie das Argument
--force, um eine vorhandene WAB-Datei mit demselben Namen zu überschreiben.playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
Ersetzen Sie Folgendes:
PLAY_PUBLISHING_CONFIG_PATH: Der Pfad zur Konfiguration für die Play-Veröffentlichung. 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
Führen Sie Folgendes aus, um
pmi_bundle.wabim selben Verzeichnis zu erstellen:playpublishingtool.exe build-bundle --input=play_publishing_config.xml --output=pmi_bundle.wab
Während das Tool das Bundle erstellt, sehen Sie eine Fortschrittsanzeige im Terminal:
Building bundle: [==== ] 40%
Bei Erfolg sollte eine Ausgabe ähnlich der folgenden angezeigt werden:
Building bundle: [===========] 100% Successfully built the managed install bundle at pmi_bundle.wab
Die WAB-Datei finden Sie im Ordner:
.\ ├── game_files/ ├── pmi_bundle.wab ├── play_publishing_config.xml ├── playpublishingtool.exe