Z tego dokumentu dowiesz się, jak opublikować grę w Grach Google Play na PC za pomocą zarządzanej instalacji w Google Play.
W przypadku zarządzanej instalacji w Google 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 Windowsa (WAB).
Zanim zaczniesz
Zintegruj pakiet SDK do gier Google Play ze swoją grą.
Pakowanie gry jako pliku WAB
Aby utworzyć plik WAB instalacji zarządzanej w Google Play, wykonaj te czynności:
Pobierz narzędzie do publikowania w Google Play. To narzędzie możesz uruchomić w wierszu poleceń systemu Windows lub w Powershell.
Utwórz plik konfiguracji publikowania w Google 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ład:com.yourcompany.yourgame. Nazwa pakietu musi być zgodna z tymi regułami:- Musi zawierać co najmniej 2 segmenty (co najmniej 1 kropkę).
- Każdy segment musi zaczynać się od litery.
- 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 wśród wszystkich przesłanych plików WAB w przypadku Twojej gry. Przykłady: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 z tego folderu z wyjątkiem tych, które zostały wymienione w wykluczeniach. Ścieżka może być bezwzględna lub względna względem katalogu zawierającego plikplay_publishing_config.xml.exclusions: (Opcjonalnie) określa ścieżki 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żka 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 dla konkretnych plików lub plików pasujących do wzorca wyrażenia regularnego.FILE_ATTRIBUTE_VALUE: może przyjmować 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żywaj tej opcji w przypadku plików, które muszą zostać zaktualizowane, ale po instalacji mogą być modyfikowane na urządzeniu. Podczas aktualizacji system pobiera cały nowy plik i zastępuje nim zainstalowaną wersję. Jeśli podczas sprawdzania integralności instalacji ten plik różni się od zainstalowanej wersji, instalacja nie jest uznawana za uszkodzoną.
file-path: wskazuje pliki dla tego atrybutu. W każdym elemenciefile-attributemożesz umieścić wiele elementówfile-path. Każdą ścieżkę można przedstawić na 2 sposoby:- Jako ścieżka pliku: ścieżka do pliku, z którym chcesz powiązać ten atrybut.
- Jako ciąg wyrażenia regularnego: wszystkie pliki pasujące do ciągu 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ń. Element<arguments>służy do przekazywania argumentów do pliku wykonywalnego określonego w atrybutach<launch-command>,<install-operation>lub<uninstall-operation>. Każde użycie elementu<arguments>dotyczy tylko pliku wykonywalnego, przy którym jest zdefiniowany, co pozwala określać różne argumenty dla różnych plików wykonywalnych.- Jeśli plik wykonywalny ma wiele argumentów, rozdziel je spacjami.
- Jeśli plik wykonywalny tego wymaga, przed argumentami umieść znak
--lub-. Przykład:<arguments>--package_name --version_name</arguments>
lifecycle-operations: (Opcjonalnie) Działania niestandardowe, które mają być wykonywane podczas instalacji lub odinstalowywania gry.install-operation: działanie, które ma zostać wykonane po zainstalowaniu gry. Możesz określić 2 rodzaje operacji instalacji:execute-fileiupdate-registry.uninstall-operation: działanie, które ma zostać wykonane przed odinstalowaniem gry.update-registrysą automatycznie przywracane podczas odinstalowywania.INSTALL_OPERATION_REQUIRES_ELEVATION: wskazuje, czy operacja instalacji wymaga uprawnień administratora.- „true”: uruchom jako administrator.
- „false”: uruchom jako bieżący użytkownik. Jest to ustawienie domyślne, jeśli nie zostanie określone.
UNINSTALL_OPERATION_REQUIRES_ELEVATION: wskazuje, czy operacja odinstalowania wymaga uprawnień administratora.- „true”: uruchom jako administrator.
- „false”: uruchom jako bieżący użytkownik. Jest to ustawienie domyślne, jeśli nie zostanie określone.
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 zostać uruchomiony przed odinstalowaniem.
update-registry: tworzy lub aktualizuje wpis w rejestrze systemu Windows.BASE_KEY: określa klucz główny, który ma być używany w rejestrze systemu Windows. Dozwolone wartości:HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_PERFORMANCE_DATAiHKEY_USERS. Podczas wykonywania operacjiupdate-registryustaw wartość parametrurequiresElevation="true"w elemencie nadrzędnyminstall-operationna podstawie użytego parametrubaseKey:HKEY_LOCAL_MACHINElubHKEY_CURRENT_CONFIG: ustawrequiresElevation="true".HKEY_CURRENT_USER:requiresElevation="true"nie jest potrzebny.HKEY_CLASSES_ROOT: ustawrequiresElevation="true"tylko wtedy, gdy zapisujesz dane w sekcjach dotyczących całego komputera. Nie jest to wymagane w przypadku sekcji dotyczących poszczególnych użytkowników.HKEY_USERS: zawiera profile wszystkich użytkowników. Ustaw wartośćrequiresElevation="true", gdy modyfikujesz profile inne niż profil bieżącego użytkownika (np. innych użytkowników lub.DEFAULT).
SUB_KEY_PATH: ścieżka do konkretnego klucza w rejestrze systemu Windows, zagnieżdżonego w głównym kluczubaseKey.VALUE_NAME: określa nazwę wpisu danych, który chcesz zmodyfikować w wyznaczonym podkluczu.REGISTRY_VALUE_TYPE: ten atrybut określa typ danych wartości zapisywanej w rejestrze. Obsługiwane wartości toSTRINGw przypadku ciągu znaków lubDWORDw przypadku liczby 32-bitowej.VALUE_TEXT: dane do zapisania w kluczu rejestru.
Jak używać wyrażeń regularnych
W tagach
file-pathmożesz używać wyrażeń regularnych w składni RE2, aby zastosować wykluczenia lub atrybuty plików do grupy plików. Pamiętaj, aby używać ukośników prawych/jako separatorów katalogów i zmieniać znaczenie specjalnych znaków wyrażeń regularnych za pomocą ukośnika lewego\. Na przykład użyj znaku\., aby dopasować kropkę., lub znaku\d, aby dopasować cyfrę.Oto kilka typowych przykładów:
- Dopasowywanie wszystkich plików z określonym rozszerzeniem (np. .log) w dowolnym katalogu
Użyj znaku
.*\.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 znaku
temp/.*, aby dopasować wszystkie ścieżki, które zaczynają się odtemp/, np.temp/data.txtlubtemp/saves/file.sav.<file-path>temp/.*</file-path>
- Dopasowywanie plików pasujących 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 symbolu
.*/cache/.*, aby dopasować pliki w dowolnym katalogu o nazwiecache, np.game/cache/file.txtlubtemp/cache/other.log.<file-path>.*/cache/.*</file-path>
- Dopasowywanie plików 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>
- Dopasowywanie plików z określonym rozszerzeniem w określonych katalogach (np. .ogg w music/ lub sfx/)
Użyj znaku
(music|sfx)/.*\.ogg, aby dopasować wszystkie.oggpliki znajdujące się w katalogachmusic/lubsfx/, ale nie w innych miejscach. Pasuje domusic/level1.ogglubsfx/explosion.ogg, ale nie dovoice/intro.ogg.<file-path>(music|sfx)/.*\.ogg</file-path>
Przykładowy plik konfiguracji publikowania w Google Play
Oto przykład
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 Google Play w wierszu poleceń systemu Windows lub w powłoce 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 Google Play. Na przykład:path\to\play_publishing_config.xml.WAB_OUTPUT_PATH: ścieżka do pliku WAB. Na przykład:path\to\output_bundle.wab.
Jak korzystać z narzędzia do publikowania w Google Play
Jeśli w bieżącym katalogu roboczym masz pliki
playpublishingtool.exe,play_publishing_config.xmligame_files/:.\ ├── game_files/ ├── play_publishing_config.xml ├── playpublishingtool.exe
Aby utworzyć plik
pmi_bundle.wabw tym samym katalogu, uruchom to polecenie:playpublishingtool.exe build-bundle --input=play_publishing_config.xml --output=pmi_bundle.wab
Podczas tworzenia pakietu w terminalu będzie widoczny pasek postępu:
Building bundle: [==== ] 40%
Jeśli operacja się powiedzie, 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