Skip to content

Commit 50691ce

Browse files
barnsoncompnerd
andauthored
Per user bundle and side-by-side upgrade support (#224)
* Rename Runtime to Rtl and hierarchicalize. * Per-user packages - Remove per-machine resources, use per-user directories, and set packages to per-user. * Implement new per-user bundle: - Web bundle that downloads on demand - Offline bundle with everything embedded - Custom UI with feature selection - Side-by-side upgrade strategy * Fix references and arch-specific ids to resolve multiproc build failure. * Simplify side-by-side support authoring. * Move merge modules and remove test authoring. - Use `rtl` consistently. - Use `InstallRoot`/`INSTALLROOT` consistently. - Make `HelloMergeModule` build outside the source tree. - Add Windows Sandbox test scripts. * Build three host-architecture SDK packages. * For consistency, use loc string for Manufacturer. * Use ProductArchitecture to get product names. * Move versioned "root" under the Top Five. * Remove old directory tree. * Improve side-by-side versioned directory behavior. - Rename versioned directories to clarify they're versioned. - Handle multiproc build of shared .wixlib for x86 SDK packages. - Clean up empty versioned directories. * Clean up and add test collateral. * Disable Arm64 for now. * Conditionalize x86 and Arm64 SDKs. Co-authored-by: Saleem Abdulrasool <[email protected]>
1 parent 6327281 commit 50691ce

33 files changed

+899
-206
lines changed

platforms/Windows/Directory.Build.props

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22
<Project>
33
<PropertyGroup>
44
<ProductArchitecture Condition=" '$(ProductArchitecture)' == '' ">amd64</ProductArchitecture>
5-
<ProductArchitecture>$(ProductArchitecture)</ProductArchitecture>
6-
75
<ProductVersion Condition=" '$(ProductVersion)' == '' ">0.0.0</ProductVersion>
8-
<ProductVersion>$(ProductVersion)</ProductVersion>
96
</PropertyGroup>
107

8+
<PropertyGroup>
9+
<NonSemVerProductVersion>$([System.Text.RegularExpressions.Regex]::Replace($(ProductVersion), `[-+].*`, ``))</NonSemVerProductVersion>
10+
<MajorMinorProductVersion>$([System.Text.RegularExpressions.Regex]::Match($(NonSemVerProductVersion), `\d+\.\d+`))</MajorMinorProductVersion>
11+
<MajorMinorProductVersion Condition="'$(MajorMinorProductVersion)' == ''">$(NonSemVerProductVersion)</MajorMinorProductVersion>
12+
</PropertyGroup>
13+
14+
<Import Project="SideBySideUpgradeStrategy.props" />
15+
1116
<PropertyGroup Condition=" '$(ProductArchitecture)' == 'amd64' ">
1217
<Platform>x64</Platform>
1318
</PropertyGroup>
@@ -24,34 +29,76 @@
2429
<PropertyGroup>
2530
<RootBuildFolder>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)build\))</RootBuildFolder>
2631
<BaseOutputPath>$(RootBuildFolder)</BaseOutputPath>
32+
<BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
2733
<BaseIntermediateOutputPath>$(BaseOutputPath)obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
28-
<OutputPath>$(BaseOutputPath)$(Configuration)\$(ProductArchitecture)\</OutputPath>
34+
<IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == ''">$(BaseIntermediateOutputPath)$(ProductArchitecture)\$(Configuration)\</IntermediateOutputPath>
35+
<OutputPath Condition="'$(OutputPath)' == ''">$(BaseOutputPath)$(Configuration)\$(ProductArchitecture)\</OutputPath>
2936

30-
<DefaultCompressionLevel Condition="'$(DefaultCompressionLevel)' == ''">high</DefaultCompressionLevel>
37+
<BundleFlavor Condition="'$(BundleFlavor)' == ''">online</BundleFlavor>
3138
</PropertyGroup>
3239

