Add code for building the Windows Hosting Bundle and ASP.NET Core runtime installers into this repo

This code previously was in private repos because it had references to internal locations and drop shares. This code has been modified to remove these internal-only pieces.
This commit is contained in:
Nate McMaster 2018-08-17 10:01:57 -07:00
parent f450eb765d
commit b67a141263
No known key found for this signature in database
GPG Key ID: A778D9601BD78810
46 changed files with 1780 additions and 20 deletions

10
.gitignore vendored
View File

@ -1,5 +1,5 @@
bin
obj
bin/
obj/
.vs/
*.suo
*.user
@ -11,11 +11,9 @@ _ReSharper.*
*.psess
*.binlog
*.log
packages
target
artifacts
artifacts/
StyleCop.Cache
node_modules
node_modules/
*.snk
.nuget
.r

View File

@ -1,10 +1,21 @@
<Project>
<Import Project="version.props" />
<PropertyGroup>
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
</PropertyGroup>
<Import Project="build\common.props" />
<Import Project="build\external-dependencies.props" />
<Import Project="build\sources.props" />
<PropertyGroup>
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
<ArtifactsDir Condition="'$(ArtifactsDir)' == ''">$(RepositoryRoot)artifacts\</ArtifactsDir>
<ArtifactsObjDir>$(ArtifactsDir)obj\</ArtifactsObjDir>
<ArtifactsConfigurationDir>$(ArtifactsDir)$(Configuration)\</ArtifactsConfigurationDir>
<ArtifactsBinDir>$(ArtifactsConfigurationDir)bin\</ArtifactsBinDir>
<PackageOutputPath>$(ArtifactsConfigurationDir)packages\</PackageOutputPath>
</PropertyGroup>
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
</Project>

View File

@ -6,4 +6,6 @@
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
</PropertyGroup>
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
</Project>

View File

@ -5,9 +5,8 @@
<RepositoryUrl>https://github.com/aspnet/Universe</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<GenerateUserSecretsAttribute>false</GenerateUserSecretsAttribute>
<AssemblyOriginatorKeyFile>..\..\build\Key.snk</AssemblyOriginatorKeyFile>
<AssemblyOriginatorKeyFile>$(RepositoryRoot)eng\AspNetCore.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- MicroBuild plugins can be installed in any parent directory up the tree from the project that is building.
The use of a sentinel file (which will be installed automatically due to package dependencies from any plugin)
will help us locate the plugin packages directory while being constrained to using MSBuild's intrinsic functions,
since we want the imports to occur at evaluation time instead of when a specific target is executing.
Note: All MicroBuild plugins must be installed to the same directory (under the same packages folder). If plugins
are installed to different directories, the plugins which are in the directories closest to the executing project
up the hierarchy will be discovered, and the ones higher up the tree will be ignored.
-->
<MicroBuildSentinelFile>packages\MicroBuild.Core.Sentinel.1.0.0\sentinel.txt</MicroBuildSentinelFile>
<MicroBuildSentinelFileV3>MicroBuild.Core.Sentinel\1.0.0\sentinel.txt</MicroBuildSentinelFileV3>
<MicroBuildPluginDirectory>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), $(MicroBuildSentinelFile)))</MicroBuildPluginDirectory>
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' != ''">$(MicroBuildPluginDirectory)\packages</MicroBuildPluginDirectory>
<!-- Some people might want to put the plugin packages directly in their Nuget v3 global cache. This doesn't happen by default,
but we will allow for it here. We don't support nuget.config's globalPackagesFolder setting here because we don't have a good
way to load/parse that file with MSBuild intrinsics. We can check the other two mechanisms though, which are the %NUGET_PACKAGES%
environment variable and %USERPROFILE%\.nuget\packages -->
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == '' and '$(NUGET_PACKAGES)' != '' and Exists('$(NUGET_PACKAGES)\$(MicroBuildSentinelFileV3)')">$(NUGET_PACKAGES)</MicroBuildPluginDirectory>
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == '' and '$(USERPROFILE)' != '' and Exists('$(USERPROFILE)\.nuget\packages\$(MicroBuildSentinelFileV3)')">$(USERPROFILE)\.nuget\packages</MicroBuildPluginDirectory>
<!-- Allow for the ability to override the plugin directory, for example in automated builds -->
<MicroBuildPluginDirectory Condition="'$(MicroBuildOverridePluginDirectory)' != ''">$(MicroBuildOverridePluginDirectory)</MicroBuildPluginDirectory>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,31 @@
<!-- Targets for making .wixproj better. -->
<Project>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProductVersion>3.11</ProductVersion>
<WixVersion>3.11.1</WixVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Required to make NuGet happy -->
<TargetFramework>net461</TargetFramework>
<MSBuildProjectExtensionsPath>$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
<MSBuildProjectExtensionsPath Condition="'$(MSBuildProjectExtensionsPath)' == ''">$(MSBuildProjectDir)\obj\</MSBuildProjectExtensionsPath>
<NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'==''">$(MSBuildExtensionsPath)\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets</NuGetRestoreTargets>
</PropertyGroup>
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" />
<ItemGroup>
<PackageReference Include="Wix" Version="$(WixVersion)" />
</ItemGroup>
<PropertyGroup>
<DarkToolPath>$(WixExtDir)dark.exe</DarkToolPath>
</PropertyGroup>
<Import Project="MicroBuild.Plugin.props" Condition="'$(MicroBuildSentinelFile)' == ''" />
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.props" Condition=" '$(MicroBuildPluginDirectory)' != ''" />
</Project>

View File

@ -0,0 +1,34 @@
<!-- Targets for making .wixproj better. -->
<Project>
<ItemGroup>
<Compile Include="**\*.wxs" Exclude="obj\**\*;bin\**\*" />
<EmbeddedResource Include="**\*.wxl" Exclude="obj\**\*;bin**\*;" />
</ItemGroup>
<PropertyGroup Condition="'$(OutputType)' == 'package'">
<EmbedCab Condition="'$(EmbedCab)' == ''">yes</EmbedCab>
<Cabinet Condition="'$(Cabinet)' == ''">$(OutputName.Replace('-', '_')).cab</Cabinet>
<InstallDir>$(ProductName)</InstallDir>
<DefineConstants Condition="'$(Configuration)' == 'Debug'">$(DefineConstants);Debug</DefineConstants>
<DefineConstants>$(DefineConstants);EmbedCab=$(EmbedCab)</DefineConstants>
<DefineConstants>$(DefineConstants);Cabinet=$(Cabinet)</DefineConstants>
</PropertyGroup>
<PropertyGroup>
<Culture Condition=" '$(Culture)' == '' ">en-US</Culture>
<Cultures Condition=" '$(Cultures)' == '' ">$(Culture)</Cultures>
<InstallerPlatform>$(Platform)</InstallerPlatform>
<PlatformName Condition=" '$(PlatformName)' == '' ">$(Platform)</PlatformName>
<OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
<DefineConstants>$(DefineConstants);BinPath=$(OutputPath)$(Culture)\</DefineConstants>
<DefineConstants>$(WixVariables);$(DefineConstants)</DefineConstants>
</PropertyGroup>
<Import Project="$(NuGetRestoreTargets)" />
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.targets" />
<Import Project="$(WixTargetsPath)" Condition="'$(WixTargetsPath)' != '' " />
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.targets" Condition="'$(DisableMicroBuild)' != 'true' AND '$(MicroBuildPluginDirectory)' != ''" />
</Project>

View File

