Z tego dokumentu dowiesz się, jak opublikować grę w Grach Google Play na PC za pomocą instalacji zarządzanej przez Play.
W przypadku instalacji zarządzanej przez Play Google Play zarządza instalacją, aktualizacją i odinstalowywaniem gry za pomocą plików gry i metadanych, które podajesz w pliku pakietu aplikacji na Windows (WAB).
Zanim zaczniesz
Zintegruj pakiet SDK Gier Google Play ze swoją grą.
Spakuj grę jako plik WAB
Aby utworzyć plik WAB instalacji zarządzanej przez Play:
Pobierz narzędzie do publikowania w Play. Możesz uruchomić to narzędzie w wierszu poleceń Windows lub w Powershell.
Utwórz plik konfiguracyjny publikowania w Play o dowolnej nazwie. Na przykład
play_publishing_config.xmlw tym formacie:<?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>
Zastąp te elementy:
PACKAGE_NAME: nazwa pakietu gry. Jest to unikalny identyfikator, który będzie powiązany z Twoją grą w Google Play. Na przykładcom.yourcompany.yourgame. Nazwa pakietu musi być zgodna z tymi regułami:- Musi mieć co najmniej 2 segmenty (1 lub więcej kropek).
- Każdy segment musi zaczynać się literą.
- Wszystkie znaki muszą być alfanumeryczne lub podkreśleniem (
[a-zA-Z0-9_]).
VERSION_NAME: ciąg znaków wersji gry. Może to być dowolny ciąg znaków, ale musi być unikalny we wszystkich przesłanych plikach WAB Twojej gry. Na przykład:1.0,1.0.1-beta,2025.11.24,v1.rc1.PATH_TO_ROOT_FOLDER: ścieżka do folderu głównego zawierającego pliki gry. Do pakietu zostaną dodane wszystkie pliki w tym folderze z wyjątkiem tych, które zostały wymienione w wykluczeniach. Ta ścieżka może być bezwzględna lub względna w stosunku do katalogu zawierającego plikplay_publishing_config.xml.exclusions: (opcjonalnie) określa ścieżki plików lub wzorce plików wPATH_TO_ROOT_FOLDER, które mają zostać wykluczone z pakietu. W elemencieexclusionsmożesz umieścić kilka elementówfile-path. Ścieżkę można przedstawić na 2 sposoby:- Jako ścieżkę pliku: ścieżka do pliku, który ma zostać wykluczony.
- Jako ciąg znaków wyrażenia regularnego: wszystkie pliki pasujące do ciągu znaków wyrażenia regularnego są wykluczane z pakietu. Użyj składni RE2.
file-attribute: (opcjonalnie) określa atrybuty konkretnych plików lub plików pasujących do wzorca wyrażenia regularnego.FILE_ATTRIBUTE_VALUE: może mieć jedną z tych wartości:SKIP_UPDATE: podczas aktualizacji ten atrybut informuje system, aby skopiował plik tylko wtedy, gdy nie jest on jeszcze obecny, zachowując wszelkie zmiany w istniejącym pliku.MODIFIED_ON_DEVICE: użyj tej opcji w przypadku plików, które muszą zostać zaktualizowane, ale po instalacji mogą zostać zmodyfikowane na urządzeniu. Podczas aktualizacji system pobiera cały nowy plik i zastępuje nim zainstalowaną wersję. Jeśli ten plik różni się od zainstalowanej wersji podczas sprawdzania integralności instalacji, instalacja nie jest uznawana za uszkodzoną.
file-path: identyfikuje pliki dla tego atrybutu. W każdym elemenciefile-attributemożesz umieścić kilka elementówfile-path. Każdą ścieżkę można przedstawić na 2 sposoby:- Jako ścieżkę pliku: ścieżka do pliku, z którym ma być powiązany ten atrybut.
- Jako ciąg znaków wyrażenia regularnego: wszystkie pliki pasujące do ciągu znaków wyrażenia regularnego są powiązane z wartością atrybutu. Użyj składni RE2.
PATH_TO_LAUNCH_FILE: ścieżka do pliku wykonywalnego używanego do uruchamiania gry.ARGUMENTS: (opcjonalnie) argumenty wiersza poleceń. Elementu<arguments>używa się do przekazywania argumentów do pliku wykonywalnego określonego w<launch-command>,<install-operation>, lub<uninstall-operation>. Każde użycie elementu<arguments>dotyczy tylko pliku wykonywalnego, obok którego jest zdefiniowany, co pozwala określić różne argumenty dla różnych plików wykonywalnych.- Jeśli plik wykonywalny ma kilka argumentów, rozdziel je spacjami.
- Jeśli plik wykonywalny tego wymaga, dodaj przed argumentami
--lub-. Przykład:<arguments>--package_name --version_name</arguments>
lifecycle-operations: (opcjonalnie) niestandardowe działania, które mają być wykonywane podczas instalacji lub odinstalowywania gry.install-operation: działanie, które ma być wykonywane podczas instalacji gry. Możesz określić 2 typy operacji instalacji:execute-fileiupdate-registry.uninstall-operation: działanie, które ma być wykonywane przed odinstalowaniem gry. Operacjeupdate-registrysą automatycznie przywracane podczas odinstalowywania.INSTALL_OPERATION_REQUIRES_ELEVATION: wskazuje, czy operacja instalacji musi być wykonywana z uprawnieniami administratora.- „false”: uruchom jako bieżący użytkownik. Jest to wartość domyślna, jeśli nie została określona.
UNINSTALL_OPERATION_REQUIRES_ELEVATION: wskazuje, czy operacja odinstalowywania musi być wykonywana z uprawnieniami administratora.- „false”: uruchom jako bieżący użytkownik. Jest to wartość domyślna, jeśli nie została określona.
operation-identifier: unikalny ciąg znaków identyfikującyinstall-operation.execute-file: uruchamia plik wykonywalny.PATH_TO_INSTALL_EXECUTE_FILE: ścieżka do pliku wykonywalnego, który ma być uruchamiany podczas instalacji.PATH_TO_UNINSTALL_EXECUTE_FILE: ścieżka do pliku wykonywalnego, który ma być uruchamiany przed odinstalowaniem.
update-registry: tworzy lub aktualizuje wpis w rejestrze Windows.BASE_KEY: określa klucz główny, który ma być używany w rejestrze Windows. Dopuszczalne wartości:HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_PERFORMANCE_DATAiHKEY_USERS. Podczas wykonywania operacjiupdate-registryustawrequiresElevation="true"w nadrzędnejinstall-operationna podstawie używanegobaseKeyużywanego:HKEY_LOCAL_MACHINElubHKEY_CURRENT_CONFIG: UstawrequiresElevation="true".HKEY_CURRENT_USER:requiresElevation="true"nie jest wymagane.HKEY_CLASSES_ROOT: ustawrequiresElevation="true"tylko wtedy, gdy zapisujesz w sekcjach obejmujących cały komputer; nie jest to wymagane w przypadku sekcji specyficznych dla użytkownika.HKEY_USERS: zawiera profile wszystkich użytkowników. UstawrequiresElevation="true"podczas modyfikowania profili innych niż profil bieżącego użytkownika (np. innych użytkowników lub.DEFAULT).
SUB_KEY_PATH: ścieżka do konkretnego klucza w rejestrze Windows, zagnieżdżonego w głównymbaseKey.VALUE_NAME: nazwa wpisu danych, który chcesz zmodyfikować w wyznaczonym podkluczu.REGISTRY_VALUE_TYPE: atrybut określający typ danych wartości zapisywanej w rejestrze. Obsługiwane wartości toSTRINGw przypadku ciągu znaków iDWORDw przypadku liczby 32-bitowej.VALUE_TEXT: dane, które mają być przechowywane w kluczu rejestru.
Jak używać wyrażeń regularnych
W tagach
file-pathmożesz używać wyrażeń regularnych w składni RE2, aby stosować wykluczenia lub atrybuty plików do grupy plików. Pamiętaj, aby używać ukośników/jako separatorów katalogów i aby zmieniać znaczenie znaków specjalnych wyrażeń regularnych za pomocą ukośnika odwrotnego\. Na przykład użyj\., aby dopasować kropkę., lub\d, aby dopasować cyfrę.Oto kilka typowych przykładów:
- Dopasuj wszystkie pliki z określonym rozszerzeniem (np. .log) w dowolnym katalogu
Użyj
.*\.log, aby dopasować dowolną ścieżkę kończącą się na.log, np.game.loglublogs/errors.log.<file-path>.*\.log</file-path>
- Dopasuj wszystkie pliki i podkatalogi w określonym folderze (np. „temp”)
Użyj
temp/.*, aby dopasować wszystkie ścieżki zaczynające się odtemp/, np.temp/data.txtlubtemp/saves/file.sav.<file-path>temp/.*</file-path>
- Dopasuj pliki pasujące do wzorca w określonym folderze
Użyj
assets/level\d\.dat, aby dopasowaćassets/level1.dat,assets/level2.dat, ale nieassets/other.dat.<file-path>assets/level\d\.dat</file-path>
- Dopasuj nazwę folderu, gdy pojawi się w dowolnym miejscu ścieżki
Użyj
.*/cache/.*, aby dopasować pliki w dowolnym katalogu o nazwiecache, np.game/cache/file.txtlubtemp/cache/other.log.<file-path>.*/cache/.*</file-path>
- Dopasuj pliki z jednym z kilku rozszerzeń (np. .ini, .cfg, .sav)
Użyj
.*\.(ini|cfg|sav), aby dopasować dowolny plik kończący się na.ini,.cfglub.sav, np.settings.ini,config.cfglubsaves/slot1.sav.<file-path>.*\.(ini|cfg|sav)</file-path>
- Dopasuj pliki z określonym rozszerzeniem w określonych katalogach (np. .ogg w music/ lub sfx/)
Użyj
(music|sfx)/.*\.ogg, aby dopasować wszystkie.oggpliki, które znajdują się w katalogachmusic/lubsfx/, ale nie w innych. Pasuje domusic/level1.ogglubsfx/explosion.ogg, ale nie dovoice/intro.ogg.<file-path>(music|sfx)/.*\.ogg</file-path>
Przykładowy plik konfiguracyjny publikowania w Play
Oto przykład pliku
play_publishing_config.xmldla gry o nazwieTestGame:<?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>
Uruchom narzędzie do publikowania w Play w wierszu poleceń Windows lub w Powershell za pomocą polecenia
build-bundle:playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
Aby zastąpić istniejący plik WAB o tej samej nazwie, użyj argumentu
--force.playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
Zastąp te elementy:
PLAY_PUBLISHING_CONFIG_PATH: ścieżka do konfiguracji publikowania w Play. Na przykładpath\to\play_publishing_config.xml.WAB_OUTPUT_PATH: ścieżka do pliku WAB. Na przykładpath\to\output_bundle.wab.
Jak korzystać z narzędzia do publikowania w Play
Jeśli w bieżącym katalogu roboczym masz pliki
playpublishingtool.exe,play_publishing_config.xmli pliki gry wgame_files/:.\ ├── game_files/ ├── play_publishing_config.xml ├── playpublishingtool.exe
Aby utworzyć plik
pmi_bundle.wabw tym samym katalogu, uruchom:playpublishingtool.exe build-bundle --input=play_publishing_config.xml --output=pmi_bundle.wab
Gdy narzędzie będzie tworzyć pakiet, w terminalu zobaczysz pasek postępu:
Building bundle: [==== ] 40%
Po zakończeniu zobaczysz dane wyjściowe podobne do tych:
Building bundle: [===========] 100% Successfully built the managed install bundle at pmi_bundle.wab
Znajdź plik WAB w folderze:
.\ ├── game_files/ ├── pmi_bundle.wab ├── play_publishing_config.xml ├── playpublishingtool.exe