3340
<PropertyGroup>
34-
<PackageScope>perMachine</PackageScope>
41+
<!--
42+
ICE38 is about mixing per-user and per-machine resources (not a thing for us).
43+
ICE61 is a warning about allowing "same-version" major upgrades, something we want.
44+
ICE64 is documented as not being an issue when packages are always per-user.
45+
ICE91 is about "roaming scenarios," which doesn't apply to our use of LocalAppDataFolder.
46+
-->
47+
<SuppressIces>ICE38;ICE61;ICE64;ICE91</SuppressIces>
48+
<PackageScope>perUser</PackageScope>
49+
</PropertyGroup>
50+
51+
<!-- High package and high bundle compression results in the smallest bundle, at the cost of build time. -->
52+
<PropertyGroup Condition="'$(BundleFlavor)' == 'offline'">
53+
<PackageCompressionLevel>high</PackageCompressionLevel>
54+
<ArePackageCabsEmbedded>false</ArePackageCabsEmbedded>
55+
3556
<IsBundleCompressed>true</IsBundleCompressed>
57+
<BundleCompressionLevel>high</BundleCompressionLevel>
58+
</PropertyGroup>
59+
60+
<PropertyGroup Condition="'$(BundleFlavor)' == 'online'">
61+
<PackageCompressionLevel>high</PackageCompressionLevel>
62+
<ArePackageCabsEmbedded>false</ArePackageCabsEmbedded>
63+
64+
<IsBundleCompressed>false</IsBundleCompressed>
65+
<BundleCompressionLevel>high</BundleCompressionLevel>
3666
</PropertyGroup>
3767

3868
<Import Project="$(USERNAME).props" Condition="Exists('$(USERNAME).props')" />
3969

70+
<PropertyGroup Condition=" '$(ProductArchitecture)' == 'x86' ">
71+
<PLATFORM_ROOT>$(PLATFORM_ROOT_X86)</PLATFORM_ROOT>
72+
<SDK_ROOT>$(SDK_ROOT_X86)</SDK_ROOT>
73+
</PropertyGroup>
74+
75+
<PropertyGroup Condition=" '$(ProductArchitecture)' == 'amd64' ">
76+
<PLATFORM_ROOT>$(PLATFORM_ROOT_AMD64)</PLATFORM_ROOT>
77+
<SDK_ROOT>$(SDK_ROOT_AMD64)</SDK_ROOT>
78+
</PropertyGroup>
79+
80+
<PropertyGroup Condition=" '$(ProductArchitecture)' == 'arm64' ">
81+
<PLATFORM_ROOT>$(PLATFORM_ROOT_ARM64)</PLATFORM_ROOT>
82+
<SDK_ROOT>$(SDK_ROOT_ARM64)</SDK_ROOT>
83+
</PropertyGroup>
84+
4085
<PropertyGroup>
86+
<DefaultCompressionLevel Condition="'$(DefaultCompressionLevel)' == ''">$(PackageCompressionLevel)</DefaultCompressionLevel>
87+
4188
<DefineConstants>
4289
$(DefineConstants);
4390
ProductArchitecture=$(ProductArchitecture);
4491
ProductVersion=$(ProductVersion);
92+
MajorMinorProductVersion=$(MajorMinorProductVersion);
4593
PackageScope=$(PackageScope);
4694
IsBundleCompressed=$(IsBundleCompressed);
95+
ArePackageCabsEmbedded=$(ArePackageCabsEmbedded);
96+
BaseReleaseDownloadUrl=$(BaseReleaseDownloadUrl);
97+
SDK_ROOT=$(SDK_ROOT);
98+
PLATFORM_ROOT=$(PLATFORM_ROOT);
4799
</DefineConstants>
48100
</PropertyGroup>
49101