@ -7,19 +7,31 @@ function Assert-Git {
}
}
function Invoke-Block([scriptblock]$cmd) {
$cmd | Out-String | Write-Verbose
& $cmd
function Invoke-Block([scriptblock]$cmd, [string]$WorkingDir = $null) {
if ($WorkingDir) {
Push-Location $WorkingDir
}
# Need to check both of these cases for errors as they represent different items
# - $?: did the powershell script block throw an error
# - $lastexitcode: did a windows command executed by the script block end in error
if ((-not $?) -or ($lastexitcode -ne 0)) {
if ($error -ne $null)
{
Write-Warning $error[0]
try {
$cmd | Out-String | Write-Verbose
& $cmd
# Need to check both of these cases for errors as they represent different items
# - $?: did the powershell script block throw an error
# - $lastexitcode: did a windows command executed by the script block end in error
if ((-not $?) -or ($lastexitcode -ne 0)) {
if ($error -ne $null)
{
Write-Warning $error[0]
}
throw "Command failed to execute: $cmd"
}
}
finally {
if ($WorkingDir) {
Pop-Location
}
throw "Command failed to execute: $cmd"
}
}
@ -229,3 +241,50 @@ function UpdateVersions([hashtable]$variables, [xml]$dependencies, [string]$deps
return $updatedVars
}
function Get-MSBuildPath {
param(
[switch]$Prerelease,
[string[]]$Requires
)
$vsInstallDir = $null
if ($env:VSINSTALLDIR -and (Test-Path $env:VSINSTALLDIR)) {
$vsInstallDir = $env:VSINSTALLDIR
Write-Verbose "Using VSINSTALLDIR=$vsInstallDir"
}
else {
$vswhere = "${env:ProgramFiles(x86)}/Microsoft Visual Studio/Installer/vswhere.exe"
Write-Verbose "Using vswhere.exe from $vswhere"
if (-not (Test-Path $vswhere)) {
Write-Error "Missing prerequisite: could not find vswhere"
}
[string[]] $vswhereArgs = @()
if ($Prerelease) {
$vswhereArgs += '-prerelease'
}
if ($Requires) {
foreach ($r in $Requires) {
$vswhereArgs += '-requires', $r
}
}
$installs = & $vswhere -format json -version '[15.0, 16.0)' -latest -products * @vswhereArgs | ConvertFrom-Json
if (!$installs) {
Write-Error "Missing prerequisite: could not find any installations of Visual Studio"
}
$vs = $installs | Select-Object -First 1
$vsInstallDir = $vs.installationPath
Write-Host "Using $($vs.displayName)"
}
$msbuild = Join-Path $vsInstallDir 'MSBuild/15.0/bin/msbuild.exe'
if (!(Test-Path $msbuild)) {
Write-Error "Missing prerequisite: could not find msbuild.exe"
}
return $msbuild
}

1
src/Installers/Windows/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
ancm/

View File

@ -0,0 +1,20 @@
<Project>
<PropertyGroup>
<RepositoryRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)..\..\..\'))</RepositoryRoot>
<RootOutputPath>$(RepositoryRoot)artifacts/</RootOutputPath>
<BaseOutputPath>$(RootOutputPath)bin/$(Configuration)/$(MSBuildProjectName)/</BaseOutputPath>
<OutputPath>$(BaseOutputPath)</OutputPath>
<BaseIntermediateOutputPath>$(RootOutputPath)obj/$(MSBuildProjectName)/</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)/</IntermediateOutputPath>
<IntermediateOutputPath Condition=" '$(Platform)' != '' AND '$(Platform)' != 'AnyCPU' ">$(IntermediateOutputPath)$(Platform)/</IntermediateOutputPath>
<RuntimeInstallerBaseName>aspnetcore-runtime</RuntimeInstallerBaseName>
<!-- Name = aspnet-runtime-internal because .wixlib files are only produced so we can hand them off to the dotnet/cli repo. -->
<WixlibBaseFileName>$(RuntimeInstallerBaseName)-internal</WixlibBaseFileName>
</PropertyGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
<Import Project="Wix.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
</Project>

View File

@ -0,0 +1,7 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Intentionally empty to isolate this when building in the context of another repository. -->
<Import Project="Wix.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.targets))\Directory.Build.targets" />
</Project>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension">
<Fragment>
<Feature Id="FT_DepProvider" Absent="disallow" AllowAdvertise="no" Description="Used for Ref Counting" Display="hidden" InstallDefault="local" Level="1" Title="RefCounting" TypicalDefault="install">
<ComponentRef Id="C_DepProvider" />
</Feature>
<DirectoryRef Id="TARGETDIR">
<Component Id="C_DepProvider" Win64="no">
<dep:Provides Key="$(var.DepProviderKey)" />
</Component>
</DirectoryRef>
</Fragment>
</Wix>

View File

@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<ProductNameFolder>Microsoft ASP.NET Core Shared Framework</ProductNameFolder>
<ProductName>Microsoft ASP.NET Core $(PackageBrandingVersion) Shared Framework ($(Platform))</ProductName>
<ProductNameShort>AspNetCore.SharedFramework</ProductNameShort>
<DefineConstants>$(DefineConstants);ProductName=$(ProductName)</DefineConstants>
<DefineConstants>$(DefineConstants);ProductNameShort=$(ProductNameShort)</DefineConstants>
<DefineConstants>$(DefineConstants);ProductNameFolder=$(ProductNameFolder)</DefineConstants>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.Version)"
Manufacturer="Microsoft Corporation" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." Schedule="afterInstallFinalize" />
<Media Id="1" Cabinet="$(var.Cabinet)" CompressionLevel="high" EmbedCab="$(var.EmbedCab)" />
<WixVariable Id="WixUILicenseRtf" Value="$(var.files)\eula.rtf" />
<UIRef Id="WixUI_Minimal" />
<FeatureRef Id="FT_DepProvider" />
<FeatureRef Id="FT_AspNetCoreSharedFramework" />
<FeatureRef Id="FT_ProductInfo" />
</Product>
<?ifdef PFilesFolder?>
<?undef PFilesFolder?>
<?endif?>
<?if $(var.Platform)=x86?>
<?define PFilesFolder=ProgramFilesFolder?>
<?elseif $(var.Platform)=x64?>
<?define PFilesFolder=ProgramFiles64Folder?>
<?else?>
<?error Invalid Platform ($(var.Platform))?>
<?endif?>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.PFilesFolder)">
<Directory Id="DotNetFolder" Name="dotnet">
<Directory Id="SharedFolder" Name="shared" />
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<Feature Id="FT_AspNetCoreSharedFramework" Absent="allow" Description="!(loc.FT_AspNetCoreSharedFrameworkDescription)" Display="2" Level="1" Title="!(loc.FT_AspNetCoreSharedFrameworkTitle)">
<ComponentGroupRef Id="CG_AspNetCoreSharedFramework" />
</Feature>
</Fragment>
<Fragment>
<Feature Id="FT_ProductInfo">
<ComponentGroupRef Id="CG_ProductInfo" />
</Feature>
<ComponentGroup Id="CG_ProductInfo">
<ComponentRef Id="C_eula.rtf" />
<ComponentRef Id="C_ProductVersion"/>
<ComponentRef Id="C_ProductInstallDir"/>
</ComponentGroup>
<DirectoryRef Id="SharedFolder">
<Component Id="C_eula.rtf">
<File Name="eula.rtf" Source="$(var.files)\eula.rtf" />
</Component>
<?ifdef ProductVersionKey?>
<?undef ProductVersionKey?>
<?endif?>
<?define ProductVersionKey=SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v$(var.MajorVersion).$(var.MinorVersion)\$(var.PackageVersion)?>
<Component Id="C_ProductVersion">
<RegistryKey Key="$(var.ProductVersionKey)" Root="HKLM">
<RegistryValue Name="Version" Type="string" Value="$(var.Version)" />
</RegistryKey>
</Component>
<Component Id="C_ProductInstallDir">
<RegistryKey Key="SOFTWARE\Microsoft\ASP.NET Core\Shared Framework" Root="HKLM">
<RegistryValue Name="InstallDir" Type="string" Value="[DotNetFolder]" />
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
</Wix>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
<Import Project="Product.props" />
<PropertyGroup>
<Name>AspNetCoreSharedFramework</Name>
<OutputName>$(RuntimeInstallerBaseName)-$(PackageVersion)-win-$(Platform)</OutputName>
<OutputType>Package</OutputType>
<EmbedCab>no</EmbedCab>
<Cabinet>sfx_$(Platform).cab</Cabinet>
<ProjectGuid>C681D730-4505-42C6-9E6C-87F757C4FB32</ProjectGuid>
<HarvestDirectoryAutoGenerateGuids>true</HarvestDirectoryAutoGenerateGuids>
<HarvestDirectorySuppressSpecificWarnings>5150;5151</HarvestDirectorySuppressSpecificWarnings>
<HarvestDirectorySuppressRegistry>true</HarvestDirectorySuppressRegistry>
<HarvestSource>$(SharedFrameworkHarvestRootPath)\$(Platform)\</HarvestSource>
<DefineConstants>$(DefineConstants);AspNetCoreSharedFrameworkSource=$(HarvestSource)</DefineConstants>
<NamespaceGuid>$(SharedFrameworkNamespaceGuid)</NamespaceGuid>
</PropertyGroup>
<ItemGroup>
<WixExtension Include="WixDependencyExtension">
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
<Name>WixDependencyExtension</Name>
</WixExtension>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
<WixExtension Include="WixUIExtension">
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<HarvestDirectory Include="$(HarvestSource)">
<SuppressRootDirectory>true</SuppressRootDirectory>
<ComponentGroupName>CG_AspNetCoreSharedFramework</ComponentGroupName>
<DirectoryRefId>DotNetFolder</DirectoryRefId>
<PreprocessorVariable>var.AspNetCoreSharedFrameworkSource</PreprocessorVariable>
</HarvestDirectory>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="FT_AspNetCoreSharedFrameworkTitle">ASP.NET Core Shared Framework</String>
<String Id="FT_AspNetCoreSharedFrameworkDescription">ASP.NET Core Shared Framework</String>
</WixLocalization>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="$(var.BundleName)" Version="$(var.Version)" Manufacturer="Microsoft Corporation" UpgradeCode="$(var.BundleUpgradeCode)"
dep:ProviderKey="$(var.BundleProviderKey)">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication LicenseUrl="https://go.microsoft.com/fwlink/?LinkId=320539"
LogoFile="DotNetLogo.bmp"
SuppressOptionsUI="yes"
ThemeFile="thm.xml"
LocalizationFile="thm.wxl"/>
</BootstrapperApplicationRef>
<!-- Customizations of the default BA -->
<Log Prefix="dd_$(var.BundleLogPrefix)_" Extension=".log" />
<OptionalUpdateRegistration Manufacturer="$(var.BundleRegManufacturer)" ProductFamily="$(var.BundleRegFamily)" Name="$(var.BundleRegName)" />
<Variable Name="BundleNameShort" Value="$(var.BundleNameShort)"/>
<Variable Name="BundleNameSub" Value="$(var.BundleNameSub)"/>
<Variable Name="BundleNameFull" Value="$(var.BundleNameFull)"/>
<Chain>
<?if $(var.Platform)=x86?>
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x86"/>
<?elseif $(var.Platform)=x64?>
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x64"/>
<?endif?>
</Chain>
</Bundle>
</Wix>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,31 @@
<Project>
<PropertyGroup>
<BundleNameShort>Microsoft ASP.NET Core $(PackageBrandingVersion)</BundleNameShort>
</PropertyGroup>
<PropertyGroup>
<BundleNameSub>Shared Framework</BundleNameSub>
<BundleName>$(BundleNameShort) - $(BundleNameSub)</BundleName>
<BundleNameFull>$(BundleName) ($(Platform))</BundleNameFull>
<BundleManufacturer>Microsoft Corporation</BundleManufacturer>
<BundleLogPrefix>dd_AspNetCoreSharedFramework_</BundleLogPrefix>
<!-- Registration -->
<BundleRegManufacturer>Microsoft</BundleRegManufacturer>
<BundleRegFamily>.NET Core</BundleRegFamily>
<BundleRegName>Microsoft ASP.NET Core $(PackageBrandingVersion) Shared Framework</BundleRegName>
<BundleRegName>$(BundleNameFull)</BundleRegName>
</PropertyGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);BundleName=$(BundleName)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameFull=$(BundleNameFull)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameShort=$(BundleNameShort)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameSub=$(BundleNameSub)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleManufacturer=$(BundleManufacturer)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleLogPrefix=$(BundleLogPrefix)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegManufacturer=$(BundleRegManufacturer)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegFamily=$(BundleRegFamily)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegName=$(BundleRegName)</DefineConstants>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
<Import Project="Product.props" />
<PropertyGroup>
<Name>AspNetCoreSharedFrameworkBundle</Name>
<OutputType>Bundle</OutputType>
<OutputName>$(RuntimeInstallerBaseName)-$(PackageVersion)-win-$(Platform)</OutputName>
<NamespaceGuid>$(SharedFrameworkNamespaceGuid)</NamespaceGuid>
<ProjectGuid>D6C54D8B-043F-4877-B751-60E7390F9EC6</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<WixExtension Include="WixDependencyExtension">
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
<Name>WixDependencyExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtension">
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
<Name>WixBalExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Content Include="thm.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x86" />
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x64" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[BundleNameFull] Setup</String>
<String Id="Title">[BundleNameShort]</String>
<String Id="SubTitle">[BundleNameSub]</String>
<String Id="InstallHeader">Welcome</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</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">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessRepairHeader">Repair Successfully Completed</String>
<String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
<String Id="SuccessInstallHeader">Installation Successfully Completed</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;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 &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</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 &amp;applications and attempt to restart them.</String>
<String Id="FilesInUseDontCloseRadioButton">&amp;Do not close applications. A reboot will be required.</String>
<String Id="FilesInUseOkButton">&amp;OK</String>
<String Id="FilesInUseCancelButton">&amp;Cancel</String>
</WixLocalization>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="585" Height="300" 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="500" Foreground="000000">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>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" Visible="yes"/>
<Text X="80" Y="11" Width="-11" Height="40" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Text>
<Text X="80" Y="40" Width="-11" Height="40" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.SubTitle)</Text>
<Page Name="Help">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="112" 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>
</Page>
<Page Name="Install">
<Text X="11" Y="90" Width="-11" Height="30" FontId="3">Welcome to the #(loc.Caption).</Text>
<Hypertext Name="EulaAndPrivacyHyperlink" X="11" Y="131" Width="-11" Height="51" TabStop="yes" FontId="3" HideWhenDisabled="yes">[WixBundleName] &lt;a href="https://go.microsoft.com/fwlink/?LinkId=320539"&gt;license terms&lt;/a&gt; and &lt;a href="https://go.microsoft.com/fwlink/?LinkId=786378"&gt;privacy statement&lt;/a&gt;.</Hypertext>
<Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<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">
<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="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FilesInUseHeader)</Text>
<Text 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="0x0000C000"></Text>
<Button Name="FilesInUseCloseRadioButton" X="11" Y="-60" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseCloseRadioButton)</Button>
<Button Name="FilesInUseDontCloseRadioButton" X="11" Y="-40" 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>
</Page>
<Page Name="Progress">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text 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">
<Text 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">
<Text Name="SuccessHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Text Name="SuccessInstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessInstallHeader)</Text>
<Text Name="SuccessRepairHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRepairHeader)</Text>
<Text Name="SuccessUninstallHeader" X="11" 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>
<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">
<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>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Fragment>
<PackageGroup Id="PG_AspNetCoreSharedFramework_$(var.Platform)">
<RollbackBoundary Id="RB_AspNetCoreSharedFramework_$(var.Platform)" />
<?ifdef SharedFrameworkInstallCondition?>
<?undef SharedFrameworkInstallCondition?>
<?endif?>
<?if $(var.Platform)=x86?>
<?define SharedFrameworkInstallCondition=(NOT OPT_NO_SHAREDFX) AND (NOT OPT_NO_X86)?>
<?elseif $(var.Platform)=x64?>
<?define SharedFrameworkInstallCondition=VersionNT64 AND (NOT OPT_NO_SHAREDFX)?>
<?endif?>
<?define SourceFile=$(var.BinPath)\aspnetcore-runtime-$(var.PackageVersion)-win-$(var.Platform).msi?>
<MsiPackage Id="AspNetCoreSharedFramework_$(var.Platform)"
SourceFile="$(var.SourceFile)"
Compressed="yes"
Visible="no"
Vital="yes"
InstallCondition="$(var.SharedFrameworkInstallCondition)">
<Payload Name="sfx_$(var.Platform).cab" SourceFile="$(var.BinPath)\sfx_$(var.Platform).cab"/>
</MsiPackage>
</PackageGroup>
</Fragment>
</Wix>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
<PropertyGroup>
<Name>AspNetCoreSharedFrameworkLib$(Platform)</Name>
<OutputName>$(WixlibBaseFileName)-$(PackageVersion)-win-$(Platform)</OutputName>
<OutputType>Library</OutputType>
<LibBindFiles>true</LibBindFiles>
<NamespaceGuid>$(SharedFrameworkNamespaceGuid)</NamespaceGuid>
<ProjectGuid>5244BC49-2568-4701-80A6-EAB8950AB5FA</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DefineConstants>$(DefineConstants);Debug</DefineConstants>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\SharedFramework\SharedFramework.wixproj" SetPlatform="Platform=$(Platform)" />
<WixExtension Include="WixBalExtension">
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
<Name>WixBalExtension</Name>
</WixExtension>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project>

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<PackageGroup Id="PG_ANCM">
<RollbackBoundary Id="RB_ANCM" />
<MsiPackage Id="AspNetCoreModule_x86" SourceFile="$(var.BinPath)\aspnetcoremodule_x86_en.msi"
Name="aspnetcoremodule_x86_en.msi"
Compressed="yes"
Vital="yes"
Visible="no"
InstallCondition="NOT VersionNT64 AND (VersionNT &gt;= v6.1) AND (IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1) AND (NOT OPT_NO_ANCM)" />
<MsiPackage Id="AspNetCoreModule_x64" SourceFile="$(var.BinPath)\aspnetcoremodule_x64_en.msi"
Name="aspnetcoremodule_x64_en.msi"
Compressed="yes"
Vital="yes"
Visible="no"
InstallCondition="VersionNT64 AND (VersionNT64 &gt;= v6.1) AND (IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1) AND (NOT OPT_NO_ANCM)" />
<MsiPackage Id="AspNetCoreModuleV2_x86" SourceFile="$(var.BinPath)\aspnetcoremodule_x86_en_v2.msi"
Name="aspnetcoremodule_x86_en_v2.msi"
Compressed="yes"
Vital="yes"
Visible="no"
InstallCondition="NOT VersionNT64 AND (VersionNT &gt;= v6.1) AND (IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1) AND (NOT OPT_NO_ANCM)" />
<MsiPackage Id="AspNetCoreModuleV2_x64" SourceFile="$(var.BinPath)\aspnetcoremodule_x64_en_v2.msi"
Name="aspnetcoremodule_x64_en_v2.msi"
Compressed="yes"
Vital="yes"
Visible="no"
InstallCondition="VersionNT64 AND (VersionNT64 &gt;= v6.1) AND (IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1) AND (NOT OPT_NO_ANCM)" />
</PackageGroup>
<util:RegistrySearch Id="IISCoreWebEngineInstalledSearch_x86"
Variable="IISCoreWebEngineInstalled_x86"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value" />
<util:RegistrySearch Id="IISW3SVCInstalledSearch_x86"
Variable="IISW3SVCInstalled_x86"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="W3SVC"
After="IISCoreWebEngineInstalledSearch_x86"
Result="value" />
<util:RegistrySearch Id="IISCoreWebEngineInstalledSearch_x64"
Variable="IISCoreWebEngineInstalled_x64"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value"
After="IISW3SVCInstalledSearch_x86"
Win64="yes" />
<util:RegistrySearch Id="IISW3SVCInstalledSearch_x64"
Variable="IISW3SVCInstalled_x64"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="W3SVC"
Result="value"
After="IISCoreWebEngineInstalledSearch_x64"
Win64="yes" />
<!-- We don't care about the results of the searches below. They are conditioned to execute if we've detected IIS.
If IIS is found, the search will execute and the default "disable" value of the relevant variables will be changed, allowing the UI
text to be displayed. All these searches need to execute after all the primary util:RegistrySearch operations for IIS. -->
<util:RegistrySearch Id="InstallResetIISStateSearch"
Condition="((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1))"
Variable="InstallResetIISState"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value"
After="IISW3SVCInstalledSearch_x64"
Win64="yes" />
<util:RegistrySearch Id="InstallNoIISStateSearch"
Condition="NOT (((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1)))"
Variable="InstallNoIISState"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value"
After="IISW3SVCInstalledSearch_x64"
Win64="yes" />
<util:RegistrySearch Id="ModifyResetIISStateSearch"
Condition="((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1))"
Variable="ModifyResetIISState"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value"
After="IISW3SVCInstalledSearch_x64"
Win64="yes" />
<util:RegistrySearch Id="ModifyNoIISStateSearch"
Condition="NOT (((IISCoreWebEngineInstalled_x86=1) AND (IISW3SVCInstalled_x86=1)) OR ((IISCoreWebEngineInstalled_x64=1) AND (IISW3SVCInstalled_x64=1)))"
Variable="ModifyNoIISState"
Root="HKLM"
Key="SOFTWARE\Microsoft\InetStp\Components"
Value="CoreWebEngine"
Result="value"
After="IISW3SVCInstalledSearch_x64"
Win64="yes" />
</Fragment>
</Wix>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="$(var.BundleName)" Version="$(var.Version)" Manufacturer="Microsoft Corporation" UpgradeCode="$(var.BundleUpgradeCode)"
dep:ProviderKey="$(var.BundleProviderKey)">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication LicenseUrl="https://go.microsoft.com/fwlink/?LinkId=320539"
LogoFile="DotNetLogo.bmp"
SuppressOptionsUI="yes"
ThemeFile="thm.xml"
LocalizationFile="thm.wxl"/>
</BootstrapperApplicationRef>
<!-- Customizations of the default BA -->
<Log Prefix="dd_$(var.BundleLogPrefix)_" Extension=".log" />
<OptionalUpdateRegistration Manufacturer="$(var.BundleRegManufacturer)" ProductFamily="$(var.BundleRegFamily)" Name="$(var.BundleRegName)" />
<!-- Bundle variables -->
<Variable Name="BundleNameShort" Value="$(var.BundleNameShort)"/>
<Variable Name="BundleNameSub" Value="$(var.BundleNameSub)"/>
<Variable Name="OPT_NO_ANCM" Value="0" bal:Overridable="yes"/>
<Variable Name="OPT_NO_FTS" Value="0" bal:Overridable="yes"/>
<Variable Name="OPT_NO_LTS" Value="0" bal:Overridable="yes"/>
<Variable Name="OPT_NO_SHAREDFX" Value="0" bal:Overridable="yes"/>
<Variable Name="OPT_NO_RUNTIME" Value="0" bal:Overridable="yes"/>
<Variable Name="OPT_NO_X86" Value="0" bal:Overridable="yes"/>
<!-- These variables control the state of conditional UI text elements.
They are disabled by default and enabled based on whether or not we detect that IIS is installed -->
<Variable Name="InstallResetIISState" Value="disable"/>
<Variable Name="InstallNoIISState" Value="disable"/>
<Variable Name="ModifyResetIISState" Value="disable"/>
<Variable Name="ModifyNoIISState" Value="disable"/>
<Chain ParallelCache="yes">
<PackageGroupRef Id="PG_ANCM" />
<PackageGroupRef Id="PG_DOTNET_REDIST_LTS_BUNDLE" />
<!--<PackageGroupRef Id="PG_DOTNET_REDIST_FTS_BUNDLE" />-->
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x86" />
<PackageGroupRef Id="PG_AspNetCoreSharedFramework_x64" />
</Chain>
</Bundle>
</Wix>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<PackageGroup Id="PG_DOTNET_REDIST_LTS_BUNDLE">
<RollbackBoundary Id="RB_DOTNET_REDIST_LTS_BUNDLE" />
<ExePackage Id="DotNetRedistLts_x64" SourceFile="$(var.DepsPath)\$(var.DotNetRedistLtsInstallerx64)"
Name="$(var.DotNetRedistLtsInstallerx64)"
Compressed="yes"
Vital="yes"
InstallCondition="VersionNT64 AND (NOT OPT_NO_RUNTIME)"
InstallCommand="/quiet /norestart"
Permanent="yes"
DetectCondition="DotNetRedistLtsProductVersion_x64 = v$(var.DotNetRedistLtsInstallerProductVersionx64)">
</ExePackage>
<ExePackage Id="DotNetRedistLts_x86" SourceFile="$(var.DepsPath)\$(var.DotNetRedistLtsInstallerx86)"
Name="$(var.DotNetRedistLtsInstallerx86)"
Compressed="yes"
Vital="yes"
InstallCondition="(NOT OPT_NO_RUNTIME) AND (NOT OPT_NO_X86)"
InstallCommand="/quiet /norestart"
Permanent="yes"
DetectCondition="DotNetRedistLtsProductVersion_x86 = v$(var.DotNetRedistLtsInstallerProductVersionx86)">
</ExePackage>
</PackageGroup>
</Fragment>
<Fragment>
<util:ProductSearch Id="DotNetRedistLtsProductSearch_x86"
Condition="NOT VersionNT64"
ProductCode="$(var.DotNetRedistLtsInstallerProductCodex86)"
Result="version"
Variable="DotNetRedistLtsProductVersion_x86" />
<util:ProductSearch Id="DotNetRedistLtsProductSearch_x64"
Condition="VersionNT64"
ProductCode="$(var.DotNetRedistLtsInstallerProductCodex64)"
Result="version"
Variable="DotNetRedistLtsProductVersion_x64" />
</Fragment>
</Wix>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,31 @@
<Project>
<PropertyGroup>
<BundleNameShort>Microsoft .NET Core $(PackageBrandingVersion)</BundleNameShort>
</PropertyGroup>
<PropertyGroup>
<BundleNameSub>Windows Server Hosting</BundleNameSub>
<BundleName>$(BundleNameShort) - $(BundleNameSub)</BundleName>
<BundleNameFull>$(BundleName) ($(Platform))</BundleNameFull>
<BundleManufacturer>Microsoft Corporation</BundleManufacturer>
<BundleLogPrefix>dd_DotNetCoreWinSvrHosting</BundleLogPrefix>
<!-- Registration -->
<BundleRegManufacturer>Microsoft</BundleRegManufacturer>
<BundleRegFamily>.NET Core</BundleRegFamily>
<BundleRegName>Microsoft .NET Core $(PackageBrandingVersion) - Windows Server Hosting</BundleRegName>
<BundleRegName>$(BundleNameFull)</BundleRegName>
</PropertyGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);BundleName=$(BundleName)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameFull=$(BundleNameFull)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameShort=$(BundleNameShort)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleNameSub=$(BundleNameSub)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleManufacturer=$(BundleManufacturer)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleLogPrefix=$(BundleLogPrefix)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegManufacturer=$(BundleRegManufacturer)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegFamily=$(BundleRegFamily)</DefineConstants>
<DefineConstants>$(DefineConstants);BundleRegName=$(BundleRegName)</DefineConstants>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,90 @@
<Project>
<PropertyGroup>
<DotNetDarkOutputPath>$(IntermediateOutputPath)d\</DotNetDarkOutputPath>
<DepsPath>$(BaseIntermediateOutputPath)</DepsPath>
<DefineConstants>$(DefineConstants);DepsPath=$(DepsPath)</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Platforms Include="x64;x86" />
<RuntimeInstallers Include="$(DepsPath)dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x64.exe">
<TargetPlatform>x64</TargetPlatform>
<BundleNameProperty>DotNetRedistLtsInstallerx64</BundleNameProperty>
<Version>$(MicrosoftNETCoreAppPackageVersion)</Version>
</RuntimeInstallers>
<RuntimeInstallers Include="$(DepsPath)dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x86.exe">
<TargetPlatform>x86</TargetPlatform>
<BundleNameProperty>DotNetRedistLtsInstallerx86</BundleNameProperty>
<Version>$(MicrosoftNETCoreAppPackageVersion)</Version>
</RuntimeInstallers>
</ItemGroup>
<Target Name="FetchDependencies" BeforeTargets="Restore">
<PropertyGroup>
<DotNetAssetRootUrl Condition=" '$(DotNetAssetRootUrl)' == '' ">https://dotnetcli.azureedge.net/dotnet/</DotNetAssetRootUrl>
<DotNetAssetRootUrl Condition=" ! $(DotNetAssetRootUrl.EndsWith('/'))">$(DotNetAssetRootUrl)/</DotNetAssetRootUrl>
</PropertyGroup>
<ItemGroup>
<RemoteAsset Include="$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x64.exe$(DotNetAssetRootAccessTokenSuffix)">
<TargetFileName>dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x64.exe</TargetFileName>
</RemoteAsset>
<RemoteAsset Include="$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppPackageVersion)/dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x86.exe$(DotNetAssetRootAccessTokenSuffix)">
<TargetFileName>dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-win-x86.exe</TargetFileName>
</RemoteAsset>
</ItemGroup>
<MakeDir Directories="$(DepsPath)" />
<Exec Condition=" ! Exists('$(DepsPath)%(RemoteAsset.TargetFileName)') "
Command="powershell.exe -noprofile -NoLogo -ExecutionPolicy unrestricted -Command &quot;iwr -usebasicparsing -uri %(RemoteAsset.Identity) -outfile $(DepsPath)/%(RemoteAsset.TargetFileName)&quot;" />
<!-- Requires MSBuild 15.8 -->
<!-- <DownloadFile Condition=" ! Exists('$(DepsPath)%(RemoteAsset.TargetFileName)') "
SourceUrl="%(RemoteAsset.Identity)" DestinationFolder="$(DepsPath)" DestinationFileName="%(RemoteAsset.TargetFileName)" /> -->
</Target>
<UsingTask AssemblyFile="$(OutputPath)..\InstallerTasks\InstallerTasks.dll" TaskName="RepoTasks.GetMsiProperty" />
<Target Name="ExtractPropertiesFromDotNetMsi" BeforeTargets="BeforeBuild">
<!-- Create properties that holds the executable name. These are passed to the bundles so we can reference them as variables
from inside the ExePackage authoring. -->
<CreateProperty Value="%(RuntimeInstallers.Filename)%(Extension)">
<Output TaskParameter="Value" PropertyName="%(RuntimeInstallers.BundleNameProperty)"/>
</CreateProperty>
<!-- Decompile the bundles so that we can extract the MSI and read their version information. We need this to author ExePackage@DetectCondition
in the bundles that chain the runtime bundles -->
<Exec Command="$(DarkToolPath) -x $(DotNetDarkOutputPath)\%(RuntimeInstallers.Version)\%(TargetPlatform) %(Identity)" />
<ItemGroup>
<DotNetPayload Include="$(DotNetDarkOutputPath)\$(MicrosoftNETCoreAppPackageVersion)\%(Platforms.Identity)\AttachedContainer\**\dotnet-host-*win-*.msi">
<ProductVersionProperty>DotNetRedistLtsInstallerProductVersion%(Platforms.Identity)</ProductVersionProperty>
<ProductCodeProperty>DotNetRedistLtsInstallerProductCode%(Platforms.Identity)</ProductCodeProperty>
<UpgradeCodeProperty>DotNetRedistLtsInstallerUpgradeCode%(Platforms.Identity)</UpgradeCodeProperty>
</DotNetPayload>
</ItemGroup>
<!-- Read MSI properties -->
<GetMsiProperty InstallPackage="%(DotNetPayload.Identity)" Property="ProductVersion">
<Output TaskParameter="Value" PropertyName="%(ProductVersionProperty)" />
</GetMsiProperty>
<GetMsiProperty InstallPackage="%(DotNetPayload.Identity)" Property="ProductCode">
<Output TaskParameter="Value" PropertyName="%(ProductCodeProperty)" />
</GetMsiProperty>
<GetMsiProperty InstallPackage="%(DotNetPayload.Identity)" Property="UpgradeCode">
<Output TaskParameter="Value" PropertyName="%(UpgradeCodeProperty)" />
</GetMsiProperty>
<PropertyGroup>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerx64=$(DotNetRedistLtsInstallerx64)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerProductVersionx64=$(DotNetRedistLtsInstallerProductVersionx64)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerProductCodex64=$(DotNetRedistLtsInstallerProductCodex64)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerUpgradeCodex64=$(DotNetRedistLtsInstallerUpgradeCodex64)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerx86=$(DotNetRedistLtsInstallerx86)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerProductVersionx86=$(DotNetRedistLtsInstallerProductVersionx86)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerProductCodex86=$(DotNetRedistLtsInstallerProductCodex86)</DefineConstants>
<DefineConstants>$(DefineConstants);DotNetRedistLtsInstallerUpgradeCodex86=$(DotNetRedistLtsInstallerUpgradeCodex86)</DefineConstants>
</PropertyGroup>
</Target>
</Project>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="BalCondition_NETFX451Required">Some features that were selected requires .NET 4.5.1. Please install .NET 4.5.1, then install this product again.</String>
<String Id="BalCondition_IISRequired">This product requires IIS 7.5. Please install IIS, then install this product again.</String>
<String Id="BalCondition_VS2015Update2Required">This product requires Visual Studio 2015 Update 2 or later. Please install Visual Studio 2015 Update 2 or later, then install this product again.</String>
<String Id="BalCondition_VS2015Update3Required">This product requires Visual Studio 2015 Update 3 or later. Please install Visual Studio 2015 Update 3 or later, then install this product again.</String>
<String Id="BalCondition_VS2015Update3Mismatch">Setup has detected that Visual Studio 2015 Update 3 may not be completely installed. Please repair Visual Studio 2015 Update 3, then install this product again.</String>
<String Id="BalCondition_WebDeveloperToolsRequired">This product requires the Web Developer Tools feature in Visual Studio 2015. Please enable the feature by going to Programs and Features in Windows, then modify Visual Studio 2015.</String>
<String Id="BalCondition_VSVWDRequired">This product requires Visual Studio 2015 or Visual Studio Express 2015 for Web to be installed. Please install the missing product, then install this product again.</String>
</WixLocalization>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
<Import Project="Product.props" />
<PropertyGroup>
<Name>WindowsServerHostingBundle</Name>
<OutputName>dotnet-hosting-$(PackageVersion)-win</OutputName>
<ProjectGuid>6F1B115C-1903-40CB-837D-7961AB610F4E</ProjectGuid>
<OutputType>Bundle</OutputType>
<Platform>x86</Platform>
<!-- Namespace used to generate stable UUID3 GUIDs for MSI ProductCode, etc. DO NOT CHANGE THIS. -->
<NamespaceGuid>$(HostingBundleNamespaceGuid)</NamespaceGuid>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x86" />
<ProjectReference Include="..\SharedFrameworkLib\SharedFrameworkLib.wixproj" SetPlatform="Platform=x64" />
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
<WixExtension Include="WixDependencyExtension">
<HintPath>$(WixExtDir)\WixDependencyExtension.dll</HintPath>
<Name>WixDependencyExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtension">
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
<Name>WixBalExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Content Include="thm.xml" />
</ItemGroup>
<Import Project="Product.targets" />
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
</Project>

