Merge pull request #2048 from Sridhar-MS/msi-changes

Windows Installer changes
This commit is contained in:
Sridhar Periyasamy 2016-03-27 20:49:46 -07:00
commit 4e5fb96a50
8 changed files with 20 additions and 25 deletions

View file

@ -6,7 +6,7 @@
<?include "Variables.wxi" ?> <?include "Variables.wxi" ?>
<Bundle Name="$(var.ProductName)" Manufacturer="$(var.Manufacturer)" <Bundle Name="$(var.ProductName)" Manufacturer="$(var.Manufacturer)"
Version="$(var.DisplayVersion)" UpgradeCode="70A1576F-63B6-4659-9E39-25C7B769DDE5" Version="$(var.DisplayVersion)" UpgradeCode="$(var.UpgradeCode)"
AboutUrl="http://dotnet.github.io/" AboutUrl="http://dotnet.github.io/"
Compressed="yes"> Compressed="yes">

View file

@ -9,6 +9,7 @@ param(
[Parameter(Mandatory=$true)][string]$WixRoot, [Parameter(Mandatory=$true)][string]$WixRoot,
[Parameter(Mandatory=$true)][string]$DotnetMSIVersion, [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
[Parameter(Mandatory=$true)][string]$DotnetCLIVersion, [Parameter(Mandatory=$true)][string]$DotnetCLIVersion,
[Parameter(Mandatory=$true)][string]$UpgradeCode,
[Parameter(Mandatory=$true)][string]$Architecture, [Parameter(Mandatory=$true)][string]$Architecture,
[Parameter(Mandatory=$true)][string]$ReleaseSuffix [Parameter(Mandatory=$true)][string]$ReleaseSuffix
) )
@ -31,6 +32,7 @@ function RunCandleForBundle
-dDisplayVersion="$DotnetCLIVersion" ` -dDisplayVersion="$DotnetCLIVersion" `
-dReleaseSuffix="$ReleaseSuffix" ` -dReleaseSuffix="$ReleaseSuffix" `
-dCLISDKMsiSourcePath="$CLISDKMSIFile" ` -dCLISDKMsiSourcePath="$CLISDKMSIFile" `
-dUpgradeCode="$UpgradeCode" `
-dSharedFXMsiSourcePath="$SharedFxMSIFile" ` -dSharedFXMsiSourcePath="$SharedFxMSIFile" `
-dSharedHostMsiSourcePath="$SharedHostMSIFile" ` -dSharedHostMsiSourcePath="$SharedHostMSIFile" `
-arch "$Architecture" ` -arch "$Architecture" `

View file

@ -7,6 +7,7 @@ param(
[Parameter(Mandatory=$true)][string]$WixRoot, [Parameter(Mandatory=$true)][string]$WixRoot,
[Parameter(Mandatory=$true)][string]$DotnetMSIVersion, [Parameter(Mandatory=$true)][string]$DotnetMSIVersion,
[Parameter(Mandatory=$true)][string]$DotnetCLIVersion, [Parameter(Mandatory=$true)][string]$DotnetCLIVersion,
[Parameter(Mandatory=$true)][string]$UpgradeCode,
[Parameter(Mandatory=$true)][string]$Architecture, [Parameter(Mandatory=$true)][string]$Architecture,
[Parameter(Mandatory=$true)][string]$ReleaseSuffix [Parameter(Mandatory=$true)][string]$ReleaseSuffix
) )
@ -49,6 +50,7 @@ function RunCandle
-dMicrosoftEula="$RepoRoot\packaging\osx\clisdk\resources\en.lproj\eula.rtf" ` -dMicrosoftEula="$RepoRoot\packaging\osx\clisdk\resources\en.lproj\eula.rtf" `
-dBuildVersion="$DotnetMSIVersion" ` -dBuildVersion="$DotnetMSIVersion" `
-dDisplayVersion="$DotnetCLIVersion" ` -dDisplayVersion="$DotnetCLIVersion" `
-dUpgradeCode="$UpgradeCode" `
-dReleaseSuffix="$ReleaseSuffix" ` -dReleaseSuffix="$ReleaseSuffix" `
-arch "$Architecture" ` -arch "$Architecture" `
-ext WixDependencyExtension.dll ` -ext WixDependencyExtension.dll `

View file