50-
<PropertyGroup >
51-
<PackageScope>perMachine</PackageScope>
52-
<IsBundleCompressed>true</IsBundleCompressed>
53-
</PropertyGroup>
54-
55102
<PropertyGroup>
56103
<HarvestNoLogo>true</HarvestNoLogo>
57104
<HarvestAutogenerateGuids>true</HarvestAutogenerateGuids>
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
3-
<ItemGroup Condition="'$(MSBuildProjectName)' != 'shared' AND '$(MSBuildProjectName)' != 'runtimelib'">
3+
<ItemGroup Condition="'$(MSBuildProjectName)' != 'shared' AND '$(MSBuildProjectName)' != 'sdk' AND '$(MSBuildProjectName)' != 'rtllib' AND '$(MSBuildProjectName)' != 'rtlmsm'">
44
<ProjectReference Include="$(MSBuildThisFileDirectory)shared\shared.wixproj" />
55
</ItemGroup>
66

7+
<ItemGroup>
8+
<PackageReference Include="WixToolset.Util.wixext" Version="4.0.1" />
9+
</ItemGroup>
10+
711
<Import Project="WiXCodeSigning.targets" />
812
</Project>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project>
3+
<!--
4+
Note that these GUIDs are substituted at bind time so they skip the normal
5+
validation and cleanup that the compiler does and therefore must be
6+
"proper" GUIDs:
7+
8+
- Uppercase
9+
- Surrounded by curly braces
10+
11+
Packages keep the same upgrade codes "forever" because MSI lets you specify
12+
version ranges for upgrades, which you can find in shared/shared.wxs.
13+
14+
Bundles don't support upgrade version ranges, so the bundle upgrade code
15+
must change for every minor version _and_ stay the same for the entire
16+
lifetime of that minor version (e.g., v5.10.0 thropugh v5.10.9999).
17+
-->
18+
19+
<PropertyGroup>
20+
<BldUpgradeCode>{7E95DC06-7F84-4E8E-A038-8304AF0468FB}</BldUpgradeCode>
21+
<CliUpgradeCode>{87019842-3F3E-4227-B5C5-23A8EF72AD89}</CliUpgradeCode>
22+
<DbgUpgradeCode>{91D382AF-1E92-44DC-A4AD-AEE91C1B5160}</DbgUpgradeCode>
23+
<IdeUpgradeCode>{8DD91C86-D13D-490B-B06B-9522A9CF504C}</IdeUpgradeCode>
24+
<RtlUpgradeCode>{BEA8C6DC-F73E-445B-9486-2333D1CF2886}</RtlUpgradeCode>
25+
<SdkUpgradeCode Condition=" '$(ProductArchitecture)' == 'x86' ">{443F4D7F-38F3-47C8-9BEE-37FEB01D13C8}</SdkUpgradeCode>
26+
<SdkUpgradeCode Condition=" '$(ProductArchitecture)' == 'amd64' ">{762D10FE-EBE5-4554-BB78-FB13A4A487E3}</SdkUpgradeCode>
27+
<SdkUpgradeCode Condition=" '$(ProductArchitecture)' == 'arm64' ">{9749D9E6-E860-4FF6-9E8A-525270F471A3}</SdkUpgradeCode>
28+
</PropertyGroup>
29+
30+
<PropertyGroup Condition="'$(MajorMinorProductVersion)' == '0.0'">
31+
<BundleUpgradeCode>{963BE094-A046-47B3-83B2-BEBE92859D39}</BundleUpgradeCode>
32+
</PropertyGroup>
33+
34+
<PropertyGroup Condition="'$(MajorMinorProductVersion)' == '5.9'">
35+
<BundleUpgradeCode>{710F1827-DA4A-4BF4-BDCE-D5F2D7C0DEF2}</BundleUpgradeCode>
36+
</PropertyGroup>
37+
38+
<PropertyGroup>
39+
<DefineConstants>
40+
$(DefineConstants);
41+
BundleUpgradeCode=$(BundleUpgradeCode);
42+
BldUpgradeCode=$(BldUpgradeCode);
43+
CliUpgradeCode=$(CliUpgradeCode);
44+
DbgUpgradeCode=$(DbgUpgradeCode);
45+
IdeUpgradeCode=$(IdeUpgradeCode);
46+
RtlUpgradeCode=$(RtlUpgradeCode);
47+
SdkUpgradeCode=$(SdkUpgradeCode);
48+
</DefineConstants>
49+
</PropertyGroup>
50+
</Project>

