[PR #12560] [MERGED] build: ship a Win11 build of Terminal that's <=half the size #29114

Open
opened 2026-01-31 09:32:54 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/microsoft/terminal/pull/12560
Author: @DHowett
Created: 2/23/2022
Status: Merged
Merged: 2/25/2022
Merged by: @DHowett

Base: mainHead: dev/duhowett/slim


📝 Commits (4)

  • 1ecb787 release: move symbol publication into its own phase
  • 72e23b9 Remove Terminal's built-in copy of the VC Runtime
  • 51ebdbf Prepare for toggling XAML between 2.7.0 and -prerelease on Win11
  • 00ca488 Run the release pipeline twice, for Win10 and Win11, at the same time

📊 Changes

26 files changed (+200 additions, -140 deletions)

View changed files

📝 .github/actions/spelling/allow/microsoft.txt (+7 -1)
📝 build/pipelines/release.yml (+102 -68)
build/scripts/Patch-ManifestsToWindowsVersion.ps1 (+14 -0)
📝 common.openconsole.props (+14 -0)
📝 custom.props (+12 -0)
📝 scratch/ScratchIslandApp/Package/Package.wapproj (+2 -2)
📝 scratch/ScratchIslandApp/SampleApp/SampleAppLib.vcxproj (+2 -2)
📝 scratch/ScratchIslandApp/SampleApp/dll/SampleApp.vcxproj (+2 -2)
📝 scratch/ScratchIslandApp/SampleApp/packages.config (+1 -1)
📝 scratch/ScratchIslandApp/WindowExe/WindowExe.vcxproj (+2 -2)
📝 scratch/ScratchIslandApp/WindowExe/packages.config (+1 -1)
📝 src/cascadia/CascadiaPackage/CascadiaPackage.wapproj (+10 -12)
📝 src/cascadia/LocalTests_SettingsModel/SettingsModel.LocalTests.vcxproj (+4 -4)
📝 src/cascadia/LocalTests_TerminalApp/TerminalApp.LocalTests.vcxproj (+2 -2)
📝 src/cascadia/LocalTests_TerminalApp/TestHostApp/TestHostApp.vcxproj (+1 -1)
📝 src/cascadia/TerminalApp/TerminalAppLib.vcxproj (+2 -2)
📝 src/cascadia/TerminalApp/dll/TerminalApp.vcxproj (+2 -2)
📝 src/cascadia/TerminalApp/packages.config (+1 -0)
📝 src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj (+2 -2)
📝 src/cascadia/TerminalSettingsEditor/packages.config (+1 -1)

...and 6 more files

📄 Description

This pull request is broken down into a few individually reviewable units.

00ca4883f - Run the release pipeline twice, for Win10 and Win11, at the same time

This required some changes in how we download artifacts to make sure
that we could control which version of Windows we were processing in any
individual step.

We're also going to patch the package manifest on the Windows 11 version
so the store targets it more specifically.

On top of the prior three commits, this lets us ship a Windows 11
package that costs only ~15MB on disk. The Windows 10 version, for
comparison, is about 40.

51ebdbf8c - Prepare for toggling XAML between 2.7.0 and -prerelease on Win11

common.openconsole.props is a pretty good place to stash the XAML
version since it is included in every project (including the WAP
project (unlike the C++ build props!)).

I've gone ahead and added a "double dependency" on multiple XAML
versions. We'll toggle them with a build flag.

72e23b902 - Remove Terminal's built-in copy of the VC Runtime

This removes the trick we pulled in #5661 and saves us ~550kb per arch.

Some of our dependencies still depend on the "app" versions of the
runtime libraries, so we are going to continue shipping the forwarders
in our package. Build rules have been updated to remove the non-Desktop
VCLibs dependency to slim down our package graph.

This is not a problem on Windows 11 -- it looks like it's shipped inbox.

BREAKING CHANGE: When launched unpackaged, Terminal now requires the
vcruntime redist to be installed.

1ecb787de - release: move symbol publication into its own phase

Right now, symbol publication happens every time we produce a final
bundle. In the future, we may be producing multiple bundles from the
same pipeline run, and we need to make sure we only do one symbol
publication to MSDL.

When we do that, it will be advantageous for us to have just one phase
that source-indexes and publishes all of the symbols.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/microsoft/terminal/pull/12560 **Author:** [@DHowett](https://github.com/DHowett) **Created:** 2/23/2022 **Status:** ✅ Merged **Merged:** 2/25/2022 **Merged by:** [@DHowett](https://github.com/DHowett) **Base:** `main` ← **Head:** `dev/duhowett/slim` --- ### 📝 Commits (4) - [`1ecb787`](https://github.com/microsoft/terminal/commit/1ecb787ded9b29e08220e5d2d34d311a0fa5ca64) release: move symbol publication into its own phase - [`72e23b9`](https://github.com/microsoft/terminal/commit/72e23b902e7d7589ac39e0517967f1a47594a6af) Remove Terminal's built-in copy of the VC Runtime - [`51ebdbf`](https://github.com/microsoft/terminal/commit/51ebdbf8c8a7b30bdb70d9180fe4eb96b3244af9) Prepare for toggling XAML between 2.7.0 and -prerelease on Win11 - [`00ca488`](https://github.com/microsoft/terminal/commit/00ca4883f6e9538ab8c8999875bd49f60ed19251) Run the release pipeline twice, for Win10 and Win11, at the same time ### 📊 Changes **26 files changed** (+200 additions, -140 deletions) <details> <summary>View changed files</summary> 📝 `.github/actions/spelling/allow/microsoft.txt` (+7 -1) 📝 `build/pipelines/release.yml` (+102 -68) ➕ `build/scripts/Patch-ManifestsToWindowsVersion.ps1` (+14 -0) 📝 `common.openconsole.props` (+14 -0) 📝 `custom.props` (+12 -0) 📝 `scratch/ScratchIslandApp/Package/Package.wapproj` (+2 -2) 📝 `scratch/ScratchIslandApp/SampleApp/SampleAppLib.vcxproj` (+2 -2) 📝 `scratch/ScratchIslandApp/SampleApp/dll/SampleApp.vcxproj` (+2 -2) 📝 `scratch/ScratchIslandApp/SampleApp/packages.config` (+1 -1) 📝 `scratch/ScratchIslandApp/WindowExe/WindowExe.vcxproj` (+2 -2) 📝 `scratch/ScratchIslandApp/WindowExe/packages.config` (+1 -1) 📝 `src/cascadia/CascadiaPackage/CascadiaPackage.wapproj` (+10 -12) 📝 `src/cascadia/LocalTests_SettingsModel/SettingsModel.LocalTests.vcxproj` (+4 -4) 📝 `src/cascadia/LocalTests_TerminalApp/TerminalApp.LocalTests.vcxproj` (+2 -2) 📝 `src/cascadia/LocalTests_TerminalApp/TestHostApp/TestHostApp.vcxproj` (+1 -1) 📝 `src/cascadia/TerminalApp/TerminalAppLib.vcxproj` (+2 -2) 📝 `src/cascadia/TerminalApp/dll/TerminalApp.vcxproj` (+2 -2) 📝 `src/cascadia/TerminalApp/packages.config` (+1 -0) 📝 `src/cascadia/TerminalSettingsEditor/Microsoft.Terminal.Settings.Editor.vcxproj` (+2 -2) 📝 `src/cascadia/TerminalSettingsEditor/packages.config` (+1 -1) _...and 6 more files_ </details> ### 📄 Description This pull request is broken down into a few individually reviewable units. ## `00ca4883f` - Run the release pipeline twice, for Win10 and Win11, at the same time This required some changes in how we download artifacts to make sure that we could control which version of Windows we were processing in any individual step. We're also going to patch the package manifest on the Windows 11 version so the store targets it more specifically. On top of the prior three commits, this lets us ship a Windows 11 package that costs only ~15MB on disk. The Windows 10 version, for comparison, is about 40. ## `51ebdbf8c` - Prepare for toggling XAML between 2.7.0 and -prerelease on Win11 common.openconsole.props is a pretty good place to stash the XAML version since it is included in every project (including the WAP project (unlike the C++ build props!)). I've gone ahead and added a "double dependency" on multiple XAML versions. We'll toggle them with a build flag. ## `72e23b902` - Remove Terminal's built-in copy of the VC Runtime This removes the trick we pulled in #5661 and saves us ~550kb per arch. Some of our dependencies still depend on the "app" versions of the runtime libraries, so we are going to continue shipping the forwarders in our package. Build rules have been updated to remove the non-Desktop VCLibs dependency to slim down our package graph. This is not a problem on Windows 11 -- it looks like it's shipped inbox. **BREAKING CHANGE**: When launched unpackaged, Terminal now requires the vcruntime redist to be installed. ## `1ecb787de` - release: move symbol publication into its own phase Right now, symbol publication happens every time we produce a final bundle. In the future, we may be producing multiple bundles from the same pipeline run, and we need to make sure we only do *one* symbol publication to MSDL. When we do that, it will be advantageous for us to have just one phase that source-indexes and publishes all of the symbols. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-31 09:32:54 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#29114