@ -26,11 +26,9 @@
<?if $(var.Platform)=x86?> <?if $(var.Platform)=x86?>
<?define Program_Files="ProgramFilesFolder"?> <?define Program_Files="ProgramFilesFolder"?>
<?define Win64AttributeValue=no?> <?define Win64AttributeValue=no?>
<?define UpgradeCode="25CAE344-22A6-422D-942E-942687C56A45"?>
<?elseif $(var.Platform)=x64?> <?elseif $(var.Platform)=x64?>
<?define Program_Files="ProgramFiles64Folder"?> <?define Program_Files="ProgramFiles64Folder"?>
<?define Win64AttributeValue=yes?> <?define Win64AttributeValue=yes?>
<?define UpgradeCode="7D73E4F7-71E2-4236-8CF5-1C499BA3FF50"?>
<?else?> <?else?>
<?error Invalid Platform ($(var.Platform))?> <?error Invalid Platform ($(var.Platform))?>
<?endif?> <?endif?>

View file

@ -107,9 +107,11 @@ namespace Microsoft.DotNet.Cli.Build
public static BuildTargetResult GenerateCliSdkMsi(BuildTargetContext c) public static BuildTargetResult GenerateCliSdkMsi(BuildTargetContext c)
{ {
var cliSdkRoot = c.BuildContext.Get<string>("CLISDKRoot"); var cliSdkRoot = c.BuildContext.Get<string>("CLISDKRoot");
var upgradeCode = Utils.GenerateGuidFromName(SdkMsi).ToString().ToUpper();
Cmd("powershell", "-NoProfile", "-NoLogo", Cmd("powershell", "-NoProfile", "-NoLogo",
Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatemsi.ps1"), Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatemsi.ps1"),
cliSdkRoot, SdkMsi, WixRoot, MsiVersion, CliVersion, Arch, Channel) cliSdkRoot, SdkMsi, WixRoot, MsiVersion, CliVersion, upgradeCode, Arch, Channel)
.Execute() .Execute()
.EnsureSuccessful(); .EnsureSuccessful();
return c.Success(); return c.Success();
@ -143,7 +145,8 @@ namespace Microsoft.DotNet.Cli.Build
var inputDir = c.BuildContext.Get<string>("SharedFrameworkPublishRoot"); var inputDir = c.BuildContext.Get<string>("SharedFrameworkPublishRoot");
var sharedFrameworkNuGetName = Monikers.SharedFrameworkName; var sharedFrameworkNuGetName = Monikers.SharedFrameworkName;
var sharedFrameworkNuGetVersion = c.BuildContext.Get<string>("SharedFrameworkNugetVersion"); var sharedFrameworkNuGetVersion = c.BuildContext.Get<string>("SharedFrameworkNugetVersion");
var upgradeCode = Utils.GenerateGuidFromName($"{sharedFrameworkNuGetName}-{sharedFrameworkNuGetVersion}-{Arch}").ToString().ToUpper(); var msiVerison = sharedFrameworkNuGetVersion.Split('-')[0];
var upgradeCode = Utils.GenerateGuidFromName(SharedFrameworkMsi).ToString().ToUpper();
var wixObjRoot = Path.Combine(Dirs.Output, "obj", "wix", "sharedframework"); var wixObjRoot = Path.Combine(Dirs.Output, "obj", "wix", "sharedframework");
if (Directory.Exists(wixObjRoot)) if (Directory.Exists(wixObjRoot))
@ -154,7 +157,7 @@ namespace Microsoft.DotNet.Cli.Build
Cmd("powershell", "-NoProfile", "-NoLogo", Cmd("powershell", "-NoProfile", "-NoLogo",
Path.Combine(Dirs.RepoRoot, "packaging", "windows", "sharedframework", "generatemsi.ps1"), Path.Combine(Dirs.RepoRoot, "packaging", "windows", "sharedframework", "generatemsi.ps1"),
inputDir, SharedFrameworkMsi, WixRoot, MsiVersion, sharedFrameworkNuGetName, sharedFrameworkNuGetVersion, upgradeCode, Arch, wixObjRoot) inputDir, SharedFrameworkMsi, WixRoot, msiVerison, sharedFrameworkNuGetName, sharedFrameworkNuGetVersion, upgradeCode, Arch, wixObjRoot)
.Execute() .Execute()
.EnsureSuccessful(); .EnsureSuccessful();
return c.Success(); return c.Success();
@ -165,9 +168,11 @@ namespace Microsoft.DotNet.Cli.Build
[BuildPlatforms(BuildPlatform.Windows)] [BuildPlatforms(BuildPlatform.Windows)]
public static BuildTargetResult GenerateCliSdkBundle(BuildTargetContext c) public static BuildTargetResult GenerateCliSdkBundle(BuildTargetContext c)
{ {
var upgradeCode = Utils.GenerateGuidFromName(SdkBundle).ToString().ToUpper();
Cmd("powershell", "-NoProfile", "-NoLogo", Cmd("powershell", "-NoProfile", "-NoLogo",
Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatebundle.ps1"), Path.Combine(Dirs.RepoRoot, "packaging", "windows", "clisdk", "generatebundle.ps1"),
SdkMsi, SharedFrameworkMsi, SharedHostMsi, SdkBundle, WixRoot, MsiVersion, CliVersion, Arch, Channel) SdkMsi, SharedFrameworkMsi, SharedHostMsi, SdkBundle, WixRoot, MsiVersion, CliVersion, upgradeCode, Arch, Channel)
.EnvironmentVariable("Stage2Dir", Dirs.Stage2) .EnvironmentVariable("Stage2Dir", Dirs.Stage2)
.Execute() .Execute()
.EnsureSuccessful(); .EnsureSuccessful();
@ -180,7 +185,7 @@ namespace Microsoft.DotNet.Cli.Build
{ {
var sharedFrameworkNuGetName = Monikers.SharedFrameworkName; var sharedFrameworkNuGetName = Monikers.SharedFrameworkName;
var sharedFrameworkNuGetVersion = c.BuildContext.Get<string>("SharedFrameworkNugetVersion"); var sharedFrameworkNuGetVersion = c.BuildContext.Get<string>("SharedFrameworkNugetVersion");
var upgradeCode = Utils.GenerateGuidFromName($"{sharedFrameworkNuGetName}-{sharedFrameworkNuGetVersion}-{Arch}-bundle").ToString().ToUpper(); var upgradeCode = Utils.GenerateGuidFromName(SharedFrameworkBundle).ToString().ToUpper();
Cmd("powershell", "-NoProfile", "-NoLogo", Cmd("powershell", "-NoProfile", "-NoLogo",
Path.Combine(Dirs.RepoRoot, "packaging", "windows", "sharedframework", "generatebundle.ps1"), Path.Combine(Dirs.RepoRoot, "packaging", "windows", "sharedframework", "generatebundle.ps1"),

View file

@ -22,21 +22,16 @@ namespace Dotnet.Cli.Msi.Tests
_msiMgr = new MsiManager(msiFile); _msiMgr = new MsiManager(msiFile);
} }
[Theory] [Fact]
[InlineData("")] public void InstallTest()
[InlineData(@"%SystemDrive%\dotnet")]
public void InstallTest(string installLocation)
{ {
installLocation = Environment.ExpandEnvironmentVariables(installLocation); string expectedInstallLocation = Environment.ExpandEnvironmentVariables(@"%ProgramFiles%\dotnet");
string expectedInstallLocation = string.IsNullOrEmpty(installLocation) ?
Environment.ExpandEnvironmentVariables(@"%ProgramFiles%\dotnet") :
installLocation;
// make sure that the msi is not already installed, if so the machine is in a bad state // make sure that the msi is not already installed, if so the machine is in a bad state
Assert.False(_msiMgr.IsInstalled, "The dotnet CLI msi is already installed"); Assert.False(_msiMgr.IsInstalled, "The dotnet CLI msi is already installed");
Assert.False(Directory.Exists(expectedInstallLocation)); Assert.False(Directory.Exists(expectedInstallLocation));
_msiMgr.Install(installLocation); _msiMgr.Install();
Assert.True(_msiMgr.IsInstalled); Assert.True(_msiMgr.IsInstalled);
Assert.True(Directory.Exists(expectedInstallLocation)); Assert.True(Directory.Exists(expectedInstallLocation));

View file

@ -45,12 +45,5 @@ namespace Dotnet.Cli.Msi.Tests
Assert.Equal(_fixture.InstallLocation, regKey.GetValue("InstallDir")); Assert.Equal(_fixture.InstallLocation, regKey.GetValue("InstallDir"));
Assert.NotNull(regKey.GetValue("Version")); Assert.NotNull(regKey.GetValue("Version"));
} }
[Fact]
public void UpgradeCodeTest()
{
// magic number found in https://github.com/dotnet/cli/blob/master/packaging/windows/variables.wxi
Assert.Equal("{7D73E4F7-71E2-4236-8CF5-1C499BA3FF50}", _msiMgr.UpgradeCode);
}
} }
} }

View file

@ -23,7 +23,7 @@ namespace Dotnet.Cli.Msi.Tests
Assert.False(Utils.ExistsOnPath("dotnet.exe"), "After uninstallation dotnet tools must not be on path"); Assert.False(Utils.ExistsOnPath("dotnet.exe"), "After uninstallation dotnet tools must not be on path");
} }
[Fact] [Fact(Skip = "https://github.com/dotnet/cli/issues/2073")]
public void DotnetRegKeysTest() public void DotnetRegKeysTest()
{ {
Assert.True(_msiMgr.IsInstalled); Assert.True(_msiMgr.IsInstalled);