View File

@ -0,0 +1,61 @@
<?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] Setup</String>
<String Id="Title">[BundleNameShort]</String>
<String Id="SubTitle">[BundleNameSub]</String>
<String Id="InstallHeader">Welcome</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</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">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessRepairHeader">Repair Successfully Completed</String>
<String Id="SuccessUninstallHeader">Uninstall Successfully Completed</String>
<String Id="SuccessInstallHeader">Installation Successfully Completed</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;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 &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</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 &amp;applications and attempt to restart them.</String>
<String Id="FilesInUseDontCloseRadioButton">&amp;Do not close applications. A reboot will be required.</String>
<String Id="FilesInUseOkButton">&amp;OK</String>
<String Id="FilesInUseCancelButton">&amp;Cancel</String>
</WixLocalization>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="485" Height="300" 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="500" Foreground="000000">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>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" Visible="yes"/>
<Text X="80" Y="11" Width="-11" Height="40" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Text>
<Text X="80" Y="40" Width="-11" Height="40" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.SubTitle)</Text>
<Page Name="Help">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="112" 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>
</Page>
<Page Name="Install">
<Hypertext X="11" Y="90" Width="-11" Height="15" FontId="3">Welcome to the #(loc.Caption).</Hypertext>
<Hypertext X="11" Y="119" Width="-11" Height="45" FontId="3" Name="InstallResetIIS" HideWhenDisabled="yes">Please restart IIS after the installation completes. You can find additional information &lt;a href="https://go.microsoft.com/fwlink/?LinkId=798277"&gt;here&lt;/a&gt;.</Hypertext>
<Hypertext X="11" Y="119" Width="-11" Height="45" FontId="3" Name="InstallNoIIS" HideWhenDisabled="yes">IIS is not enabled on this machine. If you intend to run ASP.NET Core applications with IIS, you must install IIS before running this installer. You can find additional information &lt;a href="https://go.microsoft.com/fwlink/?LinkId=798277"&gt;here&lt;/a&gt;.</Hypertext>
<Hypertext Name="EulaAndPrivacyHyperlink" X="11" Y="178" Width="-11" Height="51" TabStop="yes" FontId="3" HideWhenDisabled="yes">[WixBundleName] &lt;a href="https://go.microsoft.com/fwlink/?LinkId=320539"&gt;license terms&lt;/a&gt; and &lt;a href="https://go.microsoft.com/fwlink/?LinkId=786378"&gt;privacy statement&lt;/a&gt;.</Hypertext>
<Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<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">
<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="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FilesInUseHeader)</Text>
<Text 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="0x0000C000"></Text>
<Button Name="FilesInUseCloseRadioButton" X="11" Y="-60" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseCloseRadioButton)</Button>
<Button Name="FilesInUseDontCloseRadioButton" X="11" Y="-40" 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>
</Page>
<Page Name="Progress">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text 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">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Hypertext X="11" Y="121" Width="-11" Height="45" FontId="3" Name="ModifyResetIIS" HideWhenDisabled="yes">Please restart IIS after the installation completes. You can find additional information &lt;a href="https://go.microsoft.com/fwlink/?LinkId=798277"&gt;here&lt;/a&gt;.</Hypertext>
<Hypertext X="11" Y="121" Width="-11" Height="45" FontId="3" Name="ModifyNoIIS" HideWhenDisabled="yes">IIS is not enabled on this machine. If you intend to run ASP.NET Core applications with IIS, you must install IIS before running this installer. You can find additional information &lt;a href="https://go.microsoft.com/fwlink/?LinkId=798277"&gt;here&lt;/a&gt;.</Hypertext>
<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">
<Text Name="SuccessHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Text Name="SuccessInstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessInstallHeader)</Text>
<Text Name="SuccessRepairHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRepairHeader)</Text>
<Text Name="SuccessUninstallHeader" X="11" 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>
<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">
<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>

