Skip to content

Commit fa3419e

Browse files
authored
WiX: add support to package and distribute a NoAsserts variant of the toolchain
This changes introduces new toolchain variant for No-Assert. The authoring leverages our parametrization (#444) and only introduces a new set of project files and includes. **Note**: This does not change any of the existing Assert variant authoring or output (msi or cabs). The new msi's are only built if you pass `-IncludeNoAsserts` to `build.ps1`. No changes on CI are needed at this point. ## Changes: - New projects, and wxs with include files for bld, cli, dbg and ide. these result in producing new msi's `bld.noasserts.msi`, `cli.noasserts.msi`, `dbg.noasserts.msi` and `ide.noasserts.msi` - Installer Options UI now has a new option to choose which variant to install, or both (see images below) - Authoring for directories in shared.wxs to match the assert variant directories - New upgrade codes for the new msi's - New strings for the new msi's ## How does it work: - If the bundler is built without `-IncludeNoAsserts`, noassert toolcahin is not included, and the user will see a grayed out entry that can not be changed. bundler will install asserts variant only, just like today (see first image below) - If the bundler is built with `-IncludeNoAsserts`, both toolchain variants are included. the user has an option to install both (see second image), or only the noasserts variant (see third image). At least one has to be included. User can not be in a state where none is included (we ensure that through using enabled condition on the check boxes) - If both variants are installed, the path will be set to the assert toolchain (to maintain backward compatibility). if only the noassert variant is chosen, the path will be set to the no-assert toolchain path. ## Screenshots - Only Assert variant included: <img width="1262" height="1058" alt="Asserets-only" src="https://github.com/user-attachments/assets/db9c53db-4868-45fd-9b19-643b1abac11a" /> - Both variants included: <img width="1252" height="1046" alt="both" src="https://github.com/user-attachments/assets/d1b156e4-438b-4cde-b4b1-e270c65b3aca" /> - Only No-Assert included: <img width="1256" height="1038" alt="noasserts-only" src="https://github.com/user-attachments/assets/88fd22cc-e211-48fc-9e66-520b9b701673" />
1 parent 0cac022 commit fa3419e

16 files changed

+266
-6
lines changed

platforms/Windows/SideBySideUpgradeStrategy.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@
1818

1919
<PropertyGroup>
2020
<BldAssertsUpgradeCode>{7E95DC06-7F84-4E8E-A038-8304AF0468FB}</BldAssertsUpgradeCode>
21+
<BldNoAssertsUpgradeCode>{0F18B0C5-F6EE-46DE-A930-E666BEE6A9C3}</BldNoAssertsUpgradeCode>
2122
<CliAssertsUpgradeCode>{87019842-3F3E-4227-B5C5-23A8EF72AD89}</CliAssertsUpgradeCode>
23+
<CliNoAssertsUpgradeCode>{BBF4E043-FAB3-4E7A-9E6D-714E3F3EBA9C}</CliNoAssertsUpgradeCode>
2224
<DbgAssertsUpgradeCode>{91D382AF-1E92-44DC-A4AD-AEE91C1B5160}</DbgAssertsUpgradeCode>
25+
<DbgNoAssertsUpgradeCode>{6F26625B-7662-4631-8E0E-F2244339ED37}</DbgNoAssertsUpgradeCode>
2326
<IdeAssertsUpgradeCode>{8DD91C86-D13D-490B-B06B-9522A9CF504C}</IdeAssertsUpgradeCode>
27+
<IdeNoAssertsUpgradeCode>{C5519168-CF7B-4127-98B7-D886D9789B42}</IdeNoAssertsUpgradeCode>
2428
<RtlUpgradeCode>{BEA8C6DC-F73E-445B-9486-2333D1CF2886}</RtlUpgradeCode>
2529
<AndroidPlatformUpgradeCode>{313B9C1F-D5B5-4FED-B7E0-138F1EE6B26A}</AndroidPlatformUpgradeCode>
2630
<WindowsPlatformUpgradeCode>{01AFF1CF-A025-41B6-BCBC-728D794353FD}</WindowsPlatformUpgradeCode>
@@ -55,9 +59,13 @@
5559
$(DefineConstants);
5660
BundleUpgradeCode=$(BundleUpgradeCode);
5761
BldAssertsUpgradeCode=$(BldAssertsUpgradeCode);
62+
BldNoAssertsUpgradeCode=$(BldNoAssertsUpgradeCode);
5863
CliAssertsUpgradeCode=$(CliAssertsUpgradeCode);
64+
CliNoAssertsUpgradeCode=$(CliNoAssertsUpgradeCode);
5965
DbgAssertsUpgradeCode=$(DbgAssertsUpgradeCode);
66+
DbgNoAssertsUpgradeCode=$(DbgNoAssertsUpgradeCode);
6067
IdeAssertsUpgradeCode=$(IdeAssertsUpgradeCode);
68+
IdeNoAssertsUpgradeCode=$(IdeNoAssertsUpgradeCode);
6169
RtlUpgradeCode=$(RtlUpgradeCode);
6270
AndroidPlatformUpgradeCode=$(AndroidPlatformUpgradeCode);
6371
WindowsPlatformUpgradeCode=$(WindowsPlatformUpgradeCode);

platforms/Windows/bld/bld.wxi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@
543543
</ComponentGroup>
544544

545545
<ComponentGroup Id="EnvironmentVariables">
546-
<Component Id="UserPathVariable" Condition="NOT ALLUSERS=1" Directory="toolchain_$(VariantName)_usr_bin" Guid="$(VariantEnvironmentComponentGUID)">
546+
<Component Id="UserPathVariable" Condition="NOT ALLUSERS=1 AND ADDTOOLCHAINTOPATH=1" Directory="toolchain_$(VariantName)_usr_bin" Guid="$(VariantEnvironmentComponentGUID)">
547547
<Environment Action="set" Name="Path" Part="last" Permanent="no" System="no" Value="[toolchain_$(VariantName)_usr_bin]" />
548548
</Component>
549549
</ComponentGroup>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<Project Sdk="WixToolset.Sdk/4.0.5">
2+
<PropertyGroup>
3+
<DefineConstants>
4+
$(DefineConstants);
5+
_USR_LIB_CLANG=$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\clang;
6+
_USR_LIB_SWIFT_CLANG=$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\swift\clang;
7+
_USR_LIB_SWIFT_STATIC_CLANG=$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\swift_static\clang;
8+
</DefineConstants>
9+
<OutputName>bld.noasserts</OutputName>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="WixToolset.Heat" Version="4.0.5" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<HarvestDirectory Include="$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\clang">
18+
<ComponentGroupName>ClangResources_noasserts</ComponentGroupName>
19+
<DirectoryRefId>toolchain_noasserts_usr_lib_clang</DirectoryRefId>
20+
<PreprocessorVariable>var._USR_LIB_CLANG</PreprocessorVariable>
21+
<SuppressCom>true</SuppressCom>
22+
<SuppressRegistry>true</SuppressRegistry>
23+
<SuppressRootDirectory>true</SuppressRootDirectory>
24+
</HarvestDirectory>
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<HarvestDirectory Include="$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\swift\clang">
29+
<ComponentGroupName>SwiftClangResources_noasserts</ComponentGroupName>
30+
<DirectoryRefId>toolchain_noasserts_usr_lib_swift_clang</DirectoryRefId>
31+
<PreprocessorVariable>var._USR_LIB_SWIFT_CLANG</PreprocessorVariable>
32+
<SuppressCom>true</SuppressCom>
33+
<SuppressRegistry>true</SuppressRegistry>
34+
<SuppressRootDirectory>true</SuppressRootDirectory>
35+
</HarvestDirectory>
36+
</ItemGroup>
37+
38+
<ItemGroup>
39+
<!-- FIXME(#81557) this needs to be properly staged once the sanitizers are included -->
40+
<HarvestDirectory Include="$(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts\usr\lib\swift\clang">
41+
<ComponentGroupName>SwiftStaticClangResources_noasserts</ComponentGroupName>
42+
<DirectoryRefId>toolchain_noasserts_usr_lib_swift_static_clang</DirectoryRefId>
43+
<PreprocessorVariable>var._USR_LIB_SWIFT_STATIC_CLANG</PreprocessorVariable>
44+
<SuppressCom>true</SuppressCom>
45+
<SuppressRegistry>true</SuppressRegistry>
46+
<SuppressRootDirectory>true</SuppressRootDirectory>
47+
</HarvestDirectory>
48+
</ItemGroup>
49+
</Project>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2+
<?define ToolchainRoot = $(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts?>
3+
<?define VariantName = noasserts ?>
4+
<?define VariantUpgradeCode = $(BldNoAssertsUpgradeCode)?>
5+
<?define VariantProductName = !(loc.BldNoAsserts_ProductName)?>
6+
<?define VariantCabinetName = bld.noasserts.cab?>
7+
<?define ToolchainVersionedVariantDirectory = ToolchainVersionedNoAsserts ?>
8+
<?define VariantEnvironmentComponentGUID = d612c6f1-d74e-46b4-8efe-a4fd8a1b2be7?>
9+
10+
<?include ../bld.wxi ?>
11+
</Wix>

platforms/Windows/bundle/installer.wixproj

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
$(DefineConstants);
99
IncludeAndroid=$(Platforms.Contains("android"));
1010
IncludeWindows=$(Platforms.Contains("windows"));
11+
IncludeNoAsserts=$(ToolchainVariants.Contains("noasserts"));
1112
</DefineConstants>
1213
</PropertyGroup>
1314

@@ -20,6 +21,16 @@
2021
<ProjectReference Include="..\cli\asserts\cli.asserts.wixproj" BindName="cli.asserts" />
2122
<ProjectReference Include="..\dbg\asserts\dbg.asserts.wixproj" BindName="dbg.asserts" />
2223
<ProjectReference Include="..\ide\asserts\ide.asserts.wixproj" BindName="ide.asserts" />
24+
</ItemGroup>
25+
26+
<ItemGroup Condition=" $(ToolchainVariants.Contains('noasserts')) ">
27+
<ProjectReference Include="..\bld\noasserts\bld.noasserts.wixproj" BindName="bld.noasserts" />
28+
<ProjectReference Include="..\cli\noasserts\cli.noasserts.wixproj" BindName="cli.noasserts" />
29+
<ProjectReference Include="..\dbg\noasserts\dbg.noasserts.wixproj" BindName="dbg.noasserts" />
30+
<ProjectReference Include="..\ide\noasserts\ide.noasserts.wixproj" BindName="ide.noasserts" />
31+
</ItemGroup>
32+
33+
<ItemGroup>
2334
<ProjectReference Include="..\rtl\msi\rtlmsi.wixproj" BindName="rtl" />
2435
</ItemGroup>
2536

platforms/Windows/bundle/installer.wxs

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@
5454
<Variable Name="OptionsInstallAndroidSDKARM" bal:Overridable="yes" Persisted="yes" Value="0" />
5555
<Variable Name="OptionsInstallAndroidSDKX86" bal:Overridable="yes" Persisted="yes" Value="0" />
5656

57+
<Variable Name="OptionsInstallToolchain" Value="1" />
58+
<Variable Name="OptionsInstallAssertsToolchain" bal:Overridable="yes" Persisted="yes" Value="1" />
59+
<Variable Name="OptionsInstallNoAssertsToolchain" bal:Overridable="yes" Persisted="yes" Value="0" />
60+
61+
<?if $(IncludeNoAsserts) == True?>
62+
<Variable Name="OptionsIncludeNoAsserts" bal:Overridable="yes" Persisted="yes" Value="1" />
63+
<?else ?>
64+
<Variable Name="OptionsIncludeNoAsserts" bal:Overridable="yes" Persisted="yes" Value="0" />
65+
<?endif?>
66+
5767
<!--
5868
For the online bundle, we need to provide a download URL for each package and its .cabs.
5969
(The SourceFile attribute is also required, both for the offline bundle and for Burn
@@ -83,31 +93,70 @@
8393

8494
<MsiPackage
8595
SourceFile="!(bindpath.bld.asserts)\bld.asserts.msi"
96+
InstallCondition="OptionsInstallAssertsToolchain = 1"
8697
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
8798
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
99+
<MsiProperty Name="ADDTOOLCHAINTOPATH" Value="1"/>
88100
</MsiPackage>
89101

102+
<?if $(IncludeNoAsserts) == True?>
103+
<MsiPackage
104+
SourceFile="!(bindpath.bld.noasserts)\bld.noasserts.msi"
105+
InstallCondition="OptionsInstallNoAssertsToolchain = 1"
106+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
107+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
108+
<MsiProperty Name="ADDTOOLCHAINTOPATH" Condition="OptionsInstallAssertsToolchain = 0" Value="1" />
109+
</MsiPackage>
110+
<?endif?>
111+
90112
<MsiPackage
91113
SourceFile="!(bindpath.cli.asserts)\cli.asserts.msi"
92-
InstallCondition="OptionsInstallCLI = 1"
114+
InstallCondition="OptionsInstallCLI = 1 and OptionsInstallAssertsToolchain = 1"
93115
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
94116
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
95117
</MsiPackage>
96118

119+
<?if $(IncludeNoAsserts) == True?>
120+
<MsiPackage
121+
SourceFile="!(bindpath.cli.noasserts)\cli.noasserts.msi"
122+
InstallCondition="OptionsInstallCLI = 1 and OptionsInstallNoAssertsToolchain = 1"
123+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
124+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
125+
</MsiPackage>
126+
<?endif?>
127+
97128
<MsiPackage
98129
SourceFile="!(bindpath.dbg.asserts)\dbg.asserts.msi"
99-
InstallCondition="OptionsInstallDBG = 1"
130+
InstallCondition="OptionsInstallDBG = 1 and OptionsInstallAssertsToolchain = 1"
100131
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
101132
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
102133
</MsiPackage>
103134

135+
<?if $(IncludeNoAsserts) == True?>
136+
<MsiPackage
137+
SourceFile="!(bindpath.dbg.noasserts)\dbg.noasserts.msi"
138+
InstallCondition="OptionsInstallDBG = 1 and OptionsInstallNoAssertsToolchain = 1"
139+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
140+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
141+
</MsiPackage>
142+
<?endif?>
143+
104144
<MsiPackage
105145
SourceFile="!(bindpath.ide.asserts)\ide.asserts.msi"
106-
InstallCondition="OptionsInstallIDE = 1"
146+
InstallCondition="OptionsInstallIDE = 1 and OptionsInstallAssertsToolchain = 1"
107147
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
108148
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
109149
</MsiPackage>
110150

151+
<?if $(IncludeNoAsserts) == True?>
152+
<MsiPackage
153+
SourceFile="!(bindpath.ide.noasserts)\ide.noasserts.msi"
154+
InstallCondition="OptionsInstallIDE = 1 and OptionsInstallNoAssertsToolchain = 1"
155+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
156+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
157+
</MsiPackage>
158+
<?endif?>
159+
111160
<?if $(IncludeAndroid) == True?>
112161
<MsiPackage
113162
SourceFile="!(bindpath.platform.android)\android.msi"

platforms/Windows/bundle/theme.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@
7373
<Checkbox Name="OptionsInstallAndroidSDKAMD64" X="210" Y="363" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="OptionsInstallAndroidPlatform">#(loc.Sdk_ProductName_Android_amd64)</Checkbox>
7474
<Checkbox Name="OptionsInstallAndroidSDKARM" X="210" Y="381" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="OptionsInstallAndroidPlatform">#(loc.Sdk_ProductName_Android_armv7)</Checkbox>
7575
<Checkbox Name="OptionsInstallAndroidSDKX86" X="210" Y="399" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="OptionsInstallAndroidPlatform">#(loc.Sdk_ProductName_Android_x86)</Checkbox>
76-
76+
<Checkbox Name="OptionsInstallToolchain" X="192" Y="417" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="0">#(loc.Toolchain_ProductName)</Checkbox>
77+
<Checkbox Name="OptionsInstallAssertsToolchain" X="210" Y="435" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="OptionsIncludeNoAsserts and OptionsInstallNoAssertsToolchain">#(loc.Asserts_Toolchain_ProductName)</Checkbox>
78+
<Checkbox Name="OptionsInstallNoAssertsToolchain" X="210" Y="453" Width="-11" Height="17" TabStop="yes" FontId="3" EnableCondition="OptionsIncludeNoAsserts and OptionsInstallAssertsToolchain">#(loc.NoAsserts_Toolchain_ProductName)</Checkbox>
79+
7780
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
7881
<Text>#(loc.OptionsOkButton)</Text>
7982
<ChangePageAction Page="Install" />
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="WixToolset.Sdk/4.0.5">
2+
<PropertyGroup>
3+
<DefineConstants>
4+
$(DefineConstants);
5+
SWIFT_DOCC_BUILD=$(SWIFT_DOCC_BUILD);
6+
INCLUDE_SWIFT_DOCC=$(INCLUDE_SWIFT_DOCC);
7+
SWIFT_FORMAT_BUILD=$(SWIFT_FORMAT_BUILD);
8+
SWIFT_DOCC_RENDER_ARTIFACT_ROOT_DIST=$(SWIFT_DOCC_RENDER_ARTIFACT_ROOT)\dist;
9+
</DefineConstants>
10+
<OutputName>cli.noasserts</OutputName>
11+
</PropertyGroup>
12+
13+
<ItemGroup>
14+
<PackageReference Include="WixToolset.Heat" Version="4.0.5" />
15+
</ItemGroup>
16+
17+
<ItemGroup Condition=" '$(INCLUDE_SWIFT_DOCC)' == 'True' ">
18+
<HarvestDirectory Include="$(SWIFT_DOCC_RENDER_ARTIFACT_ROOT)\dist">
19+
<ComponentGroupName>DocCRender_noasserts</ComponentGroupName>
20+
<DirectoryRefId>toolchain_noasserts_usr_share_docc_render</DirectoryRefId>
21+
<PreprocessorVariable>var.SWIFT_DOCC_RENDER_ARTIFACT_ROOT_DIST</PreprocessorVariable>
22+
<SuppressCom>true</SuppressCom>
23+
<SuppressRegistry>true</SuppressRegistry>
24+
<SuppressRootDirectory>true</SuppressRootDirectory>
25+
</HarvestDirectory>
26+
</ItemGroup>
27+
</Project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2+
<?define ToolchainRoot = $(ImageRoot)\Toolchains\$(ProductVersion)+NoAsserts?>
3+
<?define VariantName = noasserts ?>
4+
<?define VariantUpgradeCode = $(CliNoAssertsUpgradeCode)?>
5+
<?define VariantProductName = !(loc.CliNoAsserts_ProductName)?>
6+
<?define VariantCabinetName = cli.noasserts.cab?>
7+
8+
<?include ../cli.wxi ?>
9+
</Wix>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<Project Sdk="WixToolset.Sdk/4.0.5">
2+
<PropertyGroup>
3+
<OutputName>dbg.noasserts</OutputName>
4+
</PropertyGroup>
5+
</Project>

0 commit comments

Comments
 (0)