platforms/Windows/bld/bld.wxs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
22
<Package
33
Language="1033"
4-
Manufacturer="swift.org"
4+
Manufacturer="!(loc.ManufacturerName)"
55
Name="!(loc.Bld_ProductName)"
6-
UpgradeCode="7e95dc06-7f84-4e8e-a038-8304af0468fb"
6+
UpgradeCode="$(BldUpgradeCode)"
77
Version="$(ProductVersion)"
88
Scope="$(PackageScope)">
99

10-
<Media Id="1" Cabinet="bld.cab" EmbedCab="yes" />
11-
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
10+
<Media Id="1" Cabinet="bld.cab" EmbedCab="$(ArePackageCabsEmbedded)" />
11+
12+
<WixVariable Id="SideBySidePackageUpgradeCode" Value="$(BldUpgradeCode)" />
13+
<FeatureGroupRef Id="SideBySideUpgradeStrategy" />
1214

1315
<DirectoryRef Id="_usr_include">
1416
<Directory Id="_usr_include_llvm_c" Name="llvm-c" />
@@ -324,11 +326,8 @@
324326
</ComponentGroup>
325327

326328
<ComponentGroup Id="EnvironmentVariables">
327-
<Component Id="SystemEnvironmentVariables" Condition="ALLUSERS=1" Directory="INSTALLDIR" Guid="d01ea5b8-0f8a-4388-9b61-1186efddfc39">
328-
<Environment Id="SystemPath" Action="set" Name="Path" Part="last" Permanent="no" System="yes" Value="[_usr_bin]" />
329-
</Component>
330-
<Component Id="UserEnvironmentVariables" Condition="NOT ALLUSERS=1" Directory="INSTALLDIR" Guid="ab52b870-23ee-42e8-9581-3fcbdfb9228c">
331-
<Environment Id="UserPath" Action="set" Name="Path" Part="last" Permanent="no" System="no" Value="[_usr_bin]" />
329+
<Component Id="UserPathVariable" Condition="NOT ALLUSERS=1" Directory="_usr_bin" Guid="ab52b870-23ee-42e8-9581-3fcbdfb9228c">
330+
<Environment Action="set" Name="Path" Part="last" Permanent="no" System="no" Value="[_usr_bin]" />
332331
</Component>
333332
</ComponentGroup>
334333

@@ -347,6 +346,7 @@
347346
<ComponentGroupRef Id="ClangResources" />
348347

349348
<ComponentGroupRef Id="EnvironmentVariables" />
349+
<ComponentGroupRef Id="VersionedDirectoryCleanup" />
350350
</Feature>
351351
</Package>
352352
</Wix>
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,32 @@
11
<Project Sdk="WixToolset.Sdk/4.0.1">
22
<PropertyGroup>
33
<OutputType>Bundle</OutputType>
4-
<DefineConstants>$(DefineConstants);MSI_LOCATION=$(MSI_LOCATION);</DefineConstants>
4+
<DefaultCompressionLevel>$(BundleCompressionLevel)</DefaultCompressionLevel>
5+
<DefineConstants>
6+
$(DefineConstants);
7+
INCLUDE_X86_SDK=$(INCLUDE_X86_SDK);
8+
INCLUDE_ARM64_SDK=$(INCLUDE_ARM64_SDK);
9+
</DefineConstants>
510
</PropertyGroup>
611