View File

@ -0,0 +1,21 @@
<Project>
<ItemGroup>
<InstallerProject Include="SharedFrameworkBundle/SharedFrameworkBundle.wixproj" AdditionalProperties="Platform=x64" />
<InstallerProject Include="SharedFrameworkBundle/SharedFrameworkBundle.wixproj" AdditionalProperties="Platform=x86" />
<InstallerProject Include="*/*.wixproj" Exclude="@(InstallerProject);ancm/**/*" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(InstallerProject)" Targets="Build" />
</Target>
<Target Name="Clean">
<MSBuild Projects="@(InstallerProject)" Targets="Clean" />
</Target>
<Target Name="Restore">
<MSBuild Projects="@(InstallerProject)" Targets="Restore" />
</Target>
</Project>

View File

@ -0,0 +1,38 @@
<Project>
<PropertyGroup>
<Version>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).$(AspNetCorePatchVersion).0</Version>
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<Platform Condition="'$(Platform)' == ''">x64</Platform>
<Lang Condition="'$(Lang)' == ''">ENU</Lang>
<Cultures>en-US</Cultures>
<BaseOutputPath>$(RootOutputPath)bin/$(Configuration)/installers/</BaseOutputPath>
<OutputPath>$(BaseOutputPath)</OutputPath>
</PropertyGroup>
<!-- Additional parameters for Light/Candle-->
<PropertyGroup>
<LinkerAdditionalOptions>-fv</LinkerAdditionalOptions>
<SuppressIces>ICE61</SuppressIces>
<SuppressWarnings>1033</SuppressWarnings>
</PropertyGroup>
<PropertyGroup>
<DefineSolutionProperties>false</DefineSolutionProperties>
<!-- Namespace used to generate stable UUID3 GUIDs for MSI ProductCode, etc. DO NOT CHANGE THESE. -->
<HostingBundleNamespaceGuid>E1FD1271-E0F0-4B8B-B4BE-01F2EBA58F4E</HostingBundleNamespaceGuid>
<SharedFrameworkNamespaceGuid>C43D5520-11B3-4D62-B6FE-5D6840B04101</SharedFrameworkNamespaceGuid>
</PropertyGroup>
<PropertyGroup>
<DefineConstants>$(DefineConstants);files=$(MSBuildThisFileDirectory)files</DefineConstants>
<DefineConstants>$(DefineConstants);Version=$(Version)</DefineConstants>
<DefineConstants>$(DefineConstants);Culture=$(Cultures)</DefineConstants>
<DefineConstants>$(DefineConstants);MajorVersion=$(AspNetCoreMajorVersion)</DefineConstants>
<DefineConstants>$(DefineConstants);MinorVersion=$(AspNetCoreMinorVersion)</DefineConstants>
<DefineConstants>$(DefineConstants);PackageVersion=$(PackageVersion)</DefineConstants>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,42 @@
<Project>
<PropertyGroup Condition="'$(OutputType)' == 'package'">
<InstallDir>$(ProductName)</InstallDir>
<DepProviderKey>Microsoft.$(ProductNameShort)_$(Platform)_$(Lang),v$(PackageVersion)</DepProviderKey>
<DefineConstants>$(DefineConstants);DepProviderKey=$(DepProviderKey)</DefineConstants>
</PropertyGroup>
<PropertyGroup>
<GuidInputs>$(Version);$(Platform)</GuidInputs>
<GuidInputs Condition="'$(IsFinalBuild)' != 'true'">$(GuidInputs);$(BuildNumber)</GuidInputs>
</PropertyGroup>
<UsingTask AssemblyFile="$(OutputPath)..\InstallerTasks\InstallerTasks.dll" TaskName="RepoTasks.GenerateGuid" />
<Target Name="GenerateGUIDs" BeforeTargets="BeforeBuild" DependsOnTargets="_GeneratePackageGuids;_GenerateBundleGuids" />
<Target Name="_GeneratePackageGuids" Condition="'$(OutputType)' == 'package'">
<GenerateGuid NamespaceGuid="$(NamespaceGuid)" Values="$(ProductNameShort);$(GuidInputs)">
<Output TaskParameter="Guid" PropertyName="ProductCode" />
</GenerateGuid>
<GenerateGuid NamespaceGuid="$(NamespaceGuid)" Values="$(ProductNameShort);$(GuidInputs);$(OutputType)">
<Output TaskParameter="Guid" PropertyName="UpgradeCode" />
</GenerateGuid>
<PropertyGroup>
<DefineConstants>$(DefineConstants);ProductCode=$(ProductCode);UpgradeCode=$(UpgradeCode)</DefineConstants>
</PropertyGroup>
</Target>
<Target Name="_GenerateBundleGuids" Condition="'$(OutputType)' == 'bundle'">
<GenerateGuid NamespaceGuid="$(NamespaceGuid)" Values="$(BundleNameShort);$(GuidInputs)">
<Output TaskParameter="Guid" PropertyName="BundleProviderKey" />
</GenerateGuid>
<GenerateGuid NamespaceGuid="$(NamespaceGuid)" Values="$(BundleNameShort);$(GuidInputs);$(OutputType)">
<Output TaskParameter="Guid" PropertyName="BundleUpgradeCode" />
</GenerateGuid>
<PropertyGroup>
<DefineConstants>$(DefineConstants);BundleProviderKey=$(BundleProviderKey);BundleUpgradeCode=$(BundleUpgradeCode)</DefineConstants>
</PropertyGroup>
</Target>
</Project>

