<ItemGroup>
<SubsetName
+ Include="Bundle"
+ Description="The shared framework bundle installer projects. Produces .exe installers for Windows." />
+ </ItemGroup>
+ <ItemGroup Condition="'$(SubsetToLower)' == '' or $(SubsetToLower.Contains('bundle'))">
+ <BundleProjectToBuild Include="$(RepoRoot)src\pkg\projects\**\*.bundleproj" SignPhase="BundleInstallerFiles" />
+ <ProjectToBuild Include="@(BundleProjectToBuild)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <SubsetName
Include="Installer"
Description="Generates additional installers. This produces the shared frameworks and their installers." />
</ItemGroup>
<ItemGroup Condition="'$(SubsetToLower)' == '' or $(SubsetToLower.Contains('installer'))">
<InstallerProjectToBuild Include="$(RepoRoot)src\pkg\packaging\installers.proj" />
+ <InstallerProjectToBuild Include="$(RepoRoot)src\pkg\packaging\vs-insertion-packages.proj" />
<ProjectToBuild Include="@(InstallerProjectToBuild)" />
</ItemGroup>
<WixObjRoot>$(IntermediateOutputRootPath)wix/</WixObjRoot>
<WixObjDir>$(WixObjRoot)$(MSBuildProjectName)/</WixObjDir>
<MsiArch>$(TargetArchitecture)</MsiArch>
- <MicrosoftEulaFile>$(MSBuildThisFileDirectory)packaging/windows/eula.rtf</MicrosoftEulaFile>
-
- <GenerateMSI>true</GenerateMSI>
- <GenerateMSI Condition="'$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'arm64'">false</GenerateMSI>
- <GenerateMSI Condition="'$(OSGroup)' != 'Windows_NT'">false</GenerateMSI>
-
- <GeneratePkg Condition="'$(OSGroup)' == 'OSX'">true</GeneratePkg>
<!--
Allow packaging one build's outputs for a different RID. For example, package portable bits
Acquire WiX tools, if not present.
-->
<Target Name="AcquireWix"
- DependsOnTargets="GetAcquireWixProperties"
- Condition="'$(GenerateMSI)' == 'true'">
+ DependsOnTargets="GetAcquireWixProperties">
<MSBuild Projects="$(AcquireWixProjectFile)" Targets="AcquireWixCore" />
</Target>
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <UsingTask TaskName="DownloadFile" AssemblyFile="$(ArcadeSdkBuildTasksAssembly)" />
+
+ <!--
+ Acquire NuGet.exe, if not present.
+ -->
+ <Target Name="AcquireNuGetExeCore"
+ Condition="!Exists('$(NuGetExeFile)')"
+ DependsOnTargets="GetAcquireNuGetExeProperties">
+ <MakeDir Directories="$(NuGetExeToolDir)" />
+ <DownloadFile
+ Uri="$(NuGetExeDownloadUrl)"
+ DestinationPath="$(NuGetExeFile)"
+ Overwrite="true" />
+ </Target>
+
+ <Import Project="$(MSBuildThisFileDirectory)..\packaging-tools.targets" />
+
+</Project>
--- /dev/null
+<Project>
+ <!--
+ Shared properties specific to bundle projects (bundleproj).
+ -->
+
+ <PropertyGroup>
+ <GenerateExeBundle>true</GenerateExeBundle>
+ </PropertyGroup>
+
+</Project>
--- /dev/null
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!--
+ Shared targets specific to bundle projects (bundleproj).
+ -->
+
+ <Target Name="GetSharedFrameworkBundleInstallerProperties"
+ BeforeTargets="GetInstallerProperties">
+ <Error
+ Condition="'@(BundleComponentReference)' == ''"
+ Text="Bundle project lacks references to components that it should bundle." />
+
+ <PropertyGroup>
+ <InstallerName>$(ShortFrameworkName)-runtime</InstallerName>
+ <WixProductMoniker>$(SharedFrameworkBrandName)</WixProductMoniker>
+ </PropertyGroup>
+ </Target>
+
+ <!-- Target overrides (can't be shared with other package projects) -->
+
+ <Target Name="Build"
+ DependsOnTargets="GenerateInstallers" />
+
+</Project>
Shared properties specific to packaging projects (pkgproj).
-->
+ <PropertyGroup>
+ <GenerateDeb>true</GenerateDeb>
+ <GenerateRpm>true</GenerateRpm>
+ <GeneratePkg>true</GeneratePkg>
+ <GenerateMSI>true</GenerateMSI>
+ </PropertyGroup>
+
<ItemGroup>
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Packaging" Version="$(MicrosoftDotNetBuildTasksPackagingPackageVersion)" />
</ItemGroup>
Shared targets specific to projects building 'Microsoft.*.App*' packages.
-->
+ <Target Name="GetTargetingPackInstallerProperties"
+ Condition="'$(FrameworkPackType)' == 'targeting'"
+ BeforeTargets="GetInstallerProperties">
+ <PropertyGroup>
+ <InstallerName>$(ShortFrameworkName)-targeting-pack</InstallerName>
+ <WixProductMoniker>$(TargetingPackBrandName)</WixProductMoniker>
+ <VSInsertionShortComponentName>TargetingPack</VSInsertionShortComponentName>
+ </PropertyGroup>
+ </Target>
+
+ <Target Name="GetAppHostPackInstallerProperties"
+ Condition="'$(FrameworkPackType)' == 'apphost'"
+ BeforeTargets="GetInstallerProperties">
+ <PropertyGroup>
+ <InstallerName>$(ShortFrameworkName)-apphost-pack</InstallerName>
+ <WixProductMoniker>$(AppHostPackBrandName)</WixProductMoniker>
+ <VSInsertionShortComponentName>AppHostPack</VSInsertionShortComponentName>
+ </PropertyGroup>
+ </Target>
+
+ <Target Name="GetRuntimePackInstallerProperties"
+ Condition="'$(FrameworkPackType)' == 'runtime'"
+ BeforeTargets="GetInstallerGenerationFlags">
+ <!-- Runtime packs are obtained only through NuGet. -->
+ <PropertyGroup>
+ <GenerateDeb>false</GenerateDeb>
+ <GenerateRpm>false</GenerateRpm>
+ <GeneratePkg>false</GeneratePkg>
+ <GenerateMSI>false</GenerateMSI>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ This targets file is imported for all pkgproj files, but some (like DotNetHostPolicy) don't need
+ installers and just use the normal packaging tooling.
+ -->
+ <Target Name="DisableInstallerGenerationForPkgprojWithoutInstallers"
+ Condition="'$(FrameworkPackType)' == ''"
+ BeforeTargets="GetInstallerGenerationFlags">
+ <PropertyGroup>
+ <GenerateDeb>false</GenerateDeb>
+ <GenerateRpm>false</GenerateRpm>
+ <GeneratePkg>false</GeneratePkg>
+ </PropertyGroup>
+
+ <!--
+ Generate MSIs for projects that build a part of the shared framework (host, hostfxr) with this
+ tooling. Other installer types are not supported and Core-Setup infra generates them.
+ -->
+ <PropertyGroup Condition="'$(GenerateSharedFrameworkPart)' != 'true'">
+ <GenerateMSI>false</GenerateMSI>
+ </PropertyGroup>
+ </Target>
+
<!--
Copy the files in the package's data/ dir to a layout directory. This is what the pack installer
will place in the dotnet install dir.
-->
<PropertyGroup>
+ <GenerateMSI>true</GenerateMSI>
+ <GenerateCompressedArchive>true</GenerateCompressedArchive>
+ </PropertyGroup>
+
+ <PropertyGroup>
<TargetFramework>$(NETCoreAppFramework)</TargetFramework>
<PackageId>unused</PackageId>
<UsingTask TaskName="ProcessSharedFrameworkDeps" AssemblyFile="$(LocalBuildToolsTaskFile)" />
+ <Target Name="GetSharedFrameworkInstallerProperties"
+ Condition="'$(GenerateSharedFramework)' == 'true'"
+ DependsOnTargets="GetInstallerBrandingNames"
+ BeforeTargets="
+ GetInstallerGenerationFlags;
+ GetInstallerProperties">
+ <PropertyGroup>
+ <InstallerName>$(ShortFrameworkName)-runtime</InstallerName>
+ <WixProductMoniker>$(SharedFrameworkBrandName)</WixProductMoniker>
+ <VSInsertionShortComponentName>SharedFramework</VSInsertionShortComponentName>
+ </PropertyGroup>
+ </Target>
+
<Target Name="GetPackageReference"
DependsOnTargets="GetProductVersions"
BeforeTargets="CollectPackageReferences">
<Target Name="GenerateInstallers"
DependsOnTargets="
- GetInstallerProperties;
+ GetInstallerGenerationFlags;
GenerateDeb;
GenerateRpm;
GenerateMsi;
+ GenerateExeBundle;
GeneratePkg;
GenerateCompressedArchive" />
- <Target Name="GenerateDeb" DependsOnTargets="TestDebuild;CreateDeb" Condition="'$(BuildDebPackage)' == 'true'"/>
- <Target Name="GenerateRpm" DependsOnTargets="TestFPMTool;CreateRpm" Condition="'$(BuildRpmPackage)' == 'true'"/>
- <Target Name="GenerateMsi" DependsOnTargets="CreateMsi" Condition="'$(GenerateMSI)' == 'true'"/>
+ <Target Name="GenerateDeb" DependsOnTargets="TestDebuild;CreateDeb" Condition="'$(GenerateDeb)' == 'true'"/>
+ <Target Name="GenerateRpm" DependsOnTargets="TestFPMTool;CreateRpm" Condition="'$(GenerateRpm)' == 'true'"/>
+ <Target Name="GenerateMsi" DependsOnTargets="CreateWixInstaller" Condition="'$(GenerateMSI)' == 'true'"/>
+ <Target Name="GenerateExeBundle" DependsOnTargets="CreateWixInstaller" Condition="'$(GenerateExeBundle)' == 'true'"/>
<Target Name="GeneratePkg" DependsOnTargets="CreatePkg" Condition="'$(GeneratePkg)' == 'true'"/>
<Target Name="GenerateCompressedArchive" DependsOnTargets="CreateCompressedArchive" Condition="'$(GenerateCompressedArchive)' == 'true'"/>
<!--
Create MSI installer, using WiX tools.
-->
- <Target Name="CreateMsi"
+ <Target Name="CreateWixInstaller"
DependsOnTargets="
GetInstallerProperties;
RunLightLinker">
- <Message Text="$(MSBuildProjectName) -> $(InstallerFile)" Importance="high" />
+ <Error
+ Condition="'$(GenerateExeBundle)' == 'true' and '$(GenerateMSI)' == 'true'"
+ Text="GenerateExeBundle and GenerateMSI are both set, but only one can be created at a time." />
+
+ <Message Text="$(MSBuildProjectName) -> $(OutInstallerFile)" Importance="high" />
</Target>
<Target Name="CreateCompressedArchive"
GetInstallerProperties;
FixLayoutPermissions">
<PropertyGroup>
+ <MacOSComponentName>com.microsoft.$(ShortFrameworkName).pack.$(FrameworkPackType).$(ProductVersion).component.osx.x64</MacOSComponentName>
+ <MacOSSharedInstallDir>/usr/local/share/dotnet</MacOSSharedInstallDir>
+
<_pkgArgs></_pkgArgs>
<_pkgArgs>$(_pkgArgs) --root $(PackLayoutDir)</_pkgArgs>
<_pkgArgs>$(_pkgArgs) --identifier $(MacOSComponentName)</_pkgArgs>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="framework.bundle.props" Condition="'$(MSBuildProjectExtension)' == '.bundleproj'" />
<Import Project="framework.dependency.props" Condition="'$(MSBuildProjectExtension)' == '.depproj'" />
<Import Project="framework.packaging.props" Condition="'$(MSBuildProjectExtension)' == '.pkgproj'" />
<Import Project="framework.sharedfx.props" Condition="'$(MSBuildProjectExtension)' == '.sfxproj'" />
Include common targets for specific project types. These files include BuildTools target
overrides that shouldn't be applied to other projects.
-->
+ <Import Project="framework.bundle.targets" Condition="'$(MSBuildProjectExtension)' == '.bundleproj'" />
<Import Project="framework.dependency.targets" Condition="'$(MSBuildProjectExtension)' == '.depproj'" />
<Import Project="framework.packaging.targets" Condition="'$(MSBuildProjectExtension)' == '.pkgproj'" />
<Import Project="framework.sharedfx.targets" Condition="'$(MSBuildProjectExtension)' == '.sfxproj'" />
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile" />
- <!--
- Set up properties for installer file. These depend on properties defined in the project file.
- (Unlike properties set up in packaging-tools.props, which shouldn't.)
- -->
- <Target Name="GetInstallerProperties"
- DependsOnTargets="
- GetInstallerBrandingNames;
- GetProductVersions">
- <!-- Detect framework pack suffix and apply defaults. -->
- <PropertyGroup Condition="'$(FrameworkPackType)' == 'targeting'">
- <InstallerName>$(ShortFrameworkName)-targeting-pack</InstallerName>
- <WixProductMoniker>$(TargetingPackBrandName)</WixProductMoniker>
- </PropertyGroup>
+ <Target Name="GetInstallerGenerationFlags">
+ <!-- Filter the installer generation/build flags for the current build machine. -->
+ <PropertyGroup>
+ <_supportsWixBasedInstallers>true</_supportsWixBasedInstallers>
+ <_supportsWixBasedInstallers Condition="'$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'arm64'">false</_supportsWixBasedInstallers>
+ <_supportsWixBasedInstallers Condition="'$(OSGroup)' != 'Windows_NT'">false</_supportsWixBasedInstallers>
- <PropertyGroup Condition="'$(FrameworkPackType)' == 'apphost'">
- <InstallerName>$(ShortFrameworkName)-apphost-pack</InstallerName>
- <WixProductMoniker>$(AppHostPackBrandName)</WixProductMoniker>
- </PropertyGroup>
+ <GenerateMSI Condition="'$(_supportsWixBasedInstallers)' != 'true'">false</GenerateMSI>
+ <GenerateExeBundle Condition="'$(_supportsWixBasedInstallers)' != 'true'">false</GenerateExeBundle>
- <!-- Runtime packs are obtained only through NuGet. -->
- <PropertyGroup Condition="'$(FrameworkPackType)' == 'runtime'">
- <BuildDebPackage>false</BuildDebPackage>
- <BuildRpmPackage>false</BuildRpmPackage>
- <GeneratePkg>false</GeneratePkg>
- <GenerateMSI>false</GenerateMSI>
+ <GeneratePkg Condition="'$(OSGroup)' != 'OSX'">false</GeneratePkg>
</PropertyGroup>
- <!-- Non-framework pkgproj shouldn't build MSIs. -->
- <PropertyGroup Condition="'$(FrameworkPackType)' == '' and '$(MSBuildProjectExtension)' == '.pkgproj'">
- <GenerateMSI>false</GenerateMSI>
- </PropertyGroup>
+ <!--
+ Apply the global Build*Package properties. These use distro-specific logic to determine if the
+ current distro should build RPM packages or Debian packages.
- <PropertyGroup Condition="'$(GenerateSharedFramework)' == 'true'">
- <InstallerName>$(ShortFrameworkName)-runtime</InstallerName>
- <WixProductMoniker>$(SharedFrameworkBrandName)</WixProductMoniker>
+ This logic is external because the legacy infra needs the values.
+ -->
+ <PropertyGroup>
+ <GenerateDeb Condition="'$(BuildDebPackage)' != 'true'">false</GenerateDeb>
+ <GenerateRpm Condition="'$(BuildRpmPackage)' != 'true'">false</GenerateRpm>
</PropertyGroup>
+ </Target>
+ <!--
+ Set up properties for installer generation. Project-type-specific properties are set up in
+ targets that use BeforeTargets="GetInstallerProperties".
+ -->
+ <Target Name="GetInstallerProperties"
+ DependsOnTargets="
+ GetInstallerBrandingNames;
+ GetProductVersions">
<Error
- Text="InstallerName starts with a '-': missing ShortFrameworkName value."
- Condition="$(InstallerName.StartsWith('-'))" />
+ Text="InstallerName '$(InstallerName)' is empty or starts with a '-': expected a value like 'dotnet-runtime'."
+ Condition="'$(InstallerName)' == '' or $(InstallerName.StartsWith('-'))" />
<PropertyGroup>
- <MacOSComponentName>com.microsoft.$(ShortFrameworkName).pack.$(FrameworkPackType).$(ProductVersion).component.osx.x64</MacOSComponentName>
- <MacOSSharedInstallDir>/usr/local/share/dotnet</MacOSSharedInstallDir>
-
<VersionedInstallerName>$(InstallerName)-$(ProductBandVersion)</VersionedInstallerName>
<VersionedInstallerName>$(VersionedInstallerName.ToLowerInvariant())</VersionedInstallerName>
<InstallerPackageRelease>1</InstallerPackageRelease>
<InstallerBuildPart Condition="'$(InstallerExtension)' == '.deb' or '$(InstallerExtension)' == '.rpm'"
>$(ProductVersion)-$(TargetArchitecture)</InstallerBuildPart>
- <!-- Location to place the installer, in bin. -->
+ <!-- Location to place the installer, in artifacts. -->
<InstallerFileNameWithoutExtension>$(InstallerName)-$(InstallerBuildPart)</InstallerFileNameWithoutExtension>
<InstallerFile Condition="'$(InstallerFile)' == ''">$(AssetOutputPath)$(InstallerFileNameWithoutExtension)$(InstallerExtension)</InstallerFile>
+ <ExeBundleInstallerFile>$(AssetOutputPath)$(InstallerFileNameWithoutExtension).exe</ExeBundleInstallerFile>
<CompressedArchiveFile>$(AssetOutputPath)$(InstallerFileNameWithoutExtension)$(CompressedFileExtension)</CompressedArchiveFile>
</PropertyGroup>
<PropertyGroup>
<SharedFrameworkArchiveSourceDir Condition="'$(SharedFrameworkArchiveSourceDir)' == ''">$(SharedFrameworkLayoutDir)shared/</SharedFrameworkArchiveSourceDir>
</PropertyGroup>
-
- <!-- Only generate installers for packs and sfxproj. -->
- <PropertyGroup Condition="'$(FrameworkPackType)' == '' and '$(GenerateSharedFramework)' != 'true'">
- <GeneratePkg>false</GeneratePkg>
- <BuildDebPackage>false</BuildDebPackage>
- <BuildRpmPackage>false</BuildRpmPackage>
- <GenerateMSI>false</GenerateMSI>
- </PropertyGroup>
-
- <!-- Use existing infra for non-Windows shared framework installers. -->
- <PropertyGroup Condition="'$(GenerateSharedFramework)' == 'true'">
- <GeneratePkg>false</GeneratePkg>
- <BuildDebPackage>false</BuildDebPackage>
- <BuildRpmPackage>false</BuildRpmPackage>
- </PropertyGroup>
</Target>
<Target Name="GetSkipBuildProps">
</Target>
<!--
+ Acquire NuGet.exe, if not present.
+ -->
+ <Target Name="AcquireNuGetExe"
+ DependsOnTargets="GetAcquireNuGetExeProperties">
+ <MSBuild Projects="$(AcquireNuGetExeProjectFile)" Targets="AcquireNuGetExeCore" />
+ </Target>
+
+ <Target Name="GetAcquireNuGetExeProperties">
+ <PropertyGroup>
+ <AcquireNuGetExeProjectFile>$(PackagingToolsDir)acquire-nuget-exe\acquire-nuget-exe.proj</AcquireNuGetExeProjectFile>
+ <!-- Using 3.5.0 to workaround https://github.com/NuGet/Home/issues/5016 -->
+ <NuGetExeDownloadUrl>https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe</NuGetExeDownloadUrl>
+ <NuGetExeToolDir>$(IntermediateOutputRootPath)nuget\</NuGetExeToolDir>
+ <NuGetExeFile>$(NuGetExeToolDir)NuGet.exe</NuGetExeFile>
+ </PropertyGroup>
+ </Target>
+
+ <!--
By default, shared frameworks are generated based on the package. This can be overridden by the
project, and in the future, the runtime pack is likely to be used to assemble the sfx.
-->
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
+ xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
+ xmlns:swid="http://schemas.microsoft.com/wix/TagExtension"
+ xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
+
+ <?include "..\variables.wxi" ?>
+
+ <Bundle
+ Name="$(var.ProductName)"
+ Manufacturer="$(var.Manufacturer)"
+ Version="$(var.DisplayVersion)"
+ UpgradeCode="$(var.UpgradeCode)"
+ AboutUrl="https://dot.net/core"
+ Compressed="yes">
+
+ <bal:Condition Message="#(loc.FailureNotSupportedCurrentOperatingSystem)">
+ ((VersionNT > v6.1) OR (VersionNT = v6.1 AND ServicePackLevel >= 1))
+ </bal:Condition>
+
+ <?if $(var.Platform)=x64?>
+ <bal:Condition Message="#(loc.FailureNotSupportedX86OperatingSystem)">
+ VersionNT64
+ </bal:Condition>
+ <?endif?>
+
+ <!--
+ List of bundles that this bundle is an upgrade for. Used to support upgrade from bundles
+ that were produced before UpdateCode was standardized per major-minor channel.
+ -->
+ <?ifdef RelatedDotNetBundleIds?>
+ <?foreach relatedId in $(var.RelatedDotNetBundleIds)?>
+ <RelatedBundle Action="Upgrade" Id="$(var.relatedId)"/>
+ <?endforeach?>
+ <?endif?>
+
+ <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.Foundation">
+ <bal:WixStandardBootstrapperApplication
+ LicenseFile="$(var.DotNetDummyEulaFile)"
+ ShowFilesInUse="yes"
+ ShowVersion="yes" />
+
+ <PayloadGroupRef Id="DotnetCoreBAPayloads" />
+ </BootstrapperApplicationRef>
+
+ <swid:Tag Regid="microsoft.com" InstallPath="[DOTNETHOME]" />
+
+ <Variable Name="DOTNETHOME" Type="string" Value="[$(var.Program_Files)]dotnet" bal:Overridable="no" />
+
+ <!-- Variables used solely for localization. -->
+ <Variable Name="BUNDLEMONIKER" Type="string" Value="$(var.ProductMoniker) ($(var.TargetArchitecture))" bal:Overridable="no" />
+ <Variable Name="PRODUCT_NAME" Type="string" Value="$(var.ProductName)" bal:Overridable="no" />
+ <Variable Name="LINK_PREREQ_PAGE" Type="string" Value="https://go.microsoft.com/fwlink/?linkid=846817" bal:Overridable="no" />
+
+ <Chain DisableSystemRestore="yes" ParallelCache="yes">
+ <?foreach chainedFile in $(var.ChainedDotNetPackageFiles)?>
+ <MsiPackage SourceFile="$(var.chainedFile)">
+ <MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
+ </MsiPackage>
+ <?endforeach?>
+ </Chain>
+ </Bundle>
+
+ <Fragment>
+ <PayloadGroup Id="DotnetCoreBAPayloads">
+ <Payload Name="thm.xml" Compressed="yes" SourceFile="$(var.BundleThmDir)\bundle.thm" />
+ <Payload Name="thm.wxl" Compressed="yes" SourceFile="$(var.BundleThmDir)\bundle.wxl" />
+
+ <Payload Name="bg.png" Compressed="yes" SourceFile="$(var.DotNetBackgroundPngFile)" />
+
+ <?foreach LCID in $(var.LcidList)?>
+ <Payload Id="thm-$(var.LCID)" Compressed="yes" Name="$(var.LCID)\thm.wxl" SourceFile="$(var.BundleThmDir)\theme\$(var.LCID)\bundle.wxl" />
+ <?endforeach?>
+
+ <Payload Name='eula.rtf' Compressed='yes' SourceFile='!(wix.WixStdbaLicenseRtf)' />
+ </PayloadGroup>
+
+ <CustomTable Id='WixStdbaInformation'>
+ <Row>
+ <Data Column='LicenseFile'>eula.rtf</Data>
+ </Row>
+ </CustomTable>
+ </Fragment>
+
+</Wix>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
-
- <?include "..\variables.wxi" ?>
-
- <Product
- Id="*"
- Name="$(var.ProductName)"
- Language="$(var.ProductLanguage)"
- Version="$(var.ProductVersion)"
- Manufacturer="$(var.Manufacturer)"
- UpgradeCode="$(var.UpgradeCode)">
-
- <?include "..\product.common.wxi" ?>
-
- <Feature Id="MainFeature" Title="Main Feature" Level="1">
- <ComponentGroupRef Id="InstallFiles" />
- </Feature>
- </Product>
-
- <Fragment>
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="$(var.Program_Files)">
- <Directory Id="DOTNETHOME" Name="dotnet"/>
- </Directory>
- </Directory>
- </Fragment>
-
-</Wix>
Manufacturer="$(var.Manufacturer)"
UpgradeCode="$(var.UpgradeCode)">
- <?include "..\product.common.wxi" ?>
+ <?include "product.common.wxi" ?>
<Feature Id="MainFeature" Title="Main Feature" Level="1">
- <ComponentGroupRef Id="InstallFiles" />
- <ComponentGroupRef Id="AuthoredRegistryKeys"/>
+ <?ifdef InstallFiles ?>
+ <ComponentGroupRef Id="InstallFiles" />
+ <?endif?>
+
+ <?ifdef AuthoredRegistryKeys ?>
+ <ComponentGroupRef Id="AuthoredRegistryKeys"/>
+ <?endif?>
<?ifdef WerRelatedKeys ?>
<ComponentGroupRef Id="WerRelatedKeys"/>
<?ifdef BreadcrumbStoreFolder ?>
<ComponentRef Id="BreadcrumbStoreFolder"/>
<?endif?>
+
+ <?ifdef ExtraComponentGroupRefIds ?>
+ <?foreach extraComponentGroupRefId in $(var.ExtraComponentGroupRefIds)?>
+ <ComponentGroupRef Id="$(var.extraComponentGroupRefId)"/>
+ <?endforeach?>
+ <?endif?>
</Feature>
+
+ <?ifdef ExtraPropertyRefIds ?>
+ <?foreach extraPropertyRefId in $(var.ExtraPropertyRefIds)?>
+ <PropertyRef Id="$(var.extraPropertyRefId)" />
+ <?endforeach?>
+ <?endif?>
+
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.Program_Files)">
- <Directory Id="DOTNETHOME" Name="dotnet" >
- <Directory Id="SHARED" Name="shared" />
- </Directory>
+ <Directory Id="DOTNETHOME" Name="dotnet" />
</Directory>
</Directory>
</Fragment>
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
- <?include "Variables.wxi" ?>
+ <?include "..\variables.wxi" ?>
<Fragment>
<Component Id="$(var.DependencyKeyId)" Directory="TARGETDIR" Win64="no">
<dep:Provides Key="$(var.DependencyKey)" />
--- /dev/null
+<?xml version="1.0"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+ <?include "..\variables.wxi" ?>
+
+ <Fragment>
+ <ComponentGroup Id="AuthoredRegistryKeys">
+ <Component Id="SetupRegistry_x86" Directory="TARGETDIR" Win64="no">
+ <RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.Platform)\$(var.RegKeyProductName)">
+
+ <?ifdef RegKeyNugetVersionExistence?>
+ <RegistryValue Action="write" Name="$(var.NugetVersion)" Type="integer" Value="1" KeyPath="yes"/>
+ <?endif?>
+
+ <?ifdef RegKeyNugetVersionValue?>
+ <RegistryValue Action="write" Name="Version" Type="string" Value="$(var.NugetVersion)" KeyPath="yes"/>
+ <?endif?>
+
+ </RegistryKey>
+ </Component>
+ </ComponentGroup>
+ </Fragment>
+</Wix>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+ <Fragment>
+ <DirectoryRef Id="DOTNETHOME">
+ <Directory Id="SHARED" Name="shared" />
+ </DirectoryRef>
+ </Fragment>
+
+</Wix>
+++ /dev/null
-<?xml version="1.0"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
- <?include "Variables.wxi" ?>
- <Fragment>
- <Component Id="$(var.DependencyKeyId)" Directory="TARGETDIR" Win64="no">
- <dep:Provides Key="$(var.DependencyKey)" />
- </Component>
- </Fragment>
-</Wix>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <?include "..\Variables.wxi" ?>
- <Fragment>
- <ComponentGroup Id="AuthoredRegistryKeys">
- <Component Id="SetupRegistry_x86" Directory="TARGETDIR" Win64="no">
- <RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.Platform)\sharedfx\$(var.FrameworkName)">
- <RegistryValue Action="write" Name="$(var.NugetVersion)" Type="integer" Value="1" KeyPath="yes"/>
- </RegistryKey>
- </Component>
- </ComponentGroup>
- </Fragment>
-</Wix>
this file and switch to wixproj. See https://github.com/wixtoolset/issues/issues/5627
-->
+ <UsingTask TaskName="ExecWithRetries" AssemblyFile="$(LocalBuildToolsTaskFile)" />
<UsingTask TaskName="StabilizeWixFileId" AssemblyFile="$(LocalBuildToolsTaskFile)" />
<!--
- If UpgradeCode isn't manually set, generate based on installer full path. Not suitable for
- bundles.
+ Generate bundle upgrade code. This code needs to be constant within a product band for upgrades.
+ -->
+ <Target Name="GetBundleUpgradeCode"
+ DependsOnTargets="GetWixBuildConfiguration"
+ Condition="
+ '$(GenerateExeBundle)' == 'true' and
+ '$(UpgradeCode)' == ''">
+ <Error
+ Condition="'$(BundleInstallerUpgradeCodeSeed)' == ''"
+ Text="BundleInstallerUpgradeCodeSeed not defined. Required to produce a stable bundle upgrade code." />
+
+ <PropertyGroup>
+ <BundleInstallerOutputGuidString>$(BundleInstallerUpgradeCodeSeed) $(ProductBandVersion) $(PackageTargetRid)</BundleInstallerOutputGuidString>
+ </PropertyGroup>
+
+ <GenerateGuidFromName Name="$(BundleInstallerOutputGuidString)">
+ <Output TaskParameter="GeneratedGuid" PropertyName="UpgradeCode" />
+ </GenerateGuidFromName>
+ </Target>
+
+ <!--
+ If UpgradeCode isn't already set, generate one based on installer full path.
-->
<Target Name="GetUpgradeCode"
- DependsOnTargets="GetInstallerProperties"
+ DependsOnTargets="GetWixBuildConfiguration"
Condition="'$(UpgradeCode)' == ''">
- <GenerateGuidFromName Name="$(InstallerFile)">
+ <GenerateGuidFromName Name="$(OutInstallerFile)">
<Output TaskParameter="GeneratedGuid" PropertyName="UpgradeCode" />
</GenerateGuidFromName>
</Target>
- <!-- Set up information to pass to WiX, depending on the type of installer being created. -->
- <Target Name="GetWixBuildConfiguration"
- DependsOnTargets="
- AcquireWix;
- GetInstallerProperties">
+ <Target Name="UseProductWixProject">
+ <ItemGroup>
+ <WixExtensions Include="WixUIExtension.dll" />
+ <WixExtensions Include="WixDependencyExtension.dll" />
+ <WixExtensions Include="WixUtilExtension.dll" />
+
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/product.wxs" />
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/provider.wxs" />
+ </ItemGroup>
+ </Target>
- <ItemGroup Condition="'$(FrameworkPackType)' != ''">
+ <Target Name="UseBundleWixProject">
+ <ItemGroup>
+ <WixExtensions Include="WixBalExtension.dll" />
+ <WixExtensions Include="WixTagExtension.dll" />
+ <WixExtensions Include="WixUtilExtension.dll" />
+
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)bundle/bundle.wxs" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="GetFrameworkPackWixConfiguration"
+ Condition="'$(FrameworkPackType)' != ''"
+ DependsOnTargets="UseProductWixProject">
+ <ItemGroup>
<DirectoryToHarvest
Include="$(PackLayoutDir)"
Name="install-files"
SubstituteVar="PackSrc"
ComponentGroupName="InstallFiles"
DirectoryRef="DOTNETHOME" />
-
- <WixSrcFile Include="$(MSBuildThisFileDirectory)pack/product.wxs" />
</ItemGroup>
+ </Target>
- <ItemGroup Condition="'$(GenerateSharedFramework)' == 'true'">
+ <Target Name="GetSharedFrameworkWixConfiguration"
+ Condition="'$(GenerateSharedFramework)' == 'true'"
+ DependsOnTargets="UseProductWixProject">
+ <ItemGroup>
<DirectoryToHarvest
Include="$(SharedFrameworkLayoutDir)shared/"
Name="install-shared-framework"
ComponentGroupName="InstallFiles"
DirectoryRef="SHARED" />
- <WixSrcFile Include="$(MSBuildThisFileDirectory)sharedFramework/product.wxs" />
- <WixSrcFile Include="$(MSBuildThisFileDirectory)sharedFramework/registrykeys.wxs" />
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/sharedfxdir.wxs" />
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/registrykeys.wxs" />
+
+ <CandleVariables Include="AuthoredRegistryKeys" Value="true" />
+ <CandleVariables Include="RegKeyNugetVersionExistence" Value="true" />
</ItemGroup>
<ItemGroup Condition="'$(IncludeWerRelatedKeys)' == 'true'">
- <WixSrcFile Include="$(MSBuildThisFileDirectory)sharedFramework/werrelatedkeys.wxs" />
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/werrelatedkeys.wxs" />
<CandleVariables Include="WerRelatedKeys" Value="true" />
</ItemGroup>
<ItemGroup Condition="'$(IncludeBreadcrumbStoreFolder)' == 'true'">
- <WixSrcFile Include="$(MSBuildThisFileDirectory)sharedFramework/breadcrumbstorefolder.wxs" />
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/breadcrumbstorefolder.wxs" />
<CandleVariables Include="BreadcrumbStoreFolder" Value="true" />
</ItemGroup>
+ </Target>
+
+ <Target Name="GetSharedFrameworkPartWixConfiguration"
+ Condition="'$(GenerateSharedFrameworkPart)' == 'true'"
+ DependsOnTargets="UseProductWixProject">
+ <ItemGroup>
+ <WixSrcFile Include="$(MSBuildThisFileDirectory)product/registrykeys.wxs" />
+ </ItemGroup>
+ </Target>
+ <Target Name="GetBundleWixConfiguration"
+ Condition="'$(GenerateExeBundle)' == 'true'"
+ DependsOnTargets="
+ UseBundleWixProject;
+ GetBundledMsiFiles">
<ItemGroup>
- <WixSrcFile Include="$(MSBuildThisFileDirectory)provider.wxs" />
+ <LocFile Include="theme\**\bundle.wxl" />
+ <LocDirName Include="$([System.String]::new('%(LocFile.RecursiveDir)').TrimEnd('\'))" />
+
+ <CandleVariables Include="DisplayVersion" Value="$(MajorVersion).$(MinorVersion).$(PatchVersion).$(BuildNumberMajor)" />
+ <CandleVariables Include="ProductBandVersion" Value="$(ProductBandVersion)" />
+ <CandleVariables Include="FrameworkDisplayVersion" Value="$(ProductVersion)" />
+ <CandleVariables Include="LcidList" Value="@(LocDirName)" />
+
+ <CandleVariables Include="DotNetBackgroundPngFile" Value="$(MSBuildThisFileDirectory)..\..\packaging\osx\sharedframework\resources\dotnetbackground.png" />
+ <CandleVariables Include="DotNetDummyEulaFile" Value="$(MSBuildThisFileDirectory)bundle\dummyEula.rtf" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <OutInstallerFile>$(ExeBundleInstallerFile)</OutInstallerFile>
+ </PropertyGroup>
+ </Target>
+
+ <!-- Set up information to pass to WiX, depending on the type of installer being created. -->
+ <Target Name="GetWixBuildConfiguration"
+ DependsOnTargets="
+ AcquireWix;
+ GetInstallerProperties;
+ GetInstallerLocations;
+ GenerateMsiVersionString;
+ GetFrameworkPackWixConfiguration;
+ GetSharedFrameworkWixConfiguration;
+ GetSharedFrameworkPartWixConfiguration;
+ GetBundleWixConfiguration">
+ <PropertyGroup>
+ <OutInstallerFile Condition="'$(OutInstallerFile)' == ''">$(InstallerFile)</OutInstallerFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <CandleVariables Include="MicrosoftEula" Value="$(MSBuildThisFileDirectory)eula.rtf" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ Ensure MSIs are built and signed (if necessary), then obtain all paths to MSIs to bundle from
+ the bundle references.
+ -->
+ <Target Name="GetBundledMsiFiles">
+ <MSBuild Projects="$(RepoRoot)signing\SignMsiFiles.proj" Targets="Build" />
+ <MSBuild Projects="@(BundleComponentReference)" Targets="Build" />
+
+ <MSBuild Projects="@(BundleComponentReference)" Targets="GetOutputWixInstallerFile">
+ <Output TaskParameter="TargetOutputs" ItemName="BundleMsiFile" />
+ </MSBuild>
+
+ <ItemGroup>
+ <CandleVariables Include="ChainedDotNetPackageFiles" Value="@(BundleMsiFile)" />
</ItemGroup>
</Target>
<Target Name="RunHeatHarvester"
+ Condition="'@(DirectoryToHarvest)' != ''"
DependsOnTargets="GetWixBuildConfiguration">
<ItemGroup>
<DirectoryToHarvest
-srd ^
-dr %(DirectoryRef) ^
-out %(WixSourceFile)" />
+
+ <CandleVariables Include="InstallFiles" Value="true" />
</ItemGroup>
- <Message Importance="High" Text="Heat '$(MSBuildProjectName)'" />
- <Exec Command="%(DirectoryToHarvest.Command)" WorkingDirectory="$(WixToolsDir)" />
+ <Exec
+ Command="%(DirectoryToHarvest.Command)"
+ WorkingDirectory="$(WixToolsDir)"
+ StandardOutputImportance="normal" />
<!--
Currently FileElementToStabilize assumes a single DirectoryToHarvest. If there were multiple,
<Target Name="RunCandleCompiler"
DependsOnTargets="
GetWixBuildConfiguration;
+ GetBundleUpgradeCode;
GetUpgradeCode;
GenerateMsiVersionString">
+ <PropertyGroup>
+ <WixDependencyKeyName Condition="'$(WixDependencyKeyName)' == ''">$(InstallerName.Replace('-', '_'))</WixDependencyKeyName>
+ <RegKeyProductName Condition="'$(RegKeyProductName)' == '' and '$(SharedFrameworkName)' != ''">sharedfx\$(SharedFrameworkName)</RegKeyProductName>
+ </PropertyGroup>
+
<ItemGroup>
+ <CandleVariables Include="SharedWixDir" Value="$(MSBuildThisFileDirectory.TrimEnd('\'))" />
+ <CandleVariables Include="DependencyKeyName" Value="$(WixDependencyKeyName)" />
+
<CandleVariables Include="%(DirectoryToHarvest.SubstituteVar)" Value="%(DirectoryToHarvest.Identity)" />
+
+ <CandleVariables Include="ExtraComponentGroupRefIds" Value="@(WixExtraComponentGroupRefId)" Condition="'@(WixExtraComponentGroupRefId)' != ''" />
+ <CandleVariables Include="FrameworkName" Value="$(SharedFrameworkName)" Condition="'$(SharedFrameworkName)' != ''" />
+ <CandleVariables Include="RegKeyProductName" Value="$(RegKeyProductName)" Condition="'$(RegKeyProductName)' != ''" />
+
+ <CandleVariables Include="ProductMoniker" Value="$(WixProductMoniker)" />
+ <CandleVariables Include="BuildVersion" Value="$(MsiVersionString)" />
+ <CandleVariables Include="NugetVersion" Value="$(ProductVersion)" />
+ <CandleVariables Include="TargetArchitecture" Value="$(TargetArchitecture)" />
+ <CandleVariables Include="UpgradeCode" Value="$(UpgradeCode)" />
</ItemGroup>
<PropertyGroup>
<_wixArgs></_wixArgs>
<_wixArgs>$(_wixArgs) -nologo</_wixArgs>
- <_wixArgs>$(_wixArgs) -ext WixDependencyExtension.dll</_wixArgs>
<_wixArgs>$(_wixArgs) -arch $(MsiArch)</_wixArgs>
+ <_wixArgs>$(_wixArgs) -out "$(WixObjDir)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dMicrosoftEula="$(MicrosoftEulaFile)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dProductMoniker="$(WixProductMoniker)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dFrameworkName="$(SharedFrameworkName)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dBuildVersion="$(MsiVersionString)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dNugetVersion="$(ProductVersion)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dTargetArchitecture="$(TargetArchitecture)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dUpgradeCode="$(UpgradeCode)"</_wixArgs>
- <_wixArgs>$(_wixArgs) -dDependencyKeyName="$(InstallerName.Replace('-', '_'))"</_wixArgs>
+ <_wixArgs>$(_wixArgs) @(WixExtensions -> '-ext %(Identity)', ' ')</_wixArgs>
<_wixArgs>$(_wixArgs) @(CandleVariables -> '-d%(Identity)="%(Value)"', ' ')</_wixArgs>
-
- <_wixArgs>$(_wixArgs) @(WixSrcFile -> '"%(Identity)"', ' ')</_wixArgs>
+ <_wixArgs>$(_wixArgs) @(WixSrcFile -> '"%(FullPath)"', ' ')</_wixArgs>
<_wixArgs>$(_wixArgs) @(DirectoryToHarvest -> '"%(WixSourceFile)"', ' ')</_wixArgs>
-
- <_wixArgs>$(_wixArgs) -out "$(WixObjDir)"</_wixArgs>
</PropertyGroup>
- <Message Importance="High" Text="Candle '$(MSBuildProjectName)'" />
- <Exec Command="candle.exe $(_wixArgs)" WorkingDirectory="$(WixToolsDir)" />
+ <Exec
+ Command="candle.exe $(_wixArgs)"
+ WorkingDirectory="$(WixToolsDir)"
+ StandardOutputImportance="normal" />
</Target>
<Target Name="RunLightLinker"
<PropertyGroup>
<_wixArgs></_wixArgs>
<_wixArgs>$(_wixArgs) -nologo</_wixArgs>
- <_wixArgs>$(_wixArgs) -ext WixUIExtension.dll</_wixArgs>
- <_wixArgs>$(_wixArgs) -ext WixDependencyExtension.dll</_wixArgs>
- <_wixArgs>$(_wixArgs) -ext WixUtilExtension.dll</_wixArgs>
<_wixArgs>$(_wixArgs) -cultures:en-us</_wixArgs>
+ <_wixArgs>$(_wixArgs) -out $(OutInstallerFile)</_wixArgs>
+ <_wixArgs>$(_wixArgs) @(WixExtensions -> '-ext %(Identity)', ' ')</_wixArgs>
<_wixArgs>$(_wixArgs) @(WixSrcFile -> '"$(WixObjDir)%(Filename).wixobj"', ' ')</_wixArgs>
<_wixArgs>$(_wixArgs) @(DirectoryToHarvest -> '"%(WixObjFile)"', ' ')</_wixArgs>
+ </PropertyGroup>
- <_wixArgs>$(_wixArgs) -out $(InstallerFile)</_wixArgs>
+ <!--
+ Run light.exe with retries. This hardens against interference by Windows Defender by giving
+ Defender time to catch up. Light creates a file then immediately moves it, which fails when
+ Defender is holding it open. Uses a small base time because it resolves itself quickly and we
+ don't want to delay the build very long if it's an actual build authoring error.
+ -->
+ <ExecWithRetries
+ Command="light.exe $(_wixArgs)"
+ WorkingDirectory="$(WixToolsDir)"
+ StandardOutputImportance="normal"
+ IgnoreStandardErrorWarningFormat="true"
+ RetryDelayBase="2" />
+ </Target>
+
+ <!--
+ Entry point for an MSBuild call: creates a NuGet package suitable for VS insertion.
+ -->
+ <Target Name="GenerateVSInsertionNupkg"
+ DependsOnTargets="
+ GetInstallerGenerationFlags;
+ GenerateVSInsertionNupkgCore" />
+
+ <!--
+ When using the CreateVSInsertionNupkg entry point target, we have to make sure this project's
+ MSI was created first.
+ -->
+ <Target Name="EnsureMsiBuilt">
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Build" />
+ </Target>
+
+ <Target Name="GenerateVSInsertionNupkgCore"
+ Condition="'$(GenerateMSI)' == 'true'"
+ DependsOnTargets="
+ EnsureMsiBuilt;
+ AcquireNuGetExe;
+ GetInstallerProperties;
+ GetWixBuildConfiguration">
+ <PropertyGroup>
+ <VSInsertionComponentName>$(VSInsertionCommonPrefix).$(VSInsertionProductName).$(VSInsertionShortComponentName).$(TargetArchitecture).$(ProductBandVersion)</VSInsertionComponentName>
+ <VSInsertionComponentFriendlyName>$(ProductBandVersion) $(ProductBrandPrefix) $(VSInsertionShortComponentName)</VSInsertionComponentFriendlyName>
+
+ <NupkgOutputFile>$(ArtifactsNonShippingPackagesDir)$(VSInsertionComponentName).$(ProductVersion).nupkg</NupkgOutputFile>
+
+ <ProjectUrlForVS>https://github.com/dotnet/core-setup</ProjectUrlForVS>
+
+ <PackProperties />
+ <PackProperties>$(PackProperties)COMPONENT_MSI=$(OutInstallerFile);</PackProperties>
+ <PackProperties>$(PackProperties)ARCH=$(MsiArch);</PackProperties>
+ <PackProperties>$(PackProperties)COMPONENT_NAME=$(VSInsertionComponentName);</PackProperties>
+ <PackProperties>$(PackProperties)FRIENDLY_NAME=$(VSInsertionComponentFriendlyName);</PackProperties>
+ <PackProperties>$(PackProperties)PROJECT_URL=$(ProjectUrlForVS);</PackProperties>
+
+ <PackArgs />
+ <PackArgs>$(PackArgs) $(MSBuildThisFileDirectory)vs\VS.Redist.Common.Component.nuspec</PackArgs>
+ <PackArgs>$(PackArgs) -Version $(ProductVersion)</PackArgs>
+ <PackArgs>$(PackArgs) -OutputDirectory $(ArtifactsNonShippingPackagesDir)</PackArgs>
+ <PackArgs>$(PackArgs) -NoDefaultExcludes</PackArgs>
+ <PackArgs>$(PackArgs) -NoPackageAnalysis</PackArgs>
+ <PackArgs>$(PackArgs) -Properties "$(PackProperties)"</PackArgs>
</PropertyGroup>
- <Message Importance="High" Text="Light '$(MSBuildProjectName)'" />
- <Exec Command="light.exe $(_wixArgs)" WorkingDirectory="$(WixToolsDir)" />
+ <Exec Command="$(NuGetExeFile) pack $(PackArgs)" StandardOutputImportance="normal" />
+
+ <Error
+ Condition="!Exists('$(NupkgOutputFile)')"
+ Text="Failed to find VS insertion nupkg after pack command. Expected '$(NupkgOutputFile)'" />
+
+ <Message Text="$(MSBuildProjectName) -> $(NupkgOutputFile)" Importance="High" />
</Target>
+ <Target Name="ExtractEngineBundle"
+ DependsOnTargets="GetInstallerGenerationFlags">
+ <Exec
+ Condition="'$(GenerateExeBundle)' == 'true'"
+ Command="insignia.exe -ib $(CombinedInstallerFile) -o $(CombinedInstallerEngine)"
+ WorkingDirectory="$(WixToolsDir)" />
+ </Target>
+
+ <Target Name="ReattachEngineToBundle"
+ DependsOnTargets="GetInstallerGenerationFlags">
+ <Exec
+ Condition="'$(GenerateExeBundle)' == 'true'"
+ Command="insignia.exe -ab $(CombinedInstallerEngine) $(CombinedInstallerFile) -o $(CombinedInstallerFile)"
+ WorkingDirectory="$(WixToolsDir)" />
+ </Target>
+
+ <Target Name="GetOutputWixInstallerFile"
+ DependsOnTargets="GetWixBuildConfiguration"
+ Returns="$(OutInstallerFile)"/>
+
</Project>
DependsOnTargets="
BuildDependencies;
BuildInstallers;
- BuildCombinedInstallers;
- SignCombinedInstallers;
- GenerateVSNugetPackages"
+ SignCombinedInstallers"
Condition="'$(DOTNET_BUILD_SKIP_PACKAGING)' != 'true'" />
<Target Name="BuildInstallers"
$(PackageTargets)"
Condition="'$(DOTNET_BUILD_SKIP_PACKAGING)' != 'true'" />
- <Target Name="BuildCombinedInstallers"
- DependsOnTargets="
- EnsureSignedMsiFiles;
- GenerateCombinedInstallers"
- Condition="'$(DOTNET_BUILD_SKIP_PACKAGING)' != 'true'" />
-
<Target Name="SignCombinedInstallers"
Condition="
'$(OSGroup)' == 'Windows_NT' and
'$(SkipSigning)' != 'true'"
DependsOnTargets="
- ExtractEngineBundle;
EnsureSignedBurnEngineFiles;
- ReattachEngineToBundle;
EnsureSignedBurnBundleFiles" />
<!--
Also ensures NuGet packages are built and signed.
-->
<Target Name="BuildDependencies"
- Condition="'$(UsePrebuiltPortableBinariesForInstallers)' != 'true'">
- <ItemGroup>
- <SharedFrameworkProject Include="$(SourceDir)pkg\projects\**\*.sfxproj" />
- </ItemGroup>
-
+ Condition="'$(UsePrebuiltPortableBinariesForInstallers)' != 'true'"
+ DependsOnTargets="GetSharedFrameworkProjects">
<MSBuild
Projects="
@(SharedFrameworkProject);
<Error Condition="!Exists('$(AssetOutputPath)$(SharedFrameworkSymbolsCompressedFile)')" Message="Unable to create $(AssetOutputPath)$(SharedFrameworkSymbolsCompressedFile)" />
</Target>
- <Import Project="windows\package.targets" />
<Import Project="osx\package.targets" />
<Import Project="deb\package.targets" />
<Import Project="rpm\package.targets" />
<PropertyGroup>
<InstallerDependsOn>
- GenerateMsis;
GeneratePkgs;
GenerateDebs;
GenerateRpms;
</PropertyGroup>
<Target Name="GenerateInstallers" DependsOnTargets="InitPackage;$(InstallerDependsOn)" />
- <Target Name="GenerateCombinedInstallers" DependsOnTargets="InitPackage;GenerateBundles" />
-
- <Target Name="GenerateVSNugetPackages"
- Condition="'$(OS)' == 'Windows_NT' AND '$(TargetArchitecture)' != 'arm' AND '$(TargetArchitecture)' != 'arm64'"
- DependsOnTargets="SetupVSNugetPackages"
- Inputs="@(SdkMsiComponent->'%(MsiInstallerFile)');
- $(NuSpecFile);
- $(GenerateNupkgPowershellScript)"
- Outputs="@(SdkMsiComponent->'$(PackageOutputPath)%(ComponentId).%(ComponentVersion).nupkg')">
-
- <Exec Command="powershell -NoProfile -NoLogo $(GenerateNupkgPowershellScript) ^
- '%(SdkMsiComponent.MsiInstallerFile)' ^
- '@(SdkMsiComponent->'%(ComponentVersion)')' ^
- '$(NuSpecFile)' ^
- '@(SdkMsiComponent->'$(PackageOutputPath)%(ComponentId).%(ComponentVersion).nupkg')' ^
- '$(TargetArchitecture)' ^
- '@(SdkMsiComponent->'%(ComponentId)')' ^
- '@(SdkMsiComponent->'%(ComponentFriendlyName)')' ^
- '$(ProjectUrl)' ^
- '$(BinDir)'" />
- </Target>
-
- <Target Name="SetupVSNugetPackages"
- DependsOnTargets="GetInstallerLocations">
- <PropertyGroup>
- <NuSpecFile>$(MSBuildThisFileDirectory)windows/vscomponents/VS.Redist.Common.Component.nuspec</NuSpecFile>
- <GenerateNupkgPowershellScript>$(MSBuildThisFileDirectory)windows/vscomponents/generatenupkg.ps1</GenerateNupkgPowershellScript>
- <ProjectUrl>https://github.com/dotnet/core-setup</ProjectUrl>
- </PropertyGroup>
-
- <ItemGroup>
- <SdkMsiComponent Include="HostFxrMsiNupkg">
- <MsiInstallerFile>$(HostFxrInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetCore.HostFXR.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) .NET Core HostFX Resolver</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="AppHostPackMsiNupkg">
- <MsiInstallerFile>$(AppHostPackInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetCore.AppHostPack.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) .NET Core AppHost Pack</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="SharedFrameworkMsiNupkg">
- <MsiInstallerFile>$(SharedFrameworkInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetCore.SharedFramework.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) .NET Core SharedFramework</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="SharedHostMsiNupkg">
- <MsiInstallerFile>$(SharedHostInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetCore.SharedHost.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) .NET Core SharedHost</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="NetStandardTargetingPackMsiNupkg">
- <MsiInstallerFile>$(NetStandardTargetingPackInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetStandard.TargetingPack.$(TargetArchitecture).$(NetStandardProductBandVersion)</ComponentId>
- <ComponentVersion>$(NetStandardProductBandVersion).$(PatchVersion)$(ProductVersionSuffix)</ComponentVersion>
- <ComponentFriendlyName>$(NetStandardProductBandVersion) .NET Standard TargetingPack</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="NetCoreTargetingPackMsiNupkg">
- <MsiInstallerFile>$(TargetingPackInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.NetCore.TargetingPack.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) .NET Core TargetingPack</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="WindowsDesktopMsiNupkg">
- <MsiInstallerFile>$(WindowsDesktopSharedFrameworkInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.WindowsDesktop.SharedFramework.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) WindowsDesktop SharedFramework</ComponentFriendlyName>
- </SdkMsiComponent>
- <SdkMsiComponent Include="WindowsDesktopTargetingPackMsiNupkg">
- <MsiInstallerFile>$(WindowsDesktopTargetingPackInstallerFile)</MsiInstallerFile>
- <ComponentId>VS.Redist.Common.WindowsDesktop.TargetingPack.$(TargetArchitecture).$(NETCoreAppFrameworkVersion)</ComponentId>
- <ComponentVersion>$(SharedFrameworkNugetVersion)</ComponentVersion>
- <ComponentFriendlyName>$(NETCoreAppFrameworkVersion) WindowsDesktop TargetingPack</ComponentFriendlyName>
- </SdkMsiComponent>
- </ItemGroup>
- </Target>
-
</Project>
--- /dev/null
+<Project>
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+ <PropertyGroup>
+ <TargetFramework>$(NETCoreAppFramework)</TargetFramework>
+ </PropertyGroup>
+
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+ <!--
+ Ensure MSIs are built and signed (if necessary) then call the target that generates the MSI
+ insertion NuGet packages on each project. Bundle installers aren't inserted, so this is enough.
+ -->
+ <Target Name="Build" DependsOnTargets="GetSharedFrameworkProjects">
+ <MSBuild Projects="$(RepoRoot)signing\SignMsiFiles.proj" Targets="Build" />
+ <MSBuild Projects="@(PkgprojProjectToBuild);@(SharedFrameworkProject)" Targets="GenerateVSInsertionNupkg" />
+ </Target>
+
+ <Target Name="Test" />
+
+</Project>
+++ /dev/null
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-# See the LICENSE file in the project root for more information.
-
-param(
- [Parameter(Mandatory=$true)][string]$SharedHostPublishRoot,
- [Parameter(Mandatory=$true)][string]$DotnetHostMSIOutput,
- [Parameter(Mandatory=$true)][string]$WixRoot,
- [Parameter(Mandatory=$true)][string]$ProductMoniker,
- [Parameter(Mandatory=$true)][string]$SharedHostMSIVersion,
- [Parameter(Mandatory=$true)][string]$SharedHostNugetVersion,
- [Parameter(Mandatory=$true)][string]$Architecture,
- [Parameter(Mandatory=$true)][string]$TargetArchitecture,
- [Parameter(Mandatory=$true)][string]$WixObjRoot,
- [Parameter(Mandatory=$true)][string]$SharedHostUpgradeCode
-)
-
-$RepoRoot = Convert-Path "$PSScriptRoot\..\..\..\..\.."
-$CommonScript = "$RepoRoot\tools-local\scripts\common\_common.ps1"
-if(-Not (Test-Path "$CommonScript"))
-{
- Exit -1
-}
-. "$CommonScript"
-
-$PackagingRoot = Join-Path $RepoRoot "src\pkg\packaging"
-function RunCandle
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running candle..
- $AuthWsxRoot = Join-Path $PackagingRoot "windows\host"
-
- .\candle.exe -nologo `
- -out "$WixObjRoot\" `
- -ext WixDependencyExtension.dll `
- -dHostSrc="$SharedHostPublishRoot" `
- -dMicrosoftEula="$PackagingRoot\windows\eula.rtf" `
- -dProductMoniker="$ProductMoniker" `
- -dBuildVersion="$SharedHostMSIVersion" `
- -dNugetVersion="$SharedHostNugetVersion" `
- -dTargetArchitecture="$TargetArchitecture" `
- -dUpgradeCode="$SharedHostUpgradeCode" `
- -arch $Architecture `
- "$AuthWsxRoot\host.wxs" `
- "$AuthWsxRoot\provider.wxs" | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Candle failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-function RunLight
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running light..
-
- .\light.exe -nologo `
- -ext WixUIExtension.dll `
- -ext WixDependencyExtension.dll `
- -ext WixUtilExtension.dll `
- -cultures:en-us `
- "$WixObjRoot\host.wixobj" `
- "$WixObjRoot\provider.wixobj" `
- -out $DotnetHostMSIOutput | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Light failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-if(!(Test-Path $SharedHostPublishRoot))
-{
- throw "$SharedHostPublishRoot not found"
-}
-
-if(!(Test-Path $WixObjRoot))
-{
- throw "$WixObjRoot not found"
-}
-
-Write-Host "Creating shared host MSI at $DotnetHostMSIOutput"
-
-if([string]::IsNullOrEmpty($WixRoot))
-{
- Exit -1
-}
-
-if(-Not (RunCandle))
-{
- Exit -1
-}
-
-if(-Not (RunLight))
-{
- Exit -1
-}
-
-if(!(Test-Path $DotnetHostMSIOutput))
-{
- throw "Unable to create the shared host msi."
- Exit -1
-}
-
-Write-Host -ForegroundColor Green "Successfully created shared host MSI - $DotnetHostMSIOutput"
-
-exit $LastExitCode
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <?include "Variables.wxi" ?>
- <Product Id="*" Name="$(var.ProductName)" Language="$(var.ProductLanguage)" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
- <Package Compressed="yes" InstallScope="perMachine" InstallerVersion="200" />
-
- <MajorUpgrade DowngradeErrorMessage="$(var.DowngradeErrorMessage)" Schedule="afterInstallInitialize"/>
-
- <MediaTemplate CompressionLevel="high" EmbedCab="yes" />
-
- <Feature Id="MainFeature" Title="Main Feature" Level="1">
- <ComponentGroupRef Id="InstallSharedHostandDetectionKeys" />
- </Feature>
- <Feature Id="Provider" Absent="disallow" AllowAdvertise="no" Description="Used for Ref Counting" Display="hidden" Level="1" InstallDefault="local" Title="RefCounting" TypicalDefault="install">
- <ComponentRef Id="$(var.DependencyKeyId)" />
- </Feature>
- <Property Id="ProductCPU" Value="$(var.Platform)" />
- <Property Id="RTM_ProductVersion" Value="$(var.Dotnet_ProductVersion)" />
-
- <Property Id="MSIFASTINSTALL" Value="7" />
-
- <WixVariable Id="WixUILicenseRtf" Value="$(var.MicrosoftEula)" />
-
- <Property Id="WIXUI_INSTALLDIR" Value="DOTNETHOME"/>
- <UIRef Id="WixUI_InstallDir" />
-
- <CustomActionRef Id="WixBroadcastEnvironmentChange" />
- </Product>
- <Fragment>
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="$(var.Program_Files)">
- <Directory Id="DOTNETHOME" Name="dotnet"/>
- </Directory>
- </Directory>
- </Fragment>
- <Fragment>
- <ComponentGroup Id="InstallSharedHostandDetectionKeys">
- <Component Id="cmpCoreHost" Directory="DOTNETHOME" Guid="{45399BBB-DDA5-4386-A2E9-618FB3C54A18}" >
- <File Id="fileCoreHostExe" KeyPath="yes" Source="$(var.HostSrc)\dotnet.exe" />
- <RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.Platform)\sharedhost">
- <RegistryValue Action="write" Name="Version" Type="string" Value="$(var.NugetVersion)"/>
- </RegistryKey>
- <Environment Id="E_PATH" Name="PATH" Value="[DOTNETHOME]" Part="last" Action="set" System="yes" />
- </Component>
- <Component Id="cmpLicenseFiles" Directory="DOTNETHOME" Guid="{A61CBE5B-1282-4F29-90AD-63597AA2372E}">
- <File Id="fileLicenseTxt" KeyPath="yes" Source="$(var.HostSrc)\LICENSE.txt" />
- <File Id="fileThirdPartyNoticesTxt" Source="$(var.HostSrc)\ThirdPartyNotices.txt" />
- </Component>
- </ComponentGroup>
- </Fragment>
-</Wix>
+++ /dev/null
-<?xml version="1.0"?>
-<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
-
- <?define Dotnet_ProductVersion = "$(var.BuildVersion)" ?>
- <?define Dotnet_BuildVersion = "$(var.BuildVersion)" ?>
- <?define Manufacturer = "Microsoft Corporation" ?>
- <?define ProductName = "$(var.ProductMoniker) ($(var.TargetArchitecture))" ?>
- <?define ProductLanguage = "1033" ?>
- <?define ProductVersion = "$(var.Dotnet_ProductVersion)" ?>
- <?define LCID = "$(var.ProductLanguage)"?>
- <?define DowngradeErrorMessage = "A newer version is already installed; please uninstall it and re-run setup."?>
-
- <?define Platform = "$(sys.BUILDARCH)" ?>
- <?if $(var.Platform)=x86?>
- <?define Program_Files="ProgramFilesFolder"?>
- <?define Win64AttributeValue=no?>
- <?elseif $(var.Platform)=x64?>
- <?define Program_Files="ProgramFiles64Folder"?>
- <?define Win64AttributeValue=yes?>
- <?else?>
- <?error Invalid Platform ($(var.Platform))?>
- <?endif?>
-
- <?define DependencyKey = "Dotnet_CLI_SharedHost_$(var.BuildVersion)_$(var.Platform)"?>
- <?define DependencyKeyId = "$(var.DependencyKey)" ?>
-</Include>
\ No newline at end of file
+++ /dev/null
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-# See the LICENSE file in the project root for more information.
-
-param(
- [Parameter(Mandatory=$true)][string]$HostFxrPublishRoot,
- [Parameter(Mandatory=$true)][string]$HostFxrMSIOutput,
- [Parameter(Mandatory=$true)][string]$WixRoot,
- [Parameter(Mandatory=$true)][string]$ProductMoniker,
- [Parameter(Mandatory=$true)][string]$HostFxrMSIVersion,
- [Parameter(Mandatory=$true)][string]$HostFxrNugetVersion,
- [Parameter(Mandatory=$true)][string]$Architecture,
- [Parameter(Mandatory=$true)][string]$TargetArchitecture,
- [Parameter(Mandatory=$true)][string]$WixObjRoot,
- [Parameter(Mandatory=$true)][string]$HostFxrUpgradeCode
-)
-
-$RepoRoot = Convert-Path "$PSScriptRoot\..\..\..\..\.."
-$CommonScript = "$RepoRoot\tools-local\scripts\common\_common.ps1"
-
-if(-Not (Test-Path "$CommonScript"))
-{
- Exit -1
-}
-. "$CommonScript"
-
-$PackagingRoot = Join-Path $RepoRoot "src\pkg\packaging"
-
-$InstallFileswsx = "$WixObjRoot\install-files.wxs"
-$InstallFilesWixobj = "$WixObjRoot\install-files.wixobj"
-
-function RunHeat
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running heat..
-
- .\heat.exe dir `"$HostFxrPublishRoot`" `
- -nologo `
- -template fragment `
- -sreg -gg `
- -var var.HostFxrSrc `
- -cg InstallFiles `
- -srd `
- -dr DOTNETHOME `
- -out $InstallFileswsx | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Heat failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-function RunCandle
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running candle..
- $AuthWsxRoot = Join-Path $PackagingRoot "windows\hostfxr"
-
- $ComponentVersion = $HostFxrNugetVersion.Replace('-', '_');
-
- .\candle.exe -nologo `
- -out "$WixObjRoot\" `
- -dHostFxrSrc="$HostFxrPublishRoot" `
- -dMicrosoftEula="$PackagingRoot\windows\eula.rtf" `
- -dProductMoniker="$ProductMoniker" `
- -dBuildVersion="$HostFxrMSIVersion" `
- -dNugetVersion="$HostFxrNugetVersion" `
- -dComponentVersion="$ComponentVersion" `
- -dTargetArchitecture="$TargetArchitecture" `
- -dUpgradeCode="$HostFxrUpgradeCode" `
- -arch $Architecture `
- -ext WixDependencyExtension.dll `
- "$AuthWsxRoot\hostfxr.wxs" `
- "$AuthWsxRoot\provider.wxs" `
- "$AuthWsxRoot\registrykeys.wxs" `
- $InstallFileswsx | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Candle failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-function RunLight
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running light..
-
- .\light.exe -nologo `
- -ext WixUIExtension.dll `
- -ext WixDependencyExtension.dll `
- -ext WixUtilExtension.dll `
- -cultures:en-us `
- "$WixObjRoot\hostfxr.wixobj" `
- "$WixObjRoot\provider.wixobj" `
- "$WixObjRoot\registrykeys.wixobj" `
- "$InstallFilesWixobj" `
- -out $HostFxrMSIOutput | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Light failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-if(!(Test-Path $HostFxrPublishRoot))
-{
- throw "$SharedHostPublishRoot not found"
-}
-
-if(!(Test-Path $WixObjRoot))
-{
- throw "$WixObjRoot not found"
-}
-
-Write-Host "Creating shared Host FX Resolver MSI at $HostFxrMSIOutput"
-
-if([string]::IsNullOrEmpty($WixRoot))
-{
- Exit -1
-}
-
-if(-Not (RunHeat))
-{
- Exit -1
-}
-
-if(-Not (RunCandle))
-{
- Exit -1
-}
-
-if(-Not (RunLight))
-{
- Exit -1
-}
-
-if(!(Test-Path $HostFxrMSIOutput))
-{
- throw "Unable to create the shared host msi."
- Exit -1
-}
-
-Write-Host -ForegroundColor Green "Successfully created shared host MSI - $HostFxrMSIOutput"
-
-exit $LastExitCode
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <?include "Variables.wxi" ?>
- <Product Id="*" Name="$(var.ProductName)" Language="$(var.ProductLanguage)" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
- <Package Compressed="yes" InstallScope="perMachine" InstallerVersion="200" />
-
- <MajorUpgrade DowngradeErrorMessage="$(var.DowngradeErrorMessage)" Schedule="afterInstallInitialize"/>
-
- <MediaTemplate CompressionLevel="high" EmbedCab="yes" />
-
- <Feature Id="MainFeature" Title="Main Feature" Level="1">
- <ComponentGroupRef Id="InstallFiles" />
- <ComponentGroupRef Id="AuthoredRegistryKeys"/>
- </Feature>
- <Feature Id="Provider" Absent="disallow" AllowAdvertise="no" Description="Used for Ref Counting" Display="hidden" Level="1" InstallDefault="local" Title="RefCounting" TypicalDefault="install">
- <ComponentRef Id="$(var.DependencyKeyId)" />
- </Feature>
-
- <Property Id="MSIFASTINSTALL" Value="7" />
-
- <WixVariable Id="WixUILicenseRtf" Value="$(var.MicrosoftEula)" />
-
- <Property Id="WIXUI_INSTALLDIR" Value="DOTNETHOME"/>
- <UIRef Id="WixUI_InstallDir" />
-
- <CustomActionRef Id="WixBroadcastEnvironmentChange" />
- </Product>
- <Fragment>
- <Directory Id="TARGETDIR" Name="SourceDir">
- <Directory Id="$(var.Program_Files)">
- <Directory Id="DOTNETHOME" Name="dotnet"/>
- </Directory>
- </Directory>
- </Fragment>
-</Wix>
-
+++ /dev/null
-<?xml version="1.0"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
- <?include "Variables.wxi" ?>
- <Fragment>
- <Component Id="$(var.DependencyKeyId)" Directory="TARGETDIR" Win64="no">
- <dep:Provides Key="$(var.DependencyKey)" />
- </Component>
- </Fragment>
-</Wix>
+++ /dev/null
-<?xml version="1.0"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <?include "Variables.wxi" ?>
- <Fragment>
- <ComponentGroup Id="AuthoredRegistryKeys">
- <Component Id="SetupRegistry_x86" Directory="TARGETDIR" Win64="no">
- <RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.Platform)\hostfxr">
- <RegistryValue Action="write" Name="Version" Type="string" Value="$(var.NugetVersion)" KeyPath="yes"/>
- </RegistryKey>
- </Component>
- </ComponentGroup>
- </Fragment>
-</Wix>
+++ /dev/null
-<?xml version="1.0"?>
-<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
-
- <?define HostFxr_NugetVersion = "$(var.NugetVersion)" ?>
- <?define HostFxr_ProductVersion = "$(var.BuildVersion)" ?>
- <?define HostFxr_BuildVersion = "$(var.BuildVersion)" ?>
- <?define Manufacturer = "Microsoft Corporation" ?>
- <?define ProductName = "$(var.ProductMoniker) ($(var.TargetArchitecture))" ?>
- <?define ProductLanguage = "1033" ?>
- <?define ProductVersion = "$(var.HostFxr_ProductVersion)" ?>
- <?define LCID = "$(var.ProductLanguage)"?>
- <?define DowngradeErrorMessage = "A newer version is already installed; please uninstall it and re-run setup."?>
-
- <?define Platform = "$(sys.BUILDARCH)" ?>
- <?if $(var.Platform)=x86?>
- <?define Program_Files="ProgramFilesFolder"?>
- <?define Win64AttributeValue=no?>
- <?elseif $(var.Platform)=x64?>
- <?define Program_Files="ProgramFiles64Folder"?>
- <?define Win64AttributeValue=yes?>
- <?else?>
- <?error Invalid Platform ($(var.Platform))?>
- <?endif?>
-
- <?define DependencyKey = "Dotnet_CLI_HostFxr_$(var.ComponentVersion)_$(var.Platform)"?>
- <?define DependencyKeyId = "$(var.DependencyKey)" ?>
-</Include>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <WindowsScriptRoot>$(PackagingRoot)windows\</WindowsScriptRoot>
- <InsigniaCmd>$(WixToolsDir)\insignia.exe</InsigniaCmd>
- </PropertyGroup>
-</Project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-<Import Project='package.props' />
-
- <Target Name="GenerateMsis"
- DependsOnTargets="
- AcquireWix;
- GetInstallerBrandingNames;
- GenerateMsiVersionString"
- Condition="'$(OSGroup)' == 'Windows_NT' and '$(GenerateMSI)' == 'true'">
- <GenerateGuidFromName Name="$(SharedHostInstallerFile)">
- <Output TaskParameter="GeneratedGuid" PropertyName="SharedHostUpgradeCode" />
- </GenerateGuidFromName>
-
- <GenerateGuidFromName Name="$(HostFxrInstallerFile)">
- <Output TaskParameter="GeneratedGuid" PropertyName="HostFxrUpgradeCode" />
- </GenerateGuidFromName>
-
- <ItemGroup>
- <WixOutputs Include="$(WixObjRoot)host">
- <InputDir>$(SharedHostPublishRoot)</InputDir>
- <BrandName>$(SharedHostBrandName)</BrandName>
- <InstallerName>$(SharedHostInstallerFile)</InstallerName>
- <UpgradeCode>$(SharedHostUpgradeCode)</UpgradeCode>
- </WixOutputs>
- <WixOutputs Include="$(WixObjRoot)hostfxr">
- <InputDir>$(HostFxrPublishRoot)</InputDir>
- <BrandName>$(HostFxrBrandName)</BrandName>
- <InstallerName>$(HostFxrInstallerFile)</InstallerName>
- <UpgradeCode>$(HostFxrUpgradeCode)</UpgradeCode>
- </WixOutputs>
- </ItemGroup>
-
- <RemoveDir Directories="$(WixObjRoot)" />
- <MakeDir Directories="$(WixObjRoot);@(WixOutputs);@(WixOutputs2)" />
-
- <PropertyGroup>
- <ArchParams>"$(MsiArch)" "$(TargetArchitecture)"</ArchParams>
- <CommonParams>$(MsiVersionString) $(SharedFrameworkNugetVersion) $(ArchParams)</CommonParams>
- </PropertyGroup>
-
- <Exec Command="powershell -NoProfile -NoLogo $(WindowsScriptRoot)%(WixOutputs.Filename)\generatemsi.ps1 %(WixOutputs.InputDir) %(WixOutputs.InstallerName) $(WixToolsDir) '%(WixOutputs.BrandName)' $(CommonParams) %(WixOutputs.Identity) %(WixOutputs.UpgradeCode)" />
- </Target>
-
- <Target Name="GenerateBundles"
- DependsOnTargets="
- AcquireWix;
- GetInstallerBrandingNames;
- GetBundleDisplayVersion;
- GenerateMsiVersionString"
- Condition="'$(OSGroup)' == 'Windows_NT' and '$(GenerateMSI)' == 'true'">
- <PropertyGroup>
- <SharedFxBundleScript>$(WindowsScriptRoot)sharedframework\generatebundle.ps1</SharedFxBundleScript>
- <ShareFXMsi>$(SharedFrameworkInstallerFile)</ShareFXMsi>
- <HostMsi>$(SharedHostInstallerFile)</HostMsi>
- <HostFxrMsi>$(HostFxrInstallerFile)</HostFxrMsi>
- <SharedBundle>$(CombinedInstallerFile)</SharedBundle>
- <!-- Warning: changing the value "BundleInstallerOutputGuidString" can only occur on a product-band boundary [ProductBandVersion],
- Changing "BundleInstallerOutputGuidString" mid-product-band will break the upgradability of the Shared Framework bundle installer. -->
- <BundleInstallerOutputGuidString>.NET Core Shared Framework Bundle Installer $(ProductBandVersion) $(PackageTargetRid)</BundleInstallerOutputGuidString>
- <SharedBrandName>$(SharedFrameworkBrandName)</SharedBrandName>
- <ArchParams>"$(MsiArch)" "$(TargetArchitecture)"</ArchParams>
- </PropertyGroup>
-
- <GenerateGuidFromName Name="$(BundleInstallerOutputGuidString)">
- <Output TaskParameter="GeneratedGuid" PropertyName="SharedBundleCode" />
- </GenerateGuidFromName>
-
- <PropertyGroup>
- <BundleParameters>$(ShareFXMsi) $(HostMsi) $(HostFxrMsi) $(SharedBundle) $(WixToolsDir) '$(SharedBrandName)' $(MsiVersionString) $(BundleDisplayVersion) $(ProductBandVersion) $(SharedFrameworkName) $(SharedFrameworkNugetVersion) $(SharedBundleCode) $(ArchParams)</BundleParameters>
- </PropertyGroup>
-
- <Exec Command="powershell -NoProfile -NoLogo $(SharedFxBundleScript) $(BundleParameters)" />
- </Target>
-
- <Target Name="ExtractEngineBundle" Condition="'$(OSGroup)' == 'Windows_NT' and '$(GenerateMSI)' == 'true'">
- <Exec Command="$(InsigniaCmd) -ib $(CombinedInstallerFile) -o $(CombinedInstallerEngine)" />
- </Target>
-
- <Target Name="ReattachEngineToBundle" Condition="'$(OSGroup)' == 'Windows_NT' and '$(GenerateMSI)' == 'true'">
- <Exec Command="$(InsigniaCmd) -ab $(CombinedInstallerEngine) $(CombinedInstallerFile) -o $(CombinedInstallerFile)" />
- </Target>
-
-</Project>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
- xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
- xmlns:swid="http://schemas.microsoft.com/wix/TagExtension"
- xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
- <?include "Variables.wxi" ?>
-
- <Bundle Name="$(var.ProductName)" Manufacturer="$(var.Manufacturer)"
- Version="$(var.DisplayVersion)" UpgradeCode="$(var.UpgradeCode)"
- AboutUrl="https://dot.net/core"
- Compressed="yes">
-
- <bal:Condition
- Message="#(loc.FailureNotSupportedCurrentOperatingSystem)">
- ((VersionNT > v6.1) OR (VersionNT = v6.1 AND ServicePackLevel >= 1))
- </bal:Condition>
-
- <?if $(var.Platform)=x64?>
- <bal:Condition
- Message="#(loc.FailureNotSupportedX86OperatingSystem)">
- VersionNT64
- </bal:Condition>
- <?endif?>
-
- <!-- ***** When the product-band version: "3.0" advances, remove this section ***** -->
- <?if $(var.ProductBandVersion)=3.0?>
- <?if $(var.Platform)~=x86?>
- <!-- ".NET Core 3.0.0 Preview 1" 3.0.0-preview-27122-01-win-x86 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{138DC905-5BB8-5C92-2BB2-CEEC57FD4912}"/>
- <!-- ".NET Core 3.0.0 Preview 2" 3.0.0-preview-27324-5-win-x86 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{2210ACC2-5EA6-4707-01F8-B064B94BB1C8}"/>
- <!-- ".NET Core 3.0.0 Preview 3" 3.0.0-preview3-27503-5-win-x86 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{8F802AA7-56BF-69E8-8E15-BE8FF8347CF7}"/>
- <?endif?>
- <?if $(var.Platform)~=x64?>
- <!-- ".NET Core 3.0.0 Preview 1" 3.0.0-preview-27122-01-win-x64 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{C98F9B17-536C-711E-5B31-ADA492F8B956}"/>
- <!-- ".NET Core 3.0.0 Preview 2" 3.0.0-preview-27324-5-win-x64 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{E5F8505A-5282-7C15-4388-83FB730DCC13}"/>
- <!-- ".NET Core 3.0.0 Preview 3" 3.0.0-preview3-27503-5-win-x64 upgrade-code -->
- <RelatedBundle Action="Upgrade" Id="{31F12178-5807-40A5-6799-2C9C47725A5E}"/>
- <?endif?>
- <?endif?>
- <!-- ********************************************************************************** -->
-
- <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.Foundation">
- <bal:WixStandardBootstrapperApplication
- LicenseFile="..\..\windows\sharedframework\dummyEula.rtf"
- ShowFilesInUse="yes"
- ShowVersion="yes"
- />
-
- <PayloadGroupRef Id="DotnetCoreBAPayloads" />
- </BootstrapperApplicationRef>
-
- <swid:Tag Regid="microsoft.com" InstallPath="[DOTNETHOME]" />
-
- <Variable Name="DOTNETHOME" Type="string" Value="[$(var.Program_Files)]dotnet" bal:Overridable="no" />
-
- <!-- Variables used solely for localization. -->
- <Variable Name="BUNDLEMONIKER" Type="string" Value="$(var.ProductMoniker) ($(var.TargetArchitecture))" bal:Overridable="no" />
- <Variable Name="PRODUCT_NAME" Type="string" Value="$(var.ProductName)" bal:Overridable="no" />
- <Variable Name="LINK_PREREQ_PAGE" Type="string" Value="$(var.Link_PreReqPage)" bal:Overridable="no" />
-
- <Chain DisableSystemRestore="yes" ParallelCache="yes">
- <MsiPackage SourceFile="$(var.SharedFXMsiSourcePath)">
- <MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
- </MsiPackage>
- <MsiPackage SourceFile="$(var.HostFxrMsiSourcePath)">
- <MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
- </MsiPackage>
- <MsiPackage SourceFile="$(var.SharedHostMsiSourcePath)">
- <MsiProperty Name="DOTNETHOME" Value="[DOTNETHOME]" />
- </MsiPackage>
- </Chain>
- </Bundle>
-
- <Fragment>
- <PayloadGroup Id="DotnetCoreBAPayloads">
- <Payload Name="thm.xml" Compressed="yes" SourceFile="bundle.thm" />
- <Payload Name="thm.wxl" Compressed="yes" SourceFile="bundle.wxl" />
-
- <Payload Name="bg.png" Compressed="yes" SourceFile="..\..\osx\sharedframework\resources\dotnetbackground.png" />
-
- <?foreach LCID in $(var.LcidList)?>
- <Payload Id="thm-$(var.LCID)" Compressed="yes" Name="$(var.LCID)\thm.wxl" SourceFile="theme\$(var.LCID)\bundle.wxl" />
- <?endforeach?>
-
- <Payload Name='eula.rtf' Compressed='yes' SourceFile='!(wix.WixStdbaLicenseRtf)' />
- </PayloadGroup>
-
- <CustomTable Id='WixStdbaInformation'>
- <Row>
- <Data Column='LicenseFile'>eula.rtf</Data>
- </Row>
- </CustomTable>
- </Fragment>
-
-</Wix>
+++ /dev/null
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-# See the LICENSE file in the project root for more information.
-
-param(
- [Parameter(Mandatory=$true)][string]$SharedFxMSIFile,
- [Parameter(Mandatory=$true)][string]$SharedHostMSIFile,
- [Parameter(Mandatory=$true)][string]$HostFxrMSIFile,
- [Parameter(Mandatory=$true)][string]$DotnetBundleOutput,
- [Parameter(Mandatory=$true)][string]$WixRoot,
- [Parameter(Mandatory=$true)][string]$ProductMoniker,
- [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
- [Parameter(Mandatory=$true)][string]$DotnetCLIVersion,
- [Parameter(Mandatory=$true)][string]$ProductBandVersion,
- [Parameter(Mandatory=$true)][string]$SharedFrameworkNugetName,
- [Parameter(Mandatory=$true)][string]$SharedFrameworkNugetVersion,
- [Parameter(Mandatory=$true)][string]$SharedFrameworkUpgradeCode,
- [Parameter(Mandatory=$true)][string]$TargetArchitecture,
- [Parameter(Mandatory=$true)][string]$Architecture
-)
-
-$RepoRoot = Convert-Path "$PSScriptRoot\..\..\..\..\.."
-$CommonScript = "$RepoRoot\tools-local\scripts\common\_common.ps1"
-if(-Not (Test-Path "$CommonScript"))
-{
- Exit -1
-}
-. "$CommonScript"
-
-$PackagingRoot = Join-Path $RepoRoot "src\pkg\packaging"
-
-function RunCandleForBundle
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running candle for bundle..
- $AuthWsxRoot = Join-Path $PackagingRoot "windows\sharedframework"
- $SharedFrameworkComponentVersion = $SharedFrameworkNugetVersion.Replace('-', '_');
-
- $LcidList = (Get-ChildItem "$AuthWsxRoot\theme\*\bundle.wxl").Directory.Name -join ';'
-
- .\candle.exe -nologo `
- -dMicrosoftEula="$PackagingRoot\windows\eula.rtf" `
- -dProductMoniker="$ProductMoniker" `
- -dBuildVersion="$DotnetMSIVersion" `
- -dDisplayVersion="$DotnetCLIVersion" `
- -dProductBandVersion="$ProductBandVersion" `
- -dSharedFXMsiSourcePath="$SharedFxMSIFile" `
- -dSharedHostMsiSourcePath="$SharedHostMSIFile" `
- -dHostFxrMsiSourcePath="$HostFxrMSIFile" `
- -dFrameworkName="$SharedFrameworkNugetName" `
- -dFrameworkDisplayVersion="$SharedFrameworkNugetVersion" `
- -dFrameworkComponentVersion="$SharedFrameworkComponentVersion" `
- -dFrameworkUpgradeCode="$SharedFrameworkUpgradeCode" `
- -dTargetArchitecture="$TargetArchitecture" `
- -dLcidList="$LcidList" `
- -arch "$Architecture" `
- -ext WixBalExtension.dll `
- -ext WixUtilExtension.dll `
- -ext WixTagExtension.dll `
- "$AuthWsxRoot\bundle.wxs" | Out-Host
-
- if($LastExitCode -ne 0)
- {
- $result = $false
- Write-Host "Candle failed with exit code $LastExitCode."
- }
-
- popd
- return $result
-}
-
-function RunLightForBundle
-{
- $result = $true
- pushd "$WixRoot"
-
- Write-Host Running light for bundle..
- $AuthWsxRoot = Join-Path $PackagingRoot "windows\sharedframework"
-
- $lightLogFile = $null
- $maxRetries = 5
- foreach ($retry in 0..$maxRetries)
- {
- if ($retry)
- {
- # Wait one second per number of retries. This is intended to avoid
- # interference by Windows Defender by giving it time to catch up.
- $sleepTime = $retry
- Write-Host "Retrying after $($sleepTime)s of sleep..."
- Start-Sleep $sleepTime
- Write-Host "Retrying... (#$retry of $maxRetries)"
- }
-
- $lightLogFile = Join-Path $WixTempPath "runtime-bundle-light-$retry.log"
-
- .\light.exe -nologo `
- -cultures:en-us `
- bundle.wixobj `
- -ext WixBalExtension.dll `
- -ext WixUtilExtension.dll `
- -ext WixTagExtension.dll `
- -b "$AuthWsxRoot" `
- -out $DotnetBundleOutput > $lightLogFile
-
- if($LastExitCode -ne 0)
- {
- $result = $false
-
- Write-Host "Light failed with exit code $LastExitCode. Output written to $lightLogFile"
- }
- else
- {
- $result = $true
- break
- }
- }
-
- if ($lightLogFile)
- {
- Get-Content $lightLogFile | Out-Host
- }
-
- popd
- return $result
-}
-
-Write-Host "Creating shared framework bundle at $DotnetBundleOutput"
-
-if([string]::IsNullOrEmpty($WixRoot))
-{
- Exit -1
-}
-
-$WixTempPath = Join-Path $WixRoot "wix_temp"
-New-Item -ItemType Directory -Path $WixTempPath -Force | Out-Null
-$env:WIX_TEMP = $WixTempPath
-
-if(-Not (RunCandleForBundle))
-{
- Exit -1
-}
-
-if(-Not (RunLightForBundle))
-{
- Exit -1
-}
-
-if(!(Test-Path $DotnetBundleOutput))
-{
- throw "Unable to create the dotnet bundle."
- Exit -1
-}
-
-Write-Host -ForegroundColor Green "Successfully created shared framework bundle - $DotnetBundleOutput"
-
-exit $LastExitCode
+++ /dev/null
-<?xml version="1.0"?>
-<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
-
- <?define Manufacturer = "Microsoft Corporation" ?>
- <?define ProductName = "$(var.ProductMoniker) ($(var.TargetArchitecture))" ?>
- <?define ProductLanguage = "1033" ?>
- <?define ProductVersion = "$(var.BuildVersion)" ?>
- <?define LCID = "$(var.ProductLanguage)"?>
- <?define Link_PreReqPage = "https://go.microsoft.com/fwlink/?linkid=846817"?>
- <?define DowngradeErrorMessage = "A newer version is already installed; please uninstall it and re-run setup."?>
-
- <?define Platform = "$(sys.BUILDARCH)" ?>
-
- <!--
- The provided upgrade code already between x86 and x64
- (since it is a GUID based on a string which includes the architecture)
- -->
- <?define UpgradeCode="$(var.FrameworkUpgradeCode)"?>
-
- <?if $(var.Platform)=x86?>
- <?define Program_Files="ProgramFilesFolder"?>
- <?define Win64AttributeValue=no?>
- <?elseif $(var.Platform)=x64?>
- <?define Program_Files="ProgramFiles64Folder"?>
- <?define Win64AttributeValue=yes?>
- <?else?>
- <?error Invalid Platform ($(var.Platform))?>
- <?endif?>
-
- <?define DependencyKey = "DotNet.CLI.SharedFramework.$(var.FrameworkName)_$(var.FrameworkComponentVersion)_$(var.Platform)"?>
- <?define DependencyKeyId = "$(var.DependencyKey)" ?>
-</Include>
+++ /dev/null
-# Copyright (c) .NET Foundation and contributors. All rights reserved.
-# Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-param(
- [Parameter(Mandatory=$true)][string]$MsiPath,
- [Parameter(Mandatory=$true)][string]$MsiVersion,
- [Parameter(Mandatory=$true)][string]$NuspecFile,
- [Parameter(Mandatory=$true)][string]$NupkgFile,
- [Parameter(Mandatory=$true)][string]$Architecture,
- [Parameter(Mandatory=$true)][string]$ComponentName,
- [Parameter(Mandatory=$true)][string]$ComponentFriendlyName,
- [Parameter(Mandatory=$true)][string]$ProjectUrl,
- [Parameter(Mandatory=$true)][string]$BinDir
-)
-
-$NuGetDir = Join-Path $BinDir "nuget"
-$NuGetExe = Join-Path $NuGetDir "nuget.exe"
-$OutputDirectory = [System.IO.Path]::GetDirectoryName($NupkgFile)
-
-if (-not (Test-Path $NuGetDir)) {
- New-Item -ItemType Directory -Force -Path $NuGetDir | Out-Null
-}
-
-if (-not (Test-Path $NuGetExe)) {
- # Using 3.5.0 to workaround https://github.com/NuGet/Home/issues/5016
- Write-Output "Downloading nuget.exe to $NuGetExe"
- wget https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe -OutFile $NuGetExe
-}
-
-if (Test-Path $NupkgFile) {
- Remove-Item -Force $NupkgFile
-}
-
-& $NuGetExe pack $NuspecFile -Version $MsiVersion -OutputDirectory $OutputDirectory -NoDefaultExcludes -NoPackageAnalysis -Properties COMPONENT_MSI=$MsiPath`;ARCH=$Architecture`;COMPONENT_NAME=$ComponentName`;FRIENDLY_NAME=$ComponentFriendlyName`;PROJECT_URL=$ProjectUrl
-Exit $LastExitCode
<RestoreAllBuildRids>true</RestoreAllBuildRids>
</PropertyGroup>
+ <PropertyGroup>
+ <VSInsertionProductName>NetCore</VSInsertionProductName>
+ <VSInsertionCommonPrefix>VS.Redist.Common</VSInsertionCommonPrefix>
+ </PropertyGroup>
+
<!-- Most packages need the host to be built first. -->
<ItemGroup Condition="'$(DisableOrderDependencies)' != 'true'">
<OrderProjectReference Include="@(CorehostProjectToBuild)" />
<PropertyGroup>
<VersionProp>HostVersion</VersionProp>
+
+ <InstallerName>dotnet-host</InstallerName>
+ <GenerateSharedFrameworkPart>true</GenerateSharedFrameworkPart>
</PropertyGroup>
+ <Target Name="SetupHostSpecificWixBuild"
+ DependsOnTargets="GetInstallerBrandingNames"
+ BeforeTargets="GetWixBuildConfiguration">
+ <PropertyGroup>
+ <WixProductMoniker>$(SharedHostBrandName)</WixProductMoniker>
+ <RegKeyProductName>sharedhost</RegKeyProductName>
+ <WixDependencyKeyName>Dotnet_CLI_SharedHost</WixDependencyKeyName>
+ <VSInsertionShortComponentName>SharedHost</VSInsertionShortComponentName>
+
+ <PublishRootDir>$(IntermediateOutputPath)publishRoot/</PublishRootDir>
+ </PropertyGroup>
+
+ <!-- Always clean this up to avoid side-by-side versions in unclean dev builds. -->
+ <RemoveDir Directories="$(PublishRootDir)" />
+
+ <!-- copy shared host layout -->
+ <Copy SourceFiles="$(DotNetHostBinDir)/dotnet$(ApplicationFileExtension)"
+ DestinationFolder="$(PublishRootDir)" />
+
+ <Copy SourceFiles="$(ProjectDir)THIRD-PARTY-NOTICES.TXT"
+ DestinationFiles="$(PublishRootDir)ThirdPartyNotices.txt" />
+
+ <Copy SourceFiles="$(ProjectDir)LICENSE.TXT"
+ DestinationFiles="$(PublishRootDir)LICENSE.txt"
+ Condition="'$(TargetsUnix)' == 'true'"/>
+
+ <Copy SourceFiles="$(ProjectDir)resources/LICENSE-MSFT.txt"
+ DestinationFiles="$(PublishRootDir)LICENSE.txt"
+ Condition="'$(TargetsUnix)' != 'true'"/>
+
+ <ItemGroup>
+ <WixSrcFile Include="host.wxs" />
+
+ <WixExtraComponentGroupRefId Include="InstallSharedHostandDetectionKeys" />
+
+ <CandleVariables Include="ExtraPropertyRefIds" Value="ProductCPU;RTM_ProductVersion" />
+ <CandleVariables Include="HostSrc" Value="$(PublishRootDir)" />
+ </ItemGroup>
+ </Target>
+
<Import Condition="'$(PackageTargetRuntime)' != ''" Project="$(MSBuildThisFileDirectory)runtime.$(OSGroup).$(MSBuildProjectName).props" />
</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+ <?include "$(var.SharedWixDir)\variables.wxi" ?>
+
+ <Fragment>
+
+ <ComponentGroup Id="InstallSharedHostandDetectionKeys">
+
+ <Component Id="cmpCoreHost" Directory="DOTNETHOME" Guid="{45399BBB-DDA5-4386-A2E9-618FB3C54A18}" >
+ <File Id="fileCoreHostExe" KeyPath="yes" Source="$(var.HostSrc)\dotnet.exe" />
+ <RegistryKey Root="HKLM" Key="SOFTWARE\dotnet\Setup\InstalledVersions\$(var.Platform)\sharedhost">
+ <RegistryValue Action="write" Name="Version" Type="string" Value="$(var.NugetVersion)"/>
+ </RegistryKey>
+ <Environment Id="E_PATH" Name="PATH" Value="[DOTNETHOME]" Part="last" Action="set" System="yes" />
+ </Component>
+
+ <Component Id="cmpLicenseFiles" Directory="DOTNETHOME" Guid="{A61CBE5B-1282-4F29-90AD-63597AA2372E}">
+ <File Id="fileLicenseTxt" KeyPath="yes" Source="$(var.HostSrc)\LICENSE.txt" />
+ <File Id="fileThirdPartyNoticesTxt" Source="$(var.HostSrc)\ThirdPartyNotices.txt" />
+ </Component>
+
+ </ComponentGroup>
+
+ <Property Id="ProductCPU" Value="$(var.Platform)" />
+ <Property Id="RTM_ProductVersion" Value="$(var.Dotnet_ProductVersion)" />
+
+ </Fragment>
+
+</Wix>
<PropertyGroup>
<VersionProp>HostResolverVersion</VersionProp>
+
+ <InstallerName>dotnet-hostfxr</InstallerName>
+ <GenerateSharedFrameworkPart>true</GenerateSharedFrameworkPart>
</PropertyGroup>
<ItemGroup>
<Dependency Include="Microsoft.NETCore.DotNetAppHost" VersionProp="AppHostVersion" />
</ItemGroup>
+ <Target Name="SetupHostResolverSpecificWixBuild"
+ DependsOnTargets="
+ GetProductVersions;
+ GetInstallerBrandingNames"
+ BeforeTargets="GetWixBuildConfiguration">
+ <PropertyGroup>
+ <WixProductMoniker>$(HostFxrBrandName)</WixProductMoniker>
+ <RegKeyProductName>hostfxr</RegKeyProductName>
+ <WixDependencyKeyName>Dotnet_CLI_HostFxr</WixDependencyKeyName>
+ <VSInsertionShortComponentName>HostFXR</VSInsertionShortComponentName>
+
+ <PublishRootDir>$(IntermediateOutputPath)publishRoot/</PublishRootDir>
+ </PropertyGroup>
+
+ <!-- Always clean this up to avoid side-by-side versions in unclean dev builds. -->
+ <RemoveDir Directories="$(PublishRootDir)" />
+
+ <!-- Copy files to staging location to easily set up relative directory for WiX. -->
+ <Copy
+ SourceFiles="$(DotNetHostBinDir)/$(LibraryFilePrefix)hostfxr$(LibraryFileExtension)"
+ DestinationFolder="$(PublishRootDir)host/fxr/$(HostResolverVersion)" />
+
+ <ItemGroup>
+ <CandleVariables Include="AuthoredRegistryKeys;RegKeyNugetVersionValue" Value="true" />
+
+ <DirectoryToHarvest
+ Include="$(PublishRootDir)"
+ Name="install-files"
+ SubstituteVar="HostFxrSrc"
+ ComponentGroupName="InstallFiles"
+ DirectoryRef="DOTNETHOME" />
+ </ItemGroup>
+ </Target>
+
<Import Project="$(MSBuildProjectName).props" />
</Project>
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <!--
+ Name, used to generate the bundle upgrade code. Must stay the same to allow bundles in a given
+ product band to upgrade in place.
+ -->
+ <BundleInstallerUpgradeCodeSeed>.NET Core Shared Framework Bundle Installer</BundleInstallerUpgradeCodeSeed>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <BundleComponentReference Include="Microsoft.NETCore.App.SharedFx.sfxproj" />
+ <BundleComponentReference Include="..\..\Microsoft.NETCore.DotNetHostResolver\Microsoft.NETCore.DotNetHostResolver.pkgproj" />
+ <BundleComponentReference Include="..\..\Microsoft.NETCore.DotNetHost\Microsoft.NETCore.DotNetHost.pkgproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <CandleVariables Include="BundleThmDir" Value="$(MSBuildProjectDirectory)" />
+ </ItemGroup>
+
+ <!-- ***** When the product-band version: "3.0" advances, remove these sections to clean up ***** -->
+ <ItemGroup Condition="'$(TargetArchitecture)' == 'x86'">
+ <!-- ".NET Core 3.0.0 Preview 1" 3.0.0-preview-27122-01-win-x86 upgrade-code -->
+ <UpgradeRelatedBundle Include="{138DC905-5BB8-5C92-2BB2-CEEC57FD4912}" />
+ <!-- ".NET Core 3.0.0 Preview 2" 3.0.0-preview-27324-5-win-x86 upgrade-code -->
+ <UpgradeRelatedBundle Include="{2210ACC2-5EA6-4707-01F8-B064B94BB1C8}" />
+ <!-- ".NET Core 3.0.0 Preview 3" 3.0.0-preview3-27503-5-win-x86 upgrade-code -->
+ <UpgradeRelatedBundle Include="{8F802AA7-56BF-69E8-8E15-BE8FF8347CF7}" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(TargetArchitecture)' == 'x64'">
+ <!-- ".NET Core 3.0.0 Preview 1" 3.0.0-preview-27122-01-win-x64 upgrade-code -->
+ <UpgradeRelatedBundle Include="{C98F9B17-536C-711E-5B31-ADA492F8B956}" />
+ <!-- ".NET Core 3.0.0 Preview 2" 3.0.0-preview-27324-5-win-x64 upgrade-code -->
+ <UpgradeRelatedBundle Include="{E5F8505A-5282-7C15-4388-83FB730DCC13}" />
+ <!-- ".NET Core 3.0.0 Preview 3" 3.0.0-preview3-27503-5-win-x64 upgrade-code -->
+ <UpgradeRelatedBundle Include="{31F12178-5807-40A5-6799-2C9C47725A5E}" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(NETCoreAppFrameworkVersion)' == '3.0'">
+ <CandleVariables Include="RelatedDotNetBundleIds" Value="@(UpgradeRelatedBundle)" />
+ </ItemGroup>
+
+</Project>
<PkgProjectReference Include="..\..\Microsoft.NETCore.DotNetHost\Microsoft.NETCore.DotNetHost.pkgproj" />
<PkgProjectReference Include="..\..\Microsoft.NETCore.DotNetHostPolicy\Microsoft.NETCore.DotNetHostPolicy.pkgproj" />
<PkgProjectReference Include="..\..\Microsoft.NETCore.DotNetHostResolver\Microsoft.NETCore.DotNetHostResolver.pkgproj" />
+
+ <OrderProjectReference Include="$(RepoRoot)signing\SignMsiFiles.proj" />
</ItemGroup>
<!--
<FrameworkListTargetFrameworkIdentifier>.NETStandard</FrameworkListTargetFrameworkIdentifier>
<FrameworkListTargetFrameworkVersion>2.1</FrameworkListTargetFrameworkVersion>
<FrameworkListFrameworkName>NETStandard.Library</FrameworkListFrameworkName>
+
+ <VSInsertionProductName>NetStandard</VSInsertionProductName>
</PropertyGroup>
<!-- Redistribute package content from other nuget packages. -->
<FrameworkPackageName>Microsoft.WindowsDesktop.App</FrameworkPackageName>
+ <VSInsertionProductName>WindowsDesktop</VSInsertionProductName>
+
<!--
Disable FileVersion check for WindowsDesktop. Files with no FileVersion, as of writing:
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <!--
+ Name, used to generate the bundle upgrade code. Must stay the same to allow bundles in a given
+ product band to upgrade in place.
+ -->
+ <BundleInstallerUpgradeCodeSeed>Windows Desktop Shared Framework Bundle Installer</BundleInstallerUpgradeCodeSeed>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <BundleComponentReference Include="Microsoft.WindowsDesktop.App.SharedFx.sfxproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <CandleVariables Include="BundleThmDir" Value="$(MSBuildProjectDirectory)" />
+ </ItemGroup>
+
+</Project>
<PropertyGroup>
<SfxIdentity>Microsoft.WindowsDesktop.App</SfxIdentity>
- <GenerateCompressedArchive>true</GenerateCompressedArchive>
<GenerateNetCoreAppRuntimeConfig>true</GenerateNetCoreAppRuntimeConfig>
</PropertyGroup>
<ItemGroup>
<PkgProjectReference Include="..\pkg\Microsoft.WindowsDesktop.App.pkgproj" />
+
+ <OrderProjectReference Include="$(RepoRoot)signing\SignMsiFiles.proj" />
</ItemGroup>
</Project>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
+ <Window Width="660" Height="468" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
+ <Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
+ <Font Id="1" Height="-24" Weight="900" Foreground="FFFFFF" Background="D42B51">Segoe UI</Font>
+ <Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
+ <Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
+ <Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
+ <Font Id="5" Height="-14" Weight="500" Foreground="444444">Segoe UI</Font>
+
+ <Text Name="Title" X="11" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" Center="yes" DisablePrefix="yes">#(loc.Title)</Text>
+
+ <Page Name="Help">
+ <Text X="0" Y="0" Width="620" Height="75" FontId="1" />
+
+ <Text Name="HelpHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
+ <Text Name="HelpText" X="20" Y="115" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
+ <Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ </Page>
+ <Page Name="Install">
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="WelcomeText" X="155" Y="80" Width="-11" Height="-70" FontId="2" HexStyle="0x800000" DisablePrefix="yes" />
+ <Text Name="WelcomeHeaderMessage" X="160" Y="81" Width="300" Height="30" FontId="2">#(loc.WelcomeHeaderMessage)</Text>
+ <Text Name="WelcomeDescription" X="160" Y="125" Width="460" Height="65" FontId="3">#(loc.WelcomeDescription)</Text>
+ <Text Name="LearnMoreTitle" X="160" Y="200" Width="460" Height="30" FontId="2">#(loc.LearnMoreTitle)</Text>
+ <Hypertext Name="WelcomeDocumentationLink" X="185" Y="238" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.DocumentationLink)</Hypertext>
+ <Hypertext Name="PrivacyStatementLink" X="185" Y="259" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.PrivacyStatementLink)</Hypertext>
+ <Hypertext Name="EulaLink" X="185" Y="281" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.EulaLink)</Hypertext>
+ <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
+ <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
+ </Page>
+ <Page Name="Options">
+ <Image X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
+ <Text X="11" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OptionsLocationLabel)</Text>
+ <Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
+ <Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
+ <Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
+ <Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
+ </Page>
+ <Page Name="FilesInUse">
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="FilesInUseHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FilesInUseHeader)</Text>
+ <Text Name="FilesInUseLabel" X="11" Y="121" Width="-11" Height="34" FontId="3" DisablePrefix="yes">#(loc.FilesInUseLabel)</Text>
+ <Text Name="FilesInUseText" X="11" Y="150" Width="-11" Height="-86" FontId="3" DisablePrefix="yes" HexStyle="0x0000000C"></Text>
+
+ <Button Name="FilesInUseCloseRadioButton" X="300" Y="-65" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseCloseRadioButton)</Button>
+ <Button Name="FilesInUseDontCloseRadioButton" X="300" Y="-45" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseDontCloseRadioButton)</Button>
+
+ <Button Name="FilesInUseOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FilesInUseOkButton)</Button>
+ <Button Name="FilesInUseCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FilesInUseCancelButton)</Button>
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ </Page>
+ <Page Name="Progress">
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="ProgressHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
+ <Text Name="ProgressLabel" X="11" Y="121" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
+ <Text Name="OverallProgressPackageText" X="85" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
+ <Progressbar Name="OverallCalculatedProgressbar" X="11" Y="143" Width="-11" Height="15" />
+ <Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
+ </Page>
+ <Page Name="Modify">
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="ModifyHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
+ <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
+ <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
+ <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
+ </Page>
+ <Page Name="Success">
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="SuccessHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
+ <Text Name="SuccessInstallHeader" X="160" Y="80" Width="400" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessInstallHeader)</Text>
+ <Text Name="SuccessRepairHeader" X="160" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRepairHeader)</Text>
+ <Text Name="SuccessUninstallHeader" X="160" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessUninstallHeader)</Text>
+ <Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
+ <Text Name="SuccessRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
+
+ <Text Name="SuccessInstallLocation" X="160" Y="130" Width="400" Height="20" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessInstallLocation)</Text>
+ <Text Name="SuccessInstallProductName" X="185" Y="155" Width="400" Height="30" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessInstallProductName)</Text>
+ <Text Name="SuccessInstallResourcesHeader" X="160" Y="195" Width="400" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.ResourcesHeader)</Text>
+ <Hypertext Name="DocumentationLink" X="185" Y="238" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.DocumentationLink)</Hypertext>
+ <Hypertext Name="RelaseNotesLink" X="185" Y="259" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.RelaseNotesLink)</Hypertext>
+ <Hypertext Name="TutorialLink" X="185" Y="280" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.TutorialLink)</Hypertext>
+ <Hypertext Name="TelemetryLink" X="185" Y="301" Width="400" Height="22" FontId="3" TabStop="yes" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.TelemetryLink)</Hypertext>
+
+ <Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
+ <Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
+ </Page>
+ <Page Name="Failure">
+ <Image Name="BackgroundImage" X="0" Y="0" Width="620" Height="418" ImageFile="bg.png" />
+ <Text X="0" Y="0" Width="660" Height="75" FontId="1" />
+
+ <Text Name="FailureHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureHeader)</Text>
+ <Text Name="FailureInstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureInstallHeader)</Text>
+ <Text Name="FailureUninstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureUninstallHeader)</Text>
+ <Text Name="FailureRepairHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRepairHeader)</Text>
+ <Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
+ <Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
+ <Text Name="FailureRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
+ <Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
+ <Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
+ </Page>
+</Theme>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
+ <String Id="Caption">[WixBundleName] Installer</String>
+ <String Id="Title">[BUNDLEMONIKER]</String>
+ <String Id="Motto">You just need a shell, a text editor and 10 minutes of your time.
+
+Ready? Set? Let's go!</String>
+ <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
+ <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
+ <String Id="HelpHeader">Setup Help</String>
+ <String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
+ creates a complete local copy of the bundle in directory. Install is the default.
+
+/passive | /quiet - displays minimal UI with no prompts or displays no UI and
+ no prompts. By default UI and all prompts are displayed.
+
+/norestart - suppress any attempts to restart. By default UI will prompt before restart.
+/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
+ <String Id="HelpCloseButton">&Close</String>
+ <String Id="InstallAcceptCheckbox">I &agree to the license terms and conditions</String>
+ <String Id="InstallOptionsButton">&Options</String>
+ <String Id="InstallInstallButton">&Install</String>
+ <String Id="InstallCloseButton">&Close</String>
+ <String Id="OptionsHeader">Setup Options</String>
+ <String Id="OptionsLocationLabel">Install location:</String>
+ <String Id="OptionsBrowseButton">&Browse</String>
+ <String Id="OptionsOkButton">&OK</String>
+ <String Id="OptionsCancelButton">&Cancel</String>
+ <String Id="ProgressHeader">Setup Progress</String>
+ <String Id="ProgressLabel">Processing:</String>
+ <String Id="OverallProgressPackageText">Initializing...</String>
+ <String Id="ProgressCancelButton">&Cancel</String>
+ <String Id="ModifyHeader">Modify Setup</String>
+ <String Id="ModifyRepairButton">&Repair</String>
+ <String Id="ModifyUninstallButton">&Uninstall</String>
+ <String Id="ModifyCloseButton">&Close</String>
+ <String Id="SuccessRepairHeader">Repair Successfully Completed</String>
+ <String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
+ <String Id="SuccessInstallHeader">Installation was successful</String>
+ <String Id="SuccessHeader">Setup Successful</String>
+ <String Id="SuccessLaunchButton">&Launch</String>
+ <String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
+ <String Id="SuccessRestartButton">&Restart</String>
+ <String Id="SuccessCloseButton">&Close</String>
+ <String Id="FailureHeader">Setup Failed</String>
+ <String Id="FailureInstallHeader">Setup Failed</String>
+ <String Id="FailureUninstallHeader">Uninstall Failed</String>
+ <String Id="FailureRepairHeader">Repair Failed</String>
+ <String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.</String>
+ <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
+ <String Id="FailureRestartButton">&Restart</String>
+ <String Id="FailureCloseButton">&Close</String>
+ <String Id="FailureNotSupportedCurrentOperatingSystem">The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE].</String>
+ <String Id="FailureNotSupportedX86OperatingSystem">The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer.</String>
+ <String Id="FilesInUseHeader">Files In Use</String>
+ <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String>
+ <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String>
+ <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String>
+ <String Id="FilesInUseOkButton">&OK</String>
+ <String Id="FilesInUseCancelButton">&Cancel</String>
+ <String Id="WelcomeHeaderMessage">Windows Desktop Runtime</String>
+ <String Id="WelcomeDescription">.NET Core is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform, and supported by Microsoft. We hope you enjoy it!</String>
+ <String Id="LearnMoreTitle">Learn more about .NET Core</String>
+ <String Id="SuccessInstallLocation">The following was installed at [DOTNETHOME]</String>
+ <String Id="SuccessInstallProductName"> - [BUNDLEMONIKER] </String>
+ <String Id="ResourcesHeader">Resources</String>
+ <String Id="DocumentationLink"><A HREF="https://aka.ms/dotnet-docs">Documentation</A></String>
+ <String Id="RelaseNotesLink"><A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A></String>
+ <String Id="TutorialLink"><A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A></String>
+ <String Id="TelemetryLink"><A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A></String>
+ <String Id="PrivacyStatementLink"><A HREF="https://aka.ms/dev-privacy">Privacy Statement</A></String>
+ <String Id="EulaLink"><A HREF="https://go.microsoft.com/fwlink/?LinkId=329770">.NET Library EULA</A></String>
+
+</WixLocalization>
<Project>
- <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory).., Directory.Build.targets))\Directory.Build.targets" />
-
- <!-- If signing is enabled, wait until all projects in this stage are done and sign them. -->
- <Target Name="Build"
- Condition="
- '$(SkipSigning)' != 'true' and
- '$(OSGroup)' == 'Windows_NT'">
- <!-- Ensure all projects in this stage have built. -->
- <MSBuild
- Projects="@(StageProject)"
- Targets="Build" />
+ <!-- Ensure all projects in this stage have built. -->
+ <Target Name="EnsureProjectsBuilt">
+ <MSBuild Projects="@(StageProject)" Targets="Build" />
+ </Target>
- <!--
- Run Arcade's signing project directly. The 'eng/Signing.props' extensibility props file checks
- if '$(<StageName>)' == 'true' and points Arcade to the correct files.
- -->
+ <!--
+ Run Arcade's signing project directly. The 'eng/Signing.props' extensibility props file checks
+ if '$(<StageName>)' == 'true' and points Arcade to the correct files.
+ -->
+ <Target Name="RunArcadeSigning">
<MSBuild
Projects="$(ArcadeSdkSignProject)"
Targets="Sign"
ArtifactsPackagesDir=$(ArtifactsPackagesDir)" />
</Target>
+ <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory).., Directory.Build.targets))\Directory.Build.targets" />
+
+ <!-- If signing is enabled, wait until all projects in this stage are done and sign them. -->
+ <Target Name="Build"
+ Condition="
+ '$(SkipSigning)' != 'true' and
+ '$(OSGroup)' == 'Windows_NT'"
+ DependsOnTargets="
+ EnsureProjectsBuilt;
+ RunArcadeSigning" />
+
</Project>
<Project Sdk="Microsoft.NET.Sdk">
+
+ <!-- Before signing the bundles, the engines need to be injected back into the bundles. -->
+ <Target Name="ReattachAllEnginesToBundles"
+ BeforeTargets="RunArcadeSigning">
+ <MSBuild
+ Projects="@(ProjectToBuild -> WithMetadataValue('SignPhase', 'Bundle'))"
+ Targets="ReattachEngineToBundle" />
+ </Target>
+
</Project>
<Project Sdk="Microsoft.NET.Sdk">
+
+ <ItemGroup>
+ <StageProject Include="@(ProjectToBuild -> WithMetadataValue('SignPhase', 'BundleInstallerFiles'))" />
+ </ItemGroup>
+
+ <!-- To sign the burn engines, they need to be extracted from the bundles using WiX tools. -->
+ <Target Name="ExtractAllEngineBundles"
+ BeforeTargets="RunArcadeSigning">
+ <MSBuild Projects="@(StageProject)" Targets="ExtractEngineBundle" />
+ </Target>
+
</Project>
<StageProject Include="@(ProjectToBuild -> WithMetadataValue('SignPhase', 'MsiFiles'))" />
</ItemGroup>
+ <!--
+ Add shared framework projects to the list to ensure is built. Done in a target because the sfx
+ projects are not available statically.
+ -->
+ <Target Name="EnsureSharedFrameworkProjectsBuilt"
+ DependsOnTargets="GetSharedFrameworkProjects"
+ BeforeTargets="EnsureProjectsBuilt">
+ <ItemGroup>
+ <StageProject Include="@(SharedFrameworkProjects)" />
+ </ItemGroup>
+ </Target>
+
</Project>
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// Initially copied from https://github.com/dotnet/buildtools/blob/6736870b84e06b75e7df32bb84d442db1b2afa10/src/Microsoft.DotNet.Build.Tasks/ExecWithRetries.cs
+
+using Microsoft.Build.Framework;
+using Microsoft.Build.Tasks;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Microsoft.DotNet.Build.Tasks
+{
+ /// <summary>
+ /// Run a command and retry if the exit code is not 0.
+ /// </summary>
+ public class ExecWithRetries : BuildTask
+ {
+ [Required]
+ public string Command { get; set; }
+
+ public string WorkingDirectory { get; set; }
+
+ public bool IgnoreStandardErrorWarningFormat { get; set; }
+
+ public int MaxAttempts { get; set; } = 5;
+
+ /// <summary>
+ /// Base, in seconds, raised to the power of the number of retries so far.
+ /// </summary>
+ public double RetryDelayBase { get; set; } = 6;
+
+ /// <summary>
+ /// A constant, in seconds, added to (base^retries) to find the delay before retrying.
+ ///
+ /// The default is -1 to make the first retry instant, because ((base^0)-1) == 0.
+ /// </summary>
+ public double RetryDelayConstant { get; set; } = -1;
+
+ /// <summary>
+ /// MSBuild message importance to use when logging stdout messages from the command. Default
+ /// is "High".
+ /// </summary>
+ public string StandardOutputImportance { get; set; }
+
+ /// <summary>
+ /// MSBuild message importance to use when logging stderr messages from the command. Default
+ /// is "High".
+ /// </summary>
+ public string StandardErrorImportance { get; set; }
+
+ private CancellationTokenSource _cancelTokenSource = new CancellationTokenSource();
+
+ private Exec _runningExec;
+
+ public void Cancel()
+ {
+ _runningExec?.Cancel();
+ _cancelTokenSource.Cancel();
+ }
+
+ public override bool Execute()
+ {
+ for (int i = 0; i < MaxAttempts; i++)
+ {
+ _runningExec = new Exec
+ {
+ BuildEngine = BuildEngine,
+ Command = Command,
+ WorkingDirectory = WorkingDirectory,
+ IgnoreStandardErrorWarningFormat = IgnoreStandardErrorWarningFormat,
+ StandardOutputImportance = StandardOutputImportance,
+ StandardErrorImportance = StandardErrorImportance,
+ LogStandardErrorAsError = false,
+ IgnoreExitCode = true
+ };
+
+ if (!_runningExec.Execute())
+ {
+ Log.LogError("Child Exec task failed to execute.");
+ break;
+ }
+
+ int exitCode = _runningExec.ExitCode;
+ if (exitCode == 0)
+ {
+ return true;
+ }
+
+ string message = $"Exec FAILED: exit code {exitCode} (attempt {i + 1}/{MaxAttempts})";
+
+ if (i + 1 == MaxAttempts || _cancelTokenSource.IsCancellationRequested)
+ {
+ Log.LogError(message);
+ break;
+ }
+
+ TimeSpan delay = TimeSpan.FromSeconds(
+ Math.Pow(RetryDelayBase, i) + RetryDelayConstant);
+
+ Log.LogMessage(MessageImportance.High, $"{message} -- Retrying after {delay}...");
+
+ try
+ {
+ Task.Delay(delay, _cancelTokenSource.Token).Wait();
+ }
+ catch (AggregateException e) when (e.InnerException is TaskCanceledException)
+ {
+ break;
+ }
+ }
+ return false;
+ }
+ }
+}
<Compile Include="net46/ProcessSharedFrameworkDeps.net46.cs" />
<Reference Include="Microsoft.Build.Framework" />
+ <Reference Include="Microsoft.Build.Tasks.v4.0" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="Microsoft.Build" />
<Reference Include="System.IO.Compression.FileSystem" />