e92c85cfe2 | ||
---|---|---|
src | ||
templates | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
SECURITY.md | ||
SUPPORT.md |
README.md
Project GameStoreBroker
A .NET 5.0 cross platform application and library that enables game developers to upload Xbox and PC game packages to Partner Center.
The application can be used directly with the input config for ease of use, or the API library could be consumed by your own application.
Prerequisite
- The product must already exist in partner center before uploading.
- The branch/sandbox must already exist in partner center before uploading.
- Build the solution from source, or download a release.
- The product needs to be published at least once manually through UX.
Step 1: Creating your app in Azure.
- Go to https://portal.azure.com and log in with your Azure account.
- Under Azure services find App registrations.
- Under App registrations click New registration.
- Enter in your name.
- Choose your Supported account types.
- Click Register at the bottom of the page.
- Under your newly created App navigate to Client credentials and create a New client secret. Note the clientID, tenantID, and your Secret key for future use.
- It is recommended that you add your team as backup to maintain your app going forward.
- Navigate into the app, on the left under manage find owners and add your back up.
Step 2: Add your app in Partner Center and give it the proper permissions.
- Log in to Partner Center with a manager level account.
- Click on the cogs wheel on the top right of the page and navigate to Account settings.
- On the left navigation pane click on User management then Azure AD applications.
- Click on Create Azure AD application and search for your Azure created app in the search pane on the right, check the box for your app and click Next.
- On the top tab click on Customize permissions.
- Under Product-level permissions search for your product and apply the Read/write permission under Publishing.
- NOTE We will be changing this with future iterations of the tool to more accurately apply permissions.
Step 3: Configure your wrapper using a config file
- Create or edit the configuration file with your favorite editor and update the following fields
To Upload Xvc Package:
- operationName (UploadXvcPackage)
- productId or bigId (From Partner Center)
- branchFriendlyName (name of the branch/sandbox from Partner Center) or flightName (name of the flight from Partner Center)
- XBOX RECOMMEND: In order to facilitate a quick and efficient development process, while at the same time ensuring that you are maintaining control over your production releases, we at Xbox highly recommend that you only use this feature on QA and dev branches and import packages to your Main branch in Partner Center, after they’ve been pre-certified.
- gameAssets:
- packageFilePath (Location of the game package)
- ekbFilePath (Location of the EKB file)
- subvalFilePath (Location of the SubVal File)
- SymbolsFilePath (Location of Symbole File - optional)
- discLayoutFilePath (Location of Disc Layout File - optional)
- aadAuthInfo:
- clientId (From Azure Portal)
- tenantId (From Azure Portal)
To Upload Uwp Package:
- operationName (UploadUwpPackage)
- productId or bigId (From Partner Center)
- branchFriendlyName (name of the branch/sandbox from Partner Center) or flightName (name of the flight from Partner Center)
- XBOX RECOMMEND: In order to facilitate a quick and efficient development process, while at the same time ensuring that you are maintaining control over your production releases, we at Xbox highly recommend that you only use this feature on QA and dev branches and import packages to your Main branch in Partner Center, after they’ve been pre-certified.
- packageFilePath (Location of the Uwp game package)
- aadAuthInfo:
- clientId (From Azure Portal)
- tenantId (From Azure Portal)
Step 4: Fire Away
-
Open powershell via the start menu.
-
Navigate to the root of your wrapper directory and run the following command:
.\GameStoreBroker.exe <OperationName> -c <ConfigFile> -s <ClientSecret>
-
Operations:
GetProduct Gets metadata of the product UploadUwpPackage Uploads Uwp game package UploadXvcPackage Uploads Xvc game package and assets RemovePackages Removes all game packages and assets from a branch ImportPackages Imports all game packages from a branch to a destination branch
-
Parameters:
-c, --ConfigFile <ConfigFile> (REQUIRED) The location of the config file -f, --ConfigFileFormat <Ini|Json|Xml> The format of the config file [default: Json] -s, --ClientSecret <ClientSecret> The client secret of the AAD app -v, --Verbose Log verbose messages such as http calls -l, --LogFile <LogFile> The location of the log file -?, -h, --help Show help and usage information
Q & A
Question: Can I use the API directly?
Answer: You may and documentation will be written however there will be no support. Please reference the document and the wrapper source for call patterns.
Question: Can I use one App name for multiple products?
Answer: In theory this should work, but currently it is not. We're working with the Partner Center Accounts Team to identify the issue.
Question: Will this have delta uploads?
Answer: Delta uploads was out of scope for the initial target of the project - however this has been commited for future implementation.
Question: Will I need to do anything different for delta uploads to work?
Answer: You will not - this will all be done at the service layer and client shouldn't have to be touched.
Question: Will the wrapper support other actions?
Answer: We will indeed! Deleting/removing packages along with publishes.
Question: Could I use this wrapper to automate and update other parts of partner center apart from uploads?
Answer: Unfortunately not right now and our only scope was uploads. The API teams are working to further expand this out to other parts of partner center.
Question: If I want to change how the wrapper works who do I reach out to?
Answer: It's completely open source and you can change the wrapper as you wish! Use, adjust and contribute!
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.