View File

@ -0,0 +1,89 @@
#
# This script requires internal-only access to the code which generates ANCM installers.
#
#requires -version 4
[cmdletbinding()]
param(
[string]$Configuration = 'Debug',
[Parameter(Mandatory = $true)]
[Alias("x86")]
[string]$Runtime86Zip,
[Parameter(Mandatory = $true)]
[Alias("x64")]
[string]$Runtime64Zip,
[string]$BuildNumber = 't000',
[string]$AccessTokenSuffix = $null,
[string]$AssetRootUrl = $null,
[switch]$clean
)
$ErrorActionPreference = 'Stop'
$repoRoot = Resolve-Path "$PSScriptRoot/../../../"
Import-Module -Scope Local "$repoRoot/scripts/common.psm1" -Force
$msbuild = Get-MSBuildPath -Prerelease -requires 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'
$harvestRoot = "$repoRoot/obj/sfx/"
if ($clean) {
Remove-Item -Recurse -Force $harvestRoot -ErrorAction Ignore | Out-Null
}
New-Item "$harvestRoot/x86", "$harvestRoot/x64" -ItemType Directory -ErrorAction Ignore | Out-Null
if (-not (Test-Path "$harvestRoot/x86/shared/")) {
Expand-Archive $Runtime86Zip -DestinationPath "$harvestRoot/x86"
}
if (-not (Test-Path "$harvestRoot/x64/shared/")) {
Expand-Archive $Runtime64Zip -DestinationPath "$harvestRoot/x64"
}
Push-Location $PSScriptRoot
try {
Invoke-Block { & $msbuild `
tasks/InstallerTasks.csproj `
-nologo `
-m `
-v:m `
-nodeReuse:false `
-restore `
-t:Build `
"-p:Configuration=$Configuration"
}
[string[]] $msbuildArgs = @()
if ($clean) {
$msbuildArgs += '-t:Clean'
}
if ($AssetRootUrl) {
$msbuildArgs += "-p:DotNetAssetRootUrl=$AssetRootUrl"
}
if ($AccessTokenSuffix) {
$msbuildArgs += "-p:DotNetAccessTokenSuffix=$AccessTokenSuffix"
}
$msbuildArgs += '-t:Build'
Invoke-Block { & $msbuild `
WindowsInstallers.proj `
-restore `
-nologo `
-m `
-v:m `
-nodeReuse:false `
-clp:Summary `
"-p:SharedFrameworkHarvestRootPath=$repoRoot/obj/sfx/" `
"-p:Configuration=$Configuration" `
"-p:BuildNumber=$BuildNumber" `
-bl `
@msbuildArgs
}
}
finally {
Pop-Location
}

