> For the complete documentation index, see [llms.txt](https://gamelauncher.cloud/help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gamelauncher.cloud/help/launchers/microsoft-store/installer-package.md).

# Publish Store Package (EXE)

{% hint style="info" %}
**Coming soon.** The tab does not let you pick this route yet. Use [Store Package (MSIX)](https://gamelauncher.cloud/help/launchers/microsoft-store/msix-package) today, where Microsoft signs the package for you.
{% endhint %}

On this route the Store shows the listing and handles discovery, then sends players to the installer on the Game Launcher Cloud CDN, the same file your permanent download links already point at. Nothing about how your launcher builds or updates changes, and players keep receiving updates through the launcher's own self-update rather than through the Store.

Hosting is on us either way. What this route asks of you, and [Store Package (MSIX)](https://gamelauncher.cloud/help/launchers/microsoft-store/msix-package) does not, is a code signing certificate of your own and a build kept pinned for as long as the submission points at it.

## Before you start

1. **Register on Partner Center** and complete identity verification. The account is free, and so is publishing. See [Set Up Your Partner Center Account](https://gamelauncher.cloud/help/launchers/microsoft-store/partner-center-setup).
2. **Reserve your app name** in Partner Center. This cannot be done through any API.
3. **Have a code signing certificate.** The Store requires a valid Authenticode signature on the package.

{% hint style="danger" %}
Your listing has to be free, and it needs at least four screenshots, each one a direct capture of the launcher running. See [Store Requirements](https://gamelauncher.cloud/help/launchers/microsoft-store/store-requirements).
{% endhint %}

## Where to find your values

In the dashboard, open your launcher and go to **Integrations > Microsoft Store**, then choose **Store package (EXE)**. Every field below is shown there with a copy button, already filled in for your launcher.

## Filling in the Packages page

<table><thead><tr><th width="240">Partner Center field</th><th>Value</th></tr></thead><tbody><tr><td>App type</td><td><strong>EXE</strong></td></tr><tr><td>Installer parameters</td><td><code>/S</code></td></tr><tr><td>Package URL</td><td>The versioned installer URL for one specific build</td></tr><tr><td>Architecture</td><td><code>x64</code></td></tr><tr><td>Languages</td><td>The 12 languages your launcher ships</td></tr><tr><td>Installer handling</td><td><a href="https://gamelauncher.cloud/help/launchers/installer-exit-codes">Installer Exit Codes</a></td></tr></tbody></table>

{% hint style="danger" %}
**Choose EXE, not MSI.** The launcher installer is an EXE. If you select MSI, the Store runs it with `/qn`, which the installer does not recognise, so it opens the wizard and waits for a click that never comes. The install times out and the Silent install, Add or remove programs, and Bundleware checks all come back as "We could not identify".
{% endhint %}

### The package URL must be versioned

Microsoft states that "the binary on the package URL must not change after it is submitted". Use the URL of a specific build:

```
https://cdn.gamelauncher.cloud/Launchers/{launcherId}/Builds/{buildId}/YourLauncher_Installer_Windows_x64.exe
```

Never submit the `/Builds/Latest/` URL. That folder is overwritten every time you deploy, so the Store would detect a swapped binary, re-certify it, and pull your app if the new build fails certification.

When you select a build on the Microsoft Store tab, that build is **pinned**: build backup retention skips it and it cannot be deleted while it is published, so the URL you gave the Store keeps working no matter how many times you deploy afterwards.

{% hint style="info" %}
Unpin the build only after the Store submission no longer points at its package URL. Unpinning returns it to the normal retention window, where it may be deleted.
{% endhint %}

## Publisher name

Store validation rejects an Add or remove programs entry whose Publisher is blank, or that just repeats the product name. Set **Publisher name** on the Microsoft Store tab to your company's legal name, matching the publisher display name verified on your Partner Center account.

If you leave it empty, the installer falls back to your account's company name, and then to the launcher title.

The value applies to the next build you deploy, so deploy once after setting it and submit that build.

## Signing the installer

Upload your code signing certificate as a `.pfx` in the dashboard, with its password if it has one. Every installer built from that point on is signed and timestamped with it.

Signing happens during a deploy, so deploy the launcher once after saving. The dashboard warns you when the certificate is expiring or already expired, which matters because reissuing takes days and installers built with an expired certificate are effectively unsigned.

## Package validation

Microsoft runs five automated checks. You can run three of them yourself on a clean Windows machine before submitting.

{% tabs %}
{% tab title="Silent install" %}

```powershell
$p = Start-Process -FilePath .\YourLauncher_Installer_Windows_x64.exe -ArgumentList "/S" -Wait -PassThru
$p.ExitCode   # must be 0, with no window appearing
```

UAC prompts are allowed. Any other prompt is a failure.
{% endtab %}

{% tab title="Add or remove programs" %}

```powershell
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" |
  Where-Object DisplayName |
  Select-Object DisplayName, Publisher, DisplayVersion
```

Your launcher must appear with a name, a publisher, and a version. The publisher must not be blank or a copy of the name. Check `HKLM:\SOFTWARE\...` instead if your launcher installs for all users.
{% endtab %}

{% tab title="Bundleware" %}
Run the silent install, then compare the list of installed programs before and after. Your launcher must add exactly one entry. More than one means the Store treats it as bundleware.
{% endtab %}
{% endtabs %}

The remaining two checks, Malware and Code sign, are static analysis on the installer file. Verify the signature with:

```powershell
Get-AuthenticodeSignature .\YourLauncher_Installer_Windows_x64.exe | Format-List Status, SignerCertificate
```

## After submission

Certification takes at least a day. When you later deploy a new launcher build and want the Store to serve it, use **Update submission** in Partner Center with the new versioned URL, then pin the new build in the dashboard and unpin the old one.

## Related

* [Installer Exit Codes](https://gamelauncher.cloud/help/launchers/installer-exit-codes)
* [Store Package (MSIX)](https://gamelauncher.cloud/help/launchers/microsoft-store/msix-package)
* [Launcher Builds](https://gamelauncher.cloud/help/launchers/launcher-builds)
* [How the Launcher Self-Updates](https://gamelauncher.cloud/help/launchers/how-updates-work)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gamelauncher.cloud/help/launchers/microsoft-store/installer-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
