Questo documento mostra come pubblicare il tuo gioco su Google Play Games su PC utilizzando l'installazione gestita di Play.
Con l'installazione gestita di Play, Google Play gestisce l'installazione, l'aggiornamento e la disinstallazione del gioco utilizzando i file e i metadati del gioco che fornisci in un file Windows App Bundle (WAB).
Prima di iniziare
Integra l'SDK Google Play Giochi nel tuo gioco.
Pacchettizzare il gioco come file WAB
Per creare un file WAB di installazione gestita di Google Play:
Scarica lo strumento di pubblicazione di Google Play. Puoi eseguire questo strumento sulla riga di comando di Windows o su PowerShell.
Crea il file di configurazione di pubblicazione di Google Play con un nome qualsiasi. Ad esempio,
play_publishing_config.xmlcon il seguente formato:<?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>
Sostituisci quanto segue:
PACKAGE_NAME: Il nome del pacchetto del tuo gioco. Si tratta dell'identificatore univoco che verrà associato al tuo gioco su Google Play. Ad esempio,com.yourcompany.yourgame. Il nome del pacchetto deve rispettare le seguenti regole:- Deve avere almeno due segmenti (uno o più punti).
- Ogni segmento deve iniziare con una lettera.
- Tutti i caratteri devono essere alfanumerici o un trattino basso (
[a-zA-Z0-9_]).
VERSION_NAME: La stringa della versione del gioco. Può essere una stringa arbitraria, ma deve essere univoca in tutti i WAB caricati per il tuo gioco. Ad esempio:1.0,1.0.1-beta,2025.11.24,v1.rc1.PATH_TO_ROOT_FOLDER: il percorso della cartella principale contenente i file di gioco. Tutti i file in questa cartella, ad eccezione di quelli menzionati nelle esclusioni, vengono aggiunti al bundle. Questo percorso può essere assoluto o relativo alla directory contenente il fileplay_publishing_config.xml.exclusions: (facoltativo) specifica i percorsi o i pattern dei file per i file all'interno diPATH_TO_ROOT_FOLDERda escludere dal bundle. Puoi includere più elementifile-pathall'interno dell'elementoexclusions. Un percorso può essere rappresentato in due modi:- Come percorso file: percorso del file da escludere.
- Come stringa regex: tutti i file che corrispondono alla stringa dell'espressione regolare vengono esclusi dal bundle. Utilizza la sintassi RE2.
file-attribute(facoltativo) definisce gli attributi per file specifici o file che corrispondono a un pattern di espressione regolare.FILE_ATTRIBUTE_VALUE: può corrispondere a uno dei seguenti:SKIP_UPDATE: durante un aggiornamento, questo attributo indica al sistema di copiare il file solo se non è già presente, conservando le modifiche a un file esistente.MODIFIED_ON_DEVICE: utilizzalo per i file che devono essere aggiornati, ma che potrebbero essere modificati sul dispositivo dopo l'installazione. Durante un aggiornamento, il sistema scarica il nuovo file completo e sovrascrive la versione installata. Se questo file è diverso dalla versione installata durante i controlli di integrità dell'installazione, l'installazione non viene considerata danneggiata.
file-path: identifica i file per questo attributo. Puoi includere più elementifile-pathall'interno di ogni elementofile-attribute. Ogni percorso può essere rappresentato in due modi:- Come percorso file: percorso del file a cui associare questo attributo.
- Come stringa regex: tutti i file che corrispondono alla stringa di espressione regolare sono associati al valore dell'attributo. Utilizza la sintassi RE2.
PATH_TO_LAUNCH_FILE: il percorso del file eseguibile utilizzato per avviare il gioco.ARGUMENTS: (Facoltativo) Argomenti della riga di comando. L'elemento<arguments>viene utilizzato per passare argomenti a un file eseguibile specificato in<launch-command>,<install-operation>o<uninstall-operation>. Ogni utilizzo dell'elemento<arguments>si applica solo all'eseguibile per cui è definito, consentendoti di specificare argomenti diversi per eseguibili diversi.- Se un eseguibile ha più argomenti, separali con uno spazio.
- Anteponi gli argomenti con
--o-se l'eseguibile lo richiede. Esempio:<arguments>--package_name --version_name</arguments>
(Facoltativo)
lifecycle-operations: azioni personalizzate da eseguire durante l'installazione o la disinstallazione del gioco.install-operation: un'azione da eseguire quando il gioco viene installato. Puoi specificare due tipi di operazioni di installazione:execute-fileeupdate-registry.uninstall-operation: Un'azione da eseguire prima della disinstallazione del gioco. Le operazioniupdate-registryvengono ripristinate automaticamente durante la disinstallazione.INSTALL_OPERATION_REQUIRES_ELEVATION: indica se l'operazione di installazione deve essere eseguita con privilegi amministrativi.- "true": esegui come amministratore.
- "false": esegui come utente corrente. Questa è l'impostazione predefinita se non specificata.
UNINSTALL_OPERATION_REQUIRES_ELEVATION: indica se l'operazione di disinstallazione deve essere eseguita con privilegi amministrativi.- "true": esegui come amministratore.
- "false": esegui come utente corrente. Questa è l'impostazione predefinita se non specificata.
operation-identifier: una stringa univoca per identificare uninstall-operation.execute-file: esegue un file eseguibile.PATH_TO_INSTALL_EXECUTE_FILE: percorso di un eseguibile da eseguire durante l'installazione.PATH_TO_UNINSTALL_EXECUTE_FILE: percorso di un eseguibile da eseguire prima della disinstallazione.
update-registry: crea o aggiorna una voce del registro di Windows.BASE_KEY: definisce la chiave root da utilizzare nel registro di Windows. Valori accettati:HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_PERFORMANCE_DATAeHKEY_USERS. Quando esegui un'operazioneupdate-registry, impostarequiresElevation="true"sull'elemento principaleinstall-operationin base abaseKeyutilizzato:HKEY_LOCAL_MACHINEoHKEY_CURRENT_CONFIG: impostarequiresElevation="true".HKEY_CURRENT_USER:requiresElevation="true"non è necessario.HKEY_CLASSES_ROOT: impostarequiresElevation="true"solo se scrivi in sezioni a livello di computer; non è necessario per le sezioni specifiche dell'utente.HKEY_USERS: Contiene i profili di tutti gli utenti. ImpostarequiresElevation="true"quando modifichi profili diversi da quello dell'utente corrente (ad es. altri utenti o.DEFAULT).
SUB_KEY_PATH: rappresenta il percorso di una chiave specifica all'interno del Registro di Windows, nidificata sotto la chiave principalebaseKey.VALUE_NAME: specifica il nome della voce di dati che vuoi modificare all'interno della sottochiave designata.REGISTRY_VALUE_TYPE: questo attributo specifica il tipo di dati del valore scritto nel registro. I valori supportati sonoSTRINGper una stringa oDWORDper un numero a 32 bit.VALUE_TEXT: i dati da archiviare nella chiave del registro.
Come utilizzare le espressioni regolari
Puoi utilizzare le espressioni regolari della sintassi RE2 nei tag
file-pathper applicare esclusioni o attributi di file a un gruppo di file. Ricorda di utilizzare le barre/come separatori di directory e di eseguire l'escape dei caratteri speciali delle espressioni regolari con una barra rovesciata\. Ad esempio, utilizza\.per trovare la corrispondenza con un punto letterale.o\dper trovare la corrispondenza con una cifra.Ecco alcuni esempi comuni:
- Trova tutti i file con un'estensione specifica (ad esempio .log) in qualsiasi directory
Utilizza
.*\.logper trovare una corrispondenza con qualsiasi percorso che termina con.log, ad esempiogame.logologs/errors.log.<file-path>.*\.log</file-path>
- Corrispondenza di tutti i file e le sottodirectory all'interno di una cartella specifica (ad esempio "temp")
Utilizza
temp/.*per trovare una corrispondenza con tutti i percorsi che iniziano contemp/, ad esempiotemp/data.txtotemp/saves/file.sav.<file-path>temp/.*</file-path>
- Trovare i file che corrispondono a un pattern in una cartella specifica
Utilizza
assets/level\d\.datper trovareassets/level1.dat,assets/level2.datma nonassets/other.dat.<file-path>assets/level\d\.dat</file-path>
- Corrispondenza con il nome di una cartella quando viene visualizzato in qualsiasi punto del percorso
Utilizza
.*/cache/.*per trovare una corrispondenza con i file in qualsiasi directory denominatacache, ad esempiogame/cache/file.txtotemp/cache/other.log.<file-path>.*/cache/.*</file-path>
- Corrispondenza dei file con una delle diverse estensioni (ad esempio .ini, .cfg, .sav)
Utilizza
.*\.(ini|cfg|sav)per trovare qualsiasi file che termina con.ini,.cfgo.sav, ad esempiosettings.ini,config.cfgosaves/slot1.sav.<file-path>.*\.(ini|cfg|sav)</file-path>
- Corrispondenza dei file con un'estensione specifica in directory specifiche (ad esempio, .ogg in music/ o sfx/)
Utilizza
(music|sfx)/.*\.oggper trovare una corrispondenza con qualsiasi file.oggche si trova nelle directorymusic/osfx/, ma non altrove. Corrisponde amusic/level1.oggosfx/explosion.ogg, ma non avoice/intro.ogg.<file-path>(music|sfx)/.*\.ogg</file-path>
Esempio di file di configurazione della pubblicazione su Google Play
Ecco un esempio di
play_publishing_config.xmlper un gioco chiamatoTestGame:<?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>
Esegui lo strumento di pubblicazione Play sulla riga di comando di Windows o Powershell, utilizzando il comando
build-bundle:playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
Per sovrascrivere un file WAB esistente con lo stesso nome, utilizza l'argomento
--force.playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
Sostituisci quanto segue:
PLAY_PUBLISHING_CONFIG_PATH: il percorso della configurazione di pubblicazione di Play. Ad esempio,path\to\play_publishing_config.xml.WAB_OUTPUT_PATH: il percorso del file WAB. Ad esempio,path\to\output_bundle.wab.
Come utilizzare lo strumento di pubblicazione di Play
Se hai
playpublishingtool.exe,play_publishing_config.xmle i file di gioco ingame_files/nella directory di lavoro corrente:.\ ├── game_files/ ├── play_publishing_config.xml ├── playpublishingtool.exe
Per creare
pmi_bundle.wabnella stessa directory, esegui:playpublishingtool.exe build-bundle --input=play_publishing_config.xml --output=pmi_bundle.wab
Mentre lo strumento crea il bundle, vedrai una barra di avanzamento sul terminale:
Building bundle: [==== ] 40%
In caso di esito positivo, dovresti vedere un output simile al seguente:
Building bundle: [===========] 100% Successfully built the managed install bundle at pmi_bundle.wab
Trova il file WAB nella cartella:
.\ ├── game_files/ ├── pmi_bundle.wab ├── play_publishing_config.xml ├── playpublishingtool.exe