From 949fe5e005c15400a025dadea89f0439b14a2c48 Mon Sep 17 00:00:00 2001 From: Abdullah <89297042+AzazelSensei@users.noreply.github.com> Date: Wed, 16 Sep 2026 21:26:37 +0000 Subject: [PATCH 1/3] docs: document Windows MSIX from a Shorebird release package:msix rebuilds with stock Flutter unless build_windows is false. Document packaging the output of shorebird release windows instead. --- src/content/docs/code-push/release.mdx | 9 +++ .../releasing-flutter-apps/index.mdx | 5 ++ .../releasing-flutter-apps/windows.mdx | 72 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx diff --git a/src/content/docs/code-push/release.mdx b/src/content/docs/code-push/release.mdx index 5a943e9e..0eb3d254 100644 --- a/src/content/docs/code-push/release.mdx +++ b/src/content/docs/code-push/release.mdx @@ -439,6 +439,10 @@ the `--flutter-version` flag. shorebird release windows --flutter-version %flutter_version% ``` +To package this build for the Windows Store, set `build_windows: false` in +`package:msix` so it does not rebuild with stock Flutter. See +[Releasing for Windows](/flutter-concepts/releasing-flutter-apps/windows/). + @@ -612,3 +616,8 @@ as needed. title="Releasing for iOS" description="Learn how to configure Xcode signing and submit your release to the Apple App Store." /> + diff --git a/src/content/docs/flutter-concepts/releasing-flutter-apps/index.mdx b/src/content/docs/flutter-concepts/releasing-flutter-apps/index.mdx index 3df518b7..9c7d062e 100644 --- a/src/content/docs/flutter-concepts/releasing-flutter-apps/index.mdx +++ b/src/content/docs/flutter-concepts/releasing-flutter-apps/index.mdx @@ -393,3 +393,8 @@ artifacts: title="Releasing for iOS (Apple App Store)" description="Configure Xcode signing identities, Privacy Manifests, build IPAs, and distribute via TestFlight and App Review." /> + diff --git a/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx new file mode 100644 index 00000000..b5b89b15 --- /dev/null +++ b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx @@ -0,0 +1,72 @@ +--- +title: Releasing for Windows +description: + Build a Shorebird Windows release, then package an MSIX from that output + without letting package:msix rebuild the app with stock Flutter. +sidebar: + label: Windows (Microsoft Store) + order: 4 +--- + +{/* cspell:words msix */} + +To submit an app to the Windows Store, you need an **MSIX** package. +[`package:msix`](https://pub.dev/packages/msix) is a common way to produce +that file from a Flutter Windows build. By default it runs +`flutter build windows` with the Flutter SDK on your `PATH`, not +Shorebird's Flutter. That rebuild is not a Shorebird release, so patches +will not apply. + +Build with Shorebird first, then tell `package:msix` to package the existing +output. + +## Step 1: Create a Shorebird Windows release + +```bash +shorebird release windows +``` + +The Windows executable is written to `build/windows/x64/runner/Release`. +See [Create a Release](/code-push/release/) for flavors, targets, and +`--flutter-version`. + +## Step 2: Disable the MSIX rebuild + +Add [`package:msix`](https://pub.dev/packages/msix) as a dev dependency if +you do not already use it: + +```bash +flutter pub add dev:msix +``` + +Then set `build_windows: false` in the `msix_config` section of +`pubspec.yaml`: + +```yaml +msix_config: + display_name: My App + publisher_display_name: Example + identity_name: com.example.myapp + msix_version: 1.0.0.1 + build_windows: false +``` + +`build_windows: false` skips `flutter build windows` and packages the +directory Shorebird already produced. + +## Step 3: Create the store package + +```bash +dart run msix:create +``` + +Submit the generated `.msix` file to the Windows Store. + +:::caution + +Do not run `flutter build windows` or `msix:create` without +`build_windows: false` after `shorebird release windows`. Those commands +rebuild with non-Shorebird Flutter and replace the release artifacts +Shorebird registered. + +::: From 3c7f8e87b6542f2ce69572c659745594a5c93ce4 Mon Sep 17 00:00:00 2001 From: Abdullah <89297042+AzazelSensei@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:29:38 +0000 Subject: [PATCH 2/3] docs: add Store identity fields to the Windows MSIX example Copy publisher fields from Partner Center, set store: true, and use msix_version 1.0.0.0. Clarify that a stock Flutter rebuild only overwrites local output. --- .../releasing-flutter-apps/windows.mdx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx index b5b89b15..a9437026 100644 --- a/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx +++ b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx @@ -46,14 +46,21 @@ Then set `build_windows: false` in the `msix_config` section of msix_config: display_name: My App publisher_display_name: Example + publisher: CN=00000000-0000-0000-0000-000000000000 identity_name: com.example.myapp - msix_version: 1.0.0.1 + msix_version: 1.0.0.0 + store: true build_windows: false ``` `build_windows: false` skips `flutter build windows` and packages the directory Shorebird already produced. +Copy `identity_name`, `publisher`, and `publisher_display_name` from +Partner Center (Product identity). With `store: true`, `package:msix` +refuses to build if any of them is missing. The fourth part of +`msix_version` must be `0` for Store submissions. + ## Step 3: Create the store package ```bash @@ -66,7 +73,7 @@ Submit the generated `.msix` file to the Windows Store. Do not run `flutter build windows` or `msix:create` without `build_windows: false` after `shorebird release windows`. Those commands -rebuild with non-Shorebird Flutter and replace the release artifacts -Shorebird registered. +rebuild with non-Shorebird Flutter and overwrite the build output, so the +resulting MSIX will not receive patches. ::: From ab63efff30bc5d30c2f9cecbadb18e20e9de00cc Mon Sep 17 00:00:00 2001 From: Abdullah <89297042+AzazelSensei@users.noreply.github.com> Date: Thu, 17 Sep 2026 12:39:42 +0000 Subject: [PATCH 3/3] docs: apply Windows MSIX review wording and CI fixes Use Microsoft Store throughout, rename the Step 3 heading so Vale passes, put build_windows on msix_config, add msix to cspell, and rewrap the page to 80 columns. --- .cspell.yaml | 1 + src/content/docs/code-push/release.mdx | 5 +- .../releasing-flutter-apps/windows.mdx | 48 +++++++++---------- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/.cspell.yaml b/.cspell.yaml index 92d98531..00b68b96 100644 --- a/.cspell.yaml +++ b/.cspell.yaml @@ -85,6 +85,7 @@ words: - mipmap - mobileprovision - mozallowfullscreen + - msix - notlike - nubank - opengraph diff --git a/src/content/docs/code-push/release.mdx b/src/content/docs/code-push/release.mdx index 0eb3d254..a83ba92e 100644 --- a/src/content/docs/code-push/release.mdx +++ b/src/content/docs/code-push/release.mdx @@ -439,8 +439,9 @@ the `--flutter-version` flag. shorebird release windows --flutter-version %flutter_version% ``` -To package this build for the Windows Store, set `build_windows: false` in -`package:msix` so it does not rebuild with stock Flutter. See +To package this build for the Microsoft Store, set `build_windows: false` in the +`msix_config` section of `pubspec.yaml` so `package:msix` does not rebuild with +stock Flutter. See [Releasing for Windows](/flutter-concepts/releasing-flutter-apps/windows/). diff --git a/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx index a9437026..401db0d2 100644 --- a/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx +++ b/src/content/docs/flutter-concepts/releasing-flutter-apps/windows.mdx @@ -8,14 +8,11 @@ sidebar: order: 4 --- -{/* cspell:words msix */} - -To submit an app to the Windows Store, you need an **MSIX** package. -[`package:msix`](https://pub.dev/packages/msix) is a common way to produce -that file from a Flutter Windows build. By default it runs -`flutter build windows` with the Flutter SDK on your `PATH`, not -Shorebird's Flutter. That rebuild is not a Shorebird release, so patches -will not apply. +To submit an app to the Microsoft Store, you need an **MSIX** package. +[`package:msix`](https://pub.dev/packages/msix) is a common way to produce that +file from a Flutter Windows build. By default it runs `flutter build windows` +with the Flutter SDK on your `PATH`, not Shorebird's Flutter. That rebuild is +not a Shorebird release, so patches will not apply. Build with Shorebird first, then tell `package:msix` to package the existing output. @@ -26,21 +23,20 @@ output. shorebird release windows ``` -The Windows executable is written to `build/windows/x64/runner/Release`. -See [Create a Release](/code-push/release/) for flavors, targets, and +The Windows executable is written to `build/windows/x64/runner/Release`. See +[Create a Release](/code-push/release/) for flavors, targets, and `--flutter-version`. ## Step 2: Disable the MSIX rebuild -Add [`package:msix`](https://pub.dev/packages/msix) as a dev dependency if -you do not already use it: +Add [`package:msix`](https://pub.dev/packages/msix) as a dev dependency if you +do not already use it: ```bash flutter pub add dev:msix ``` -Then set `build_windows: false` in the `msix_config` section of -`pubspec.yaml`: +Then set `build_windows: false` in the `msix_config` section of `pubspec.yaml`: ```yaml msix_config: @@ -53,27 +49,27 @@ msix_config: build_windows: false ``` -`build_windows: false` skips `flutter build windows` and packages the -directory Shorebird already produced. +`build_windows: false` skips `flutter build windows` and packages the directory +Shorebird already produced. -Copy `identity_name`, `publisher`, and `publisher_display_name` from -Partner Center (Product identity). With `store: true`, `package:msix` -refuses to build if any of them is missing. The fourth part of -`msix_version` must be `0` for Store submissions. +Copy `identity_name`, `publisher`, and `publisher_display_name` from Partner +Center (Product identity). With `store: true`, `package:msix` refuses to build +if any of them is missing. The fourth part of `msix_version` must be `0` for +Store submissions. -## Step 3: Create the store package +## Step 3: Create the MSIX package ```bash dart run msix:create ``` -Submit the generated `.msix` file to the Windows Store. +Submit the generated `.msix` file to the Microsoft Store. :::caution -Do not run `flutter build windows` or `msix:create` without -`build_windows: false` after `shorebird release windows`. Those commands -rebuild with non-Shorebird Flutter and overwrite the build output, so the -resulting MSIX will not receive patches. +After `shorebird release windows`, do not run `flutter build windows`, or +`msix:create` without `build_windows: false`. Those commands rebuild with +non-Shorebird Flutter and overwrite the build output, so the resulting MSIX will +not receive patches. :::