OpenMiInk/third_party/krita-ci-utilities/microsoft-store/README.md
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

8 KiB

submit-to-microsoft-store.py

A client for submitting KDE apps to the Microsoft Store

Setup

Create a virtual environment and install the requirements.

python3 -m venv .venv-ms-store
. .venv-ms-store/bin/activate
pip3 install -r requirements.txt

Usage

Usually, this script will be run by the CI. The CI needs to provide the credentials for accessing the Microsoft Store submission API in the environment variables MICROSTORE_TENANT_ID, MICROSTORE_CLIENT_ID, MICROSTORE_CLIENT_SECRET. See Complete prerequisites for using the Microsoft Store submission API for information how to get those credentials.

To submit an app run

python3 submit-to-microsoft-store.py <appstreamId> <appxuploadFile>

where appstreamId is the AppStream ID of the app (e.g. org.kde.neochat or org.kde.okular without the trailing .desktop) and appxuploadFile is the path of an .appxupload built by the CI.

If the AppStream data does not yet contain the URL for the Microsoft Store (e.g. before the first public release), then you have to provide the Store ID of the app with the --store-id option.

Notes

The first submission has to be made via the Microsoft Partner Center to fill out the age restriction questionnaire. There are also other values that cannot be changed with the submission API or that cannot be filled automatically with information from the AppStream data, e.g. the list of features. It might make sense to make the app not publicly visible initially. Once everything looks good for a public release, a new submission can simply be created via the Partner Center which just changes the visibility to public.

For a test run which doesn't change anything in the Microsoft Store use the --dry-run option. This will output the data that would be submitted.
Warning: The output can contain confidential information, e.g. if you have provided test credentials in the notes for submission.

To prepare a new submission without committing it use the --skip-commit option. This allows you to have a final look at the submission in the Partner Center before you commit it from there.

The script updates the information of the last published submission with the information found in the AppStream data of the app (including translations). The Store ID is extracted from the Microsoft Store URL of the app which is stored in the AppStream data as custom value with key KDE::windows_store. The script will add a store listing for each language with a non-empty Description in the AppStream data. By default, existing listing values are overwritten with corresponding AppStream values for a language. To keep existing non-empty values use the --keep option with a comma-separated list of the values to keep.

Listing Value AppStream Value Notes
copyrightAndTrademarkInfo -
description description Uses value for language.
keywords keywords Uses values for language.
licenseTerms project_license
supportContact url type="contact"
websiteUrl url type="homepage"
features -
releaseNotes releases Uses description of first release for language (with fallback to English).
images screenshots Uses all screenshot of type default; marks files with "mobile" in the name as MobileScreenshot; uses caption for language as image description.
recommendedHardware -
minimumHardware -
title - must be a reserved name; we keep what's there or use the primaryName of the Application resource
shortDescription summary Uses value for language.
shortTitle -
sortTitle -
voiceTitle -
devStudio developer_name Uses value for language (with fallback to English).

See Base listing resource for a description of the listing values. Listing values which have no equivalent in the AppStream data can be filled out manually in the Microsoft Partner Center. If you want to make sure that those values are not overwritten once AppStream provides this information and the script has been updated, then add those values to the list of values to keep.