712
<ItemGroup>
813
<PackageReference Include="WixToolset.Bal.wixext" Version="4.0.1" />
914
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\bld\bld.wixproj" BindName="bld" />
18+
<ProjectReference Include="..\cli\cli.wixproj" BindName="cli" />
19+
<ProjectReference Include="..\dbg\dbg.wixproj" BindName="dbg" />
20+
<ProjectReference Include="..\ide\ide.wixproj" BindName="ide" />
21+
<ProjectReference Include="..\rtl\msi\rtlmsi.wixproj" BindName="rtl" />
22+
<ProjectReference Include="..\sdk\sdk.wixproj" Properties="ProductArchitecture=amd64;Platform=x86" BindName="sdk_amd64" />
23+
</ItemGroup>
24+
25+
<ItemGroup Condition=" '$(INCLUDE_X86_SDK)' != '' ">
26+
<ProjectReference Include="..\sdk\sdk.wixproj" Properties="ProductArchitecture=x86;Platform=x86" BindName="sdk_x86" />
27+
</ItemGroup>
28+
29+
<ItemGroup Condition=" '$(INCLUDE_ARM64_SDK)' != '' ">
30+
<ProjectReference Include="..\sdk\sdk.wixproj" Properties="ProductArchitecture=arm64;Platform=x86" BindName="sdk_arm64" />
31+
</ItemGroup>
1032
</Project>
Lines changed: 104 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,118 @@
11
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
22
<Bundle
3-
Name="!(loc.BundleName)"
3+
Name="!(loc.BundleName) $(ProductVersion)"
44
Version="$(ProductVersion)"
5-
Manufacturer="swift.org"
5+
Manufacturer="!(loc.ManufacturerName)"
66
Compressed="$(IsBundleCompressed)"
7-
UpgradeCode="710F1827-DA4A-4BF4-BDCE-D5F2D7C0DEF2">
7+
UpgradeCode="$(BundleUpgradeCode)">
88

9-
<!-- This bundle should also upgrade the "old" bundles. -->
10-
<RelatedBundle Id="8c75f32a-7bdf-4c61-abf6-c7e1c4b8fbf6" Action="upgrade" />
11-
<RelatedBundle Id="151d42d9-8877-4b72-ac62-4695243a35c1" Action="upgrade" />
9+
<!-- Avoid spaces in log file names, for ease of log spelunking. -->
10+
<Log Prefix="SwiftToolKit_$(ProductVersion)" />
1211

1312
<BootstrapperApplication>
1413
<bal:WixStandardBootstrapperApplication
1514
LicenseUrl="https://www.swift.org/LICENSE.txt"
16-
LogoFile="swift.png"
17-
SuppressOptionsUI="yes"
18-
SuppressRepair="no"
19-
Theme="hyperlinkLicense" />
15+
Theme="hyperlinkSidebarLicense"
16+
LocalizationFile="..\shared\swift.en-us.wxl"
17+
ThemeFile="theme.xml" />
18+
<Payload SourceFile="swift_side.png" />
2019
</BootstrapperApplication>
2120