View File

@ -0,0 +1,117 @@
#
# This builds installers for AspNetCoreModule.
# This script requires internal-only access to the code which generates ANCM installers.
#
#requires -version 4
[cmdletbinding()]
param(
[string]$GitCredential,
[string]$Configuration = 'Release',
[string]$DepsZip,
[string]$BuildNumber = 't000',
[string]$AncmSourceBranch = 'release/2.2'
)
$ErrorActionPreference = 'Stop'
$repoRoot = Resolve-Path "$PSScriptRoot/../../../"
Import-Module -Scope Local "$repoRoot/scripts/common.psm1" -Force
$msbuild = Get-MSBuildPath -Prerelease -requires 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'
# get wix
[version] $wixVer = '3.11.1'
$wixToolSetRoot = "$repoRoot/obj/tools/wix/$wixVer/"
$downloadFile = "$wixToolSetRoot/wix-binaries.zip"
if (-not (Test-Path $downloadFile)) {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$downloadUrl = "https://github.com/wixtoolset/wix3/releases/download/wix$($wixVer.Major)$($wixVer.Minor)$($wixVer.Build)rtm/wix$($wixVer.Major)$($wixVer.Minor)-binaries.zip"
Write-Host "Downloading fix $wixVer from $downloadUrl"
New-Item -Type Directory $wixToolSetRoot -ErrorAction Ignore | Out-Null
Invoke-WebRequest -UseBasicParsing -Uri $downloadUrl -OutFile $downloadFile
Expand-Archive $downloadFile -DestinationPath $wixToolSetRoot
}
# get nuget.exe
$nuget = "$repoRoot/obj/tools/nuget.exe"
if (-not (Test-Path $nuget)) {
Invoke-WebRequest -UseBasicParsing -Uri 'https://dist.nuget.org/win-x86-commandline/latest/nuget.exe' -OutFile $nuget
}
if (-not $DepsZip) {
$DepsZip = "$repoRoot/modules/IISIntegration/artifacts/build/AspNetCoreModule.zip"
}
$deps = "$repoRoot/obj/ancm"
Remove-Item -Recurse $deps -Force -ErrorAction Ignore | Out-Null
New-Item -ItemType Directory -ErrorAction Ignore $deps | Out-Null
Expand-Archive $DepsZip -DestinationPath $deps -Force
Push-Location $PSScriptRoot
try {
if ($GitCredential) {
# Disable prompts for passwords
$env:GIT_TERMINAL_PROMPT = 0
}
if (-not (Test-Path ancm/)) {
$gitSource = "https://${GitCredential}@devdiv.visualstudio.com/DefaultCollection/DevDiv/_git"
Invoke-Block {
& git clone $gitSource/AspNetCoreModule-Setup `
--branch $AncmSourceBranch `
ancm/
}
Invoke-Block {
& git clone $gitSource/IIS-Setup `
ancm/IIS-Setup
}
Invoke-Block {
& git clone $gitSource/IIS-Common `
ancm/IIS-Common
}
Invoke-Block {
& git clone $gitSource/IIS-Common `
ancm/IIS-Setup/IIS-Common
}
}
Invoke-Block -WorkingDir ancm/ {
& git submodule update --init --recursive
}
Invoke-Block -WorkingDir ancm/ {
& $nuget restore ANCM-Setup.sln
}
Invoke-Block -WorkingDir ancm/IIS-Common/lib/ {
& $nuget restore packages.config
}
Invoke-Block { & $msbuild `
ancm/Setup.msbuild `
-m `
-v:m `
-nodeReuse:false `
-clp:Summary `
"-t:BuildCustomAction;Build" `
"-p:PrebuiltAspnetCoreRoot=$deps" `
"-p:WixToolPath=$wixToolSetRoot" `
"-p:WixTargetsPath=$wixToolSetRoot\Wix.targets" `
"-p:WixTasksPath=$wixToolSetRoot\wixtasks.dll" `
"-p:WixNativeCATargetsPath=$wixToolSetRoot\sdk\wix.nativeca.targets" `
"-p:Configuration=$Configuration" `
"-p:BuildNumber=$BuildNumber"
}
$outputPath = "$repoRoot/artifacts/bin/$Configuration/installers/en-US/"
New-Item $outputPath -ItemType Directory -ErrorAction Ignore | Out-Null
Copy-Item -Recurse "ancm/bin/AspNetCoreModuleV1/$Configuration/x64/en-us/*" $outputPath
Copy-Item -Recurse "ancm/bin/AspNetCoreModuleV1/$Configuration/x86/en-us/*" $outputPath
Copy-Item -Recurse "ancm/bin/AspNetCoreModuleV2/$Configuration/x64/en-us/*" $outputPath
Copy-Item -Recurse "ancm/bin/AspNetCoreModuleV2/$Configuration/x86/en-us/*" $outputPath
}
finally {
Pop-Location
}

View File

@ -0,0 +1,113 @@
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Calibri;}{\f3\fnil\fcharset2 Symbol;}}
{\colortbl ;\red31\green73\blue125;\red0\green0\blue255;}
{\*\listtable
{\list\listhybrid
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx360}
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}
{\listlevel\levelnfc2\leveljc0\levelstartat1{\leveltext\'02\'02.;}{\levelnumbers\'01;}\jclisttab\tx720}\listid1 }
{\list\listhybrid
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx363}
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}\listid2 }}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
{\*\generator Riched20 6.3.9600}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
\pard\nowidctlpar\sb120\sa120\b\f0\fs24 MICROSOFT SOFTWARE LICENSE TERMS\par
\pard\brdrb\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 MICROSOFT .NET LIBRARY \par
\pard\nowidctlpar\sb120\sa120\fs19 These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120\b0 updates,\par
{\pntext\f3\'B7\tab}supplements,\par
{\pntext\f3\'B7\tab}Internet-based services, and\par
{\pntext\f3\'B7\tab}support services\par
\pard\nowidctlpar\sb120\sa120\b for this software, unless other terms accompany those items. If so, those terms apply.\par
BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.\par
\pard\brdrt\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW.\par
\pard
{\listtext\f0 1.\tab}\jclisttab\tx360\ls1\nowidctlpar\fi-357\li357\sb120\sa120 INSTALLATION AND USE RIGHTS. \par
\pard
{\listtext\f0 a.\tab}\jclisttab\tx363\ls1\ilvl1\nowidctlpar\fi-363\li720\sb120\sa120 Installation and Use.\b0\fs20 You may install and use any number of copies of the software to design, develop and test your programs.\par
{\listtext\f0 b.\tab}\b\fs19 Third Party Programs.\b0\fs20 The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only.\b\fs19\par
\pard
{\listtext\f0 2.\tab}\jclisttab\tx360\ls1\nowidctlpar\fi-357\li357\sb120\sa120\fs20 ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.\par
\pard
{\listtext\f0 a.\tab}\jclisttab\tx363\ls1\ilvl1\nowidctlpar\fi-363\li720\sb120\sa120 DISTRIBUTABLE CODE.\~ \b0 The software is comprised of Distributable Code. \f1\ldblquote\f0 Distributable Code\f1\rdblquote\f0 is code that you are permitted to distribute in programs you develop if you comply with the terms below.\b\par
\pard
{\listtext\f0 i.\tab}\jclisttab\tx720\ls1\ilvl2\nowidctlpar\fi-357\li1077\sb120\sa120\tx1077 Right to Use and Distribute. \par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 You may copy and distribute the object code form of the software.\par
{\pntext\f3\'B7\tab}Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.\par
\pard\nowidctlpar\fi-357\li1077\sb120\sa120\tx1077\b ii.\tab Distribution Requirements.\b0 \b For any Distributable Code you distribute, you must\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 add significant primary functionality to it in your programs;\par
{\pntext\f3\'B7\tab}require distributors and external end users to agree to terms that protect it at least as much as this agreement;\par
{\pntext\f3\'B7\tab}display your valid copyright notice on your programs; and\par
{\pntext\f3\'B7\tab}indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\rquote fees, related to the distribution or use of your programs.\par
\pard\nowidctlpar\fi-357\li1077\sb120\sa120\tx1077\b iii.\tab Distribution Restrictions.\b0 \b You may not\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 alter any copyright, trademark or patent notice in the Distributable Code;\par
{\pntext\f3\'B7\tab}use Microsoft\rquote s trademarks in your programs\rquote names or in a way that suggests your programs come from or are endorsed by Microsoft;\par
{\pntext\f3\'B7\tab}include Distributable Code in malicious, deceptive or unlawful programs; or\par
{\pntext\f3\'B7\tab}modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-358\li1792\sb120\sa120 the code be disclosed or distributed in source code form; or\cf1\f2\par
{\pntext\f3\'B7\tab}\cf0\f0 others have the right to modify it.\cf1\f2\par
\pard\nowidctlpar\fi-357\li357\sb120\sa120\cf0\b\f0 3.\tab\fs19 SCOPE OF LICENSE. \b0 The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120 work around any technical limitations in the software;\par
{\pntext\f3\'B7\tab}reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;\par
{\pntext\f3\'B7\tab}publish the software for others to copy;\par
{\pntext\f3\'B7\tab}rent, lease or lend the software;\par
{\pntext\f3\'B7\tab}transfer the software or this agreement to any third party; or\par
{\pntext\f3\'B7\tab}use the software for commercial software hosting services.\par
\pard\nowidctlpar\fi-357\li357\sb120\sa120\b\fs20 4.\tab\fs19 BACKUP COPY. \b0 You may make one backup copy of the software. You may use it only to reinstall the software.\par
\b\fs20 5.\tab\fs19 DOCUMENTATION. \b0 Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.\par
\b\fs20 6.\tab\fs19 EXPORT RESTRICTIONS. \b0 The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see {\fs20{\field{\*\fldinst{HYPERLINK www.microsoft.com/exporting }}{\fldrslt{www.microsoft.com/exporting\ul0\cf0}}}}\f0\fs19 .\fs20\par
\b 7.\tab\fs19 SUPPORT SERVICES. \b0 Because this software is \ldblquote as is,\rdblquote we may not provide support services for it.\par
\b\fs20 8.\tab\fs19 ENTIRE AGREEMENT. \b0 This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.\par
\b\fs20 9.\tab\fs19 APPLICABLE LAW.\par
\pard
{\listtext\f0 a.\tab}\jclisttab\tx363\ls2\ilvl1\nowidctlpar\fi-363\li720\sb120\sa120 United States. \b0 If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.\par
{\listtext\f0 b.\tab}\b Outside the United States. If you acquired the software in any other country, the laws of that country apply.\par
\pard
{\pntext\f0 1.\tab}{\*\pn\pnlvlbody\pnf0\pnindent360\pnstart1\pndec{\pntxta.}}
\nowidctlpar\fi-357\li357\sb120\sa120 LEGAL EFFECT. \b0 This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.\par
{\pntext\f0 2.\tab}\b DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED \ldblquote AS-IS.\rdblquote YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\par
\pard\nowidctlpar\li357\sb120\sa120 FOR AUSTRALIA \endash YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.\par
\pard\nowidctlpar\fi-357\li357\sb120\sa120\fs20 12.\tab\fs19 LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.\par
\pard\nowidctlpar\li357\sb120\sa120\b0 This limitation applies to\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120 anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and\par
{\pntext\f3\'B7\tab}claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.\par
\pard\nowidctlpar\sb120\sa120 It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.\par
\lang9 Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.\par
Remarque : Ce logiciel \'e9tant distribu\'e9 au Qu\'e9bec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7ais.\par
\b\lang1033 EXON\'c9RATION DE GARANTIE. \b0 Le logiciel vis\'e9 par une licence est offert \'ab tel quel \'bb. Toute utilisation de ce logiciel est \'e0 votre seule risque et p\'e9ril. Microsoft n\rquote accorde aucune autre garantie expresse. Vous pouvez b\'e9n\'e9ficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit\'e9 marchande, d\rquote ad\'e9quation \'e0 un usage particulier et d\rquote absence de contrefa\'e7on sont exclues.\par
\b LIMITATION DES DOMMAGES-INT\'c9R\'caTS ET EXCLUSION DE RESPONSABILIT\'c9 POUR LES DOMMAGES. \b0 Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement \'e0 hauteur de 5,00 $ US. Vous ne pouvez pr\'e9tendre \'e0 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9ciaux, indirects ou accessoires et pertes de b\'e9n\'e9fices.\par
\lang9 Cette limitation concerne :\par
\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent360{\pntxtb\'B7}}\nowidctlpar\li720\sb120\sa120 tout ce qui est reli\'e9 au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et\par
{\pntext\f3\'B7\tab}les r\'e9clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9 stricte, de n\'e9gligence ou d\rquote une autre faute dans la limite autoris\'e9e par la loi en vigueur.\par
\pard\nowidctlpar\sb120\sa120 Elle s\rquote applique \'e9galement, m\'eame si Microsoft connaissait ou devrait conna\'eetre l\rquote\'e9ventualit\'e9 d\rquote un tel dommage. Si votre pays n\rquote autorise pas l\rquote exclusion ou la limitation de responsabilit\'e9 pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\rquote exclusion ci-dessus ne s\rquote appliquera pas \'e0 votre \'e9gard.\par
\b\lang1033 EFFET JURIDIQUE. \b0 Le pr\'e9sent contrat d\'e9crit certains droits juridiques. Vous pourriez avoir d\rquote autres droits pr\'e9vus par les lois de votre pays. Le pr\'e9sent contrat ne modifie pas les droits que vous conf\'e8rent les lois de votre pays si celles-ci ne le permettent pas.\par
\b\fs20\lang1036\par
}

View File

@ -0,0 +1,38 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class GenerateGuid : Task
{
[Output]
public string Guid { get; private set; }
[Required]
public string NamespaceGuid { get; set; }
[Required]
public ITaskItem[] Values { get; set; }
public override bool Execute()
{
try
{
var value = string.Join(",", Values.Select(o => o.ItemSpec).ToArray()).ToLowerInvariant();
Guid = Uuid.Create(new Guid(NamespaceGuid), value).ToString();
}
catch (Exception e)
{
Log.LogErrorFromException(e);
}
return !Log.HasLoggedErrors;
}
}
}

View File

@ -0,0 +1,38 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.Deployment.WindowsInstaller.Package;
namespace RepoTasks
{
public class GetMsiProperty : Task
{
[Required]
public string InstallPackage { get; set; }
[Required]
public string Property { get; set; }
[Output]
public string Value { get; set; }
public override bool Execute()
{
try
{
using (var package = new InstallPackage(InstallPackage, 0))
{
Value = package.Property[Property];
}
}
catch (Exception exception)
{
Log.LogErrorFromException(exception);
}
return !Log.HasLoggedErrors;
}
}
}

View File

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<SignAssembly>false</SignAssembly>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build.Tasks.v4.0" />
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<PackageReference Include="Wix" Version="3.11.1" />
<Reference Include="Microsoft.Deployment.WindowsInstaller">
<HintPath>$(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Deployment.WindowsInstaller.Package">
<HintPath>$(WiXSdkPath)\Microsoft.Deployment.WindowsInstaller.Package.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@ -0,0 +1,79 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Net;
using System.Security.Cryptography;
using System.Text;
namespace RepoTasks
{
/// <summary>
/// Implementation of RFC 4122 - A Universally Unique Identifier (UUID) URN Namespace.
/// </summary>
internal sealed class Uuid
{
/// <summary>
/// Generates a version 3 UUID given a namespace UUID and name. This is based on the algorithm described in
/// RFC 4122 (http://www.apps.ietf.org/rfc/rfc4122.html), section 4.3.
/// </summary>
/// <param name="namespaceId"></param>
/// <param name="name"></param>
/// <returns></returns>
public static Guid Create(Guid namespaceId, string name)
{
// 1. Convert the name to a canonical sequence of octets (as defined by the standards or conventions of its name space); put the name space ID in network byte order.
byte[] namespaceBytes = namespaceId.ToByteArray();
// Octet 0-3
int timeLow = IPAddress.HostToNetworkOrder(BitConverter.ToInt32(namespaceBytes, 0));
// Octet 4-5
short timeMid = IPAddress.HostToNetworkOrder(BitConverter.ToInt16(namespaceBytes, 4));
// Octet 6-7
short timeHiVersion = IPAddress.HostToNetworkOrder(BitConverter.ToInt16(namespaceBytes, 6));
// 2. Compute the hash of the namespace ID concatenated with the name
byte[] nameBytes = Encoding.Unicode.GetBytes(name);
byte[] hashBuffer = new byte[namespaceBytes.Length + nameBytes.Length];
Buffer.BlockCopy(BitConverter.GetBytes(timeLow), 0, hashBuffer, 0, 4);
Buffer.BlockCopy(BitConverter.GetBytes(timeMid), 0, hashBuffer, 4, 2);
Buffer.BlockCopy(BitConverter.GetBytes(timeHiVersion), 0, hashBuffer, 6, 2);
Buffer.BlockCopy(namespaceBytes, 8, hashBuffer, 8, 8);
Buffer.BlockCopy(nameBytes, 0, hashBuffer, 16, nameBytes.Length);
byte[] hash;
using (SHA256 sha256 = new SHA256Managed())
{
hash = sha256.ComputeHash(hashBuffer);
}
Array.Resize(ref hash, 16);
// 3. Set octets zero through 3 of the time_low field to octets zero through 3 of the hash.
timeLow = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(hash, 0));
Buffer.BlockCopy(BitConverter.GetBytes(timeLow), 0, hash, 0, 4);
// 4. Set octets zero and one of the time_mid field to octets 4 and 5 of the hash.
timeMid = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(hash, 4));
Buffer.BlockCopy(BitConverter.GetBytes(timeMid), 0, hash, 4, 2);
// 5. Set octets zero and one of the time_hi_and_version field to octets 6 and 7 of the hash.
timeHiVersion = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(hash, 6));
// 6. Set the four most significant bits (bits 12 through 15) of the time_hi_and_version field to the appropriate 4-bit version number from Section 4.1.3.
timeHiVersion = (short)((timeHiVersion & 0x0fff) | 0x3000);
Buffer.BlockCopy(BitConverter.GetBytes(timeHiVersion), 0, hash, 6, 2);
// 7. Set the clock_seq_hi_and_reserved field to octet 8 of the hash.
// 8. Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.
hash[8] = (byte)((hash[8] & 0x3f) | 0x80);
// Steps 9-11 are essentially no-ops, but provided for completion sake
// 9. Set the clock_seq_low field to octet 9 of the hash.
// 10. Set octets zero through five of the node field to octets 10 through 15 of the hash.
// 11. Convert the resulting UUID to local byte order.
return new Guid(hash);
}
}
}

View File

@ -9,6 +9,7 @@
<!-- The 'human friendly' version to display in installers. In pre-release builds, this might be "2.0.7 Preview 2" -->
<PackageBrandingVersion>$(VersionPrefix) Preview 1</PackageBrandingVersion>
<PackageBrandingVersion Condition=" '$(IsFinalBuild)' != 'true' ">$(PackageBrandingVersion) Build $(BuildNumber)</PackageBrandingVersion>
<ExperimentalVersionPrefix>0.2.0</ExperimentalVersionPrefix>
<ExperimentalVersionSuffix>alpha1</ExperimentalVersionSuffix>