21+
<!--
22+
Keep `InstallRoot` in sync with the INSTALLROOT definition in shared.wxs.
23+
The bundle variable here will overwrite the default authored in the MSI
24+
packages, but avoid the confusion if the default directory should change.
25+
-->
26+
<Variable Name="InstallRoot" bal:Overridable="yes" Type="formatted" Persisted="yes"
27+
Value="[LocalAppDataFolder]Programs\Swift" />
28+
<Variable Name="OptionsInstallBld" bal:Overridable="yes" Persisted="yes" Value="1" />
29+
<Variable Name="OptionsInstallCli" bal:Overridable="yes" Persisted="yes" Value="1" />
30+
<Variable Name="OptionsInstallDbg" bal:Overridable="yes" Persisted="yes" Value="1" />
31+
<Variable Name="OptionsInstallIde" bal:Overridable="yes" Persisted="yes" Value="1" />
32+
<Variable Name="OptionsInstallRtl" bal:Overridable="yes" Persisted="yes" Value="1" />
33+
<Variable Name="OptionsInstallSdkX86" bal:Overridable="yes" Persisted="yes" Value="1" />
34+
<Variable Name="OptionsInstallSdkAMD64" bal:Overridable="yes" Persisted="yes" Value="1" />
35+
<Variable Name="OptionsInstallSdkArm64" bal:Overridable="yes" Persisted="yes" Value="1" />
36+
37+
<!--
38+
For the online bundle, we need to provide a download URL for each package and its .cabs.
39+
(The SourceFile attribute is also required, both for the offline bundle and for Burn
40+
to get the hash of the packages. Note that the packages and .cabs available for
41+
download must exactly match the ones used when building the bundle. Burn validates
42+
downloads by their hashes.)
43+
44+
`BaseReleaseDownloadUrl` is a preprocessor variable that provides the URL to the
45+
directory containing the packages for that bundle. So, for example, for the bundle at:
46+
47+
https://download.swift.org/swift-5.8.1-release/windows10/swift-5.8.1-RELEASE/swift-5.8.1-RELEASE-windows10.exe
48+
49+
`BaseReleaseDownloadUrl` would be `https://download.swift.org/swift-5.8.1-release/windows10/swift-5.8.1-RELEASE`.
50+
51+
`{2}` is the file name of the payload.
52+
53+
Schema doc is at https://wixtoolset.org/docs/schema/wxs/msipackage/.
54+
-->
55+
2256
<Chain>
23-
<MsiPackage SourceFile="$(MSI_LOCATION)\runtime.msi" />
24-
<MsiPackage SourceFile="$(MSI_LOCATION)\bld.msi" />
25-
<MsiPackage SourceFile="$(MSI_LOCATION)\cli.msi" />
26-
<MsiPackage SourceFile="$(MSI_LOCATION)\dbg.msi" />
27-
<MsiPackage SourceFile="$(MSI_LOCATION)\ide.msi" />
28-
<MsiPackage SourceFile="$(MSI_LOCATION)\sdk.msi" />
29-
</Chain>
57+
<MsiPackage
58+
SourceFile="!(bindpath.rtl)\rtl.msi"
59+
InstallCondition="OptionsInstallRtl"
60+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
61+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
62+
</MsiPackage>
63+
64+
<MsiPackage
65+
SourceFile="!(bindpath.bld)\bld.msi"
66+
InstallCondition="OptionsInstallBld"
67+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
68+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
69+
</MsiPackage>
70+
71+
<MsiPackage
72+
SourceFile="!(bindpath.cli)\cli.msi"
73+
InstallCondition="OptionsInstallCli"
74+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
75+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
76+
</MsiPackage>
77+
78+
<MsiPackage
79+
SourceFile="!(bindpath.dbg)\dbg.msi"
80+
InstallCondition="OptionsInstallDbg"
81+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
82+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
83+
</MsiPackage>
84+
85+
<MsiPackage
86+
SourceFile="!(bindpath.ide)\ide.msi"
87+
InstallCondition="OptionsInstallIde"
88+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
89+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
90+
</MsiPackage>
91+
92+
<?if $(INCLUDE_X86_SDK) == true?>
93+
<MsiPackage
94+
SourceFile="!(bindpath.sdk_x86)\sdk.x86.msi"
95+
InstallCondition="OptionsInstallSdkX86"
96+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
97+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
98+
</MsiPackage>
99+
<?endif?>
100+
101+
<MsiPackage
102+
SourceFile="!(bindpath.sdk_amd64)\sdk.amd64.msi"
103+
InstallCondition="OptionsInstallSdkAMD64"
104+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
105+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
106+
</MsiPackage>
107+
108+
<?if $(INCLUDE_ARM64_SDK) == true ?>
109+
<MsiPackage
110+
SourceFile="!(bindpath.sdk_arm64)\sdk.arm64.msi"
111+
InstallCondition="OptionsInstallSdkArm64"
112+
DownloadUrl="$(BaseReleaseDownloadUrl)/{2}">
113+
<MsiProperty Name="INSTALLROOT" Value="[InstallRoot]" />
114+
</MsiPackage>
115+
<?endif?>
116+
</Chain>
30117
</Bundle>
31118
</Wix>

platforms/Windows/bundle/swift.png

-3.32 KB
Binary file not shown.
6.31 KB
Loading

0 commit comments

Comments
 (0)