From 63e99a8db73e2d7531ff5f8abde1842dd4f0ee8e Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 12 Jul 2024 11:24:37 -0700 Subject: Introducing wix-cli.msi Fixes 8623 --- src/Directory.wixproj.targets | 2 + src/setup/MetadataTask/GenerateMetadata.cs | 72 +++++++++++++++++-- src/setup/setup.cmd | 2 + src/setup/setup.sln | 6 ++ src/setup/wix-cli/Package.wxs | 81 ++++++++++++++++++++++ src/setup/wix-cli/wix-cli.wixproj | 36 ++++++++++ src/wix/WixToolset.Core/CommandLine/CommandLine.cs | 2 +- 7 files changed, 195 insertions(+), 6 deletions(-) create mode 100644 src/setup/wix-cli/Package.wxs create mode 100644 src/setup/wix-cli/wix-cli.wixproj diff --git a/src/Directory.wixproj.targets b/src/Directory.wixproj.targets index b509d0a7..61404fb9 100644 --- a/src/Directory.wixproj.targets +++ b/src/Directory.wixproj.targets @@ -11,7 +11,9 @@ $(DefineConstants); SetupVersion=$(PackageVersion); + SetupMajorVersion=$(GitBaseVersionMajor); SetupMajorMinorVersion=$(GitBaseVersionMajor).$(GitBaseVersionMinor); + SetupMajorMinorPatchVersion=$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch); SetupDashedMajorMinorVersion=$(GitBaseVersionMajor)-$(GitBaseVersionMinor); SetupDashedPrerelease=$(PrereleaseSuffix) diff --git a/src/setup/MetadataTask/GenerateMetadata.cs b/src/setup/MetadataTask/GenerateMetadata.cs index 65e6f7a4..645b7750 100644 --- a/src/setup/MetadataTask/GenerateMetadata.cs +++ b/src/setup/MetadataTask/GenerateMetadata.cs @@ -36,13 +36,22 @@ namespace WixToolset.Tasks var section = intermediate.Sections.Single(); - if (section.Type != SectionType.Bundle) + Metadata metadata; + SourceLineNumber sourceLineNumber; + + if (section.Type == SectionType.Bundle) + { + (metadata, sourceLineNumber) = this.GetBundleMetadata(section, "WixToolset.AdditionalTools"); + } + else if (section.Type == SectionType.Package) + { + (metadata, sourceLineNumber) = this.GetPackageMetadata(section, "WixToolset.CommandLineTools"); + } + else { return false; } - (var metadata, var sourceLineNumber) = this.GetBundleMetadata(section); - if (metadata != null) { this.PopulateFileInfo(metadata); @@ -53,13 +62,13 @@ namespace WixToolset.Tasks return true; } - private (Metadata, SourceLineNumber) GetBundleMetadata(IntermediateSection section) + private (Metadata, SourceLineNumber) GetBundleMetadata(IntermediateSection section, string defaultId) { var bundleSymbol = section.Symbols.OfType().Single(); var metadata = new Metadata { - Id = "WixToolset.AdditionalTools", + Id = bundleSymbol.Id?.Id ?? defaultId, Type = MetadataType.Burn, Name = bundleSymbol.Name, Version = bundleSymbol.Version, @@ -76,6 +85,31 @@ namespace WixToolset.Tasks return (metadata, bundleSymbol.SourceLineNumbers); } + private (Metadata, SourceLineNumber) GetPackageMetadata(IntermediateSection section, string defaultId) + { + var packageSymbol = section.Symbols.OfType().Single(); + var propertySymbols = section.Symbols.OfType().ToDictionary(p => p.Id.Id); + var platform = GetPlatformFromSummaryInformation(section.Symbols.OfType()); + + var metadata = new Metadata + { + Id = packageSymbol.Id?.Id ?? defaultId, + Type = MetadataType.Msi, + Name = packageSymbol.Name, + Version = packageSymbol.Version, + Publisher = packageSymbol.Manufacturer, + Description = "Installation for " + packageSymbol.Name, + License = "MS-RL", + SupportUrl = propertySymbols["ARPHELPLINK"].Value, + ProductCode = propertySymbols["ProductCode"].Value, + UpgradeCode = propertySymbols["UpgradeCode"].Value, + AboutUrl = propertySymbols["ARPURLINFOABOUT"].Value, + Architecture = PlatformToArchitecture(platform), + }; + + return (metadata, packageSymbol.SourceLineNumbers); + } + private void PopulateFileInfo(Metadata metadata) { var fi = new FileInfo(this.TargetFile); @@ -101,6 +135,34 @@ namespace WixToolset.Tasks File.WriteAllText(metadataFilePath, json); } + private static Platform GetPlatformFromSummaryInformation(IEnumerable symbols) + { + foreach (var symbol in symbols) + { + if (symbol.PropertyId == SummaryInformationType.PlatformAndLanguage) + { + var value = symbol.Value; + var separatorIndex = value.IndexOf(';'); + var platformValue = separatorIndex > 0 ? value.Substring(0, separatorIndex) : value; + + switch (platformValue) + { + case "x64": + return Platform.X64; + + case "Arm64": + return Platform.ARM64; + + case "Intel": + default: + return Platform.X86; + } + } + } + + return Platform.X86; + } + private static ArchitectureType PlatformToArchitecture(Platform platform) { switch (platform) diff --git a/src/setup/setup.cmd b/src/setup/setup.cmd index 2bd82ebd..2b44b8db 100644 --- a/src/setup/setup.cmd +++ b/src/setup/setup.cmd @@ -35,7 +35,9 @@ msbuild -Restore setup.sln -p:Configuration=%_C% -tl -nologo -m -warnaserror -bl :clean @rd /s/q "..\..\build\setup" 2> nul +@del "..\..\build\artifacts\wix-cli-x64.*" 2> nul @del "..\..\build\artifacts\WixAdditionalTools.*" 2> nul +@del "..\..\build\logs\pdbs\%_C%\wix-cli-x64.*" 2> nul @del "..\..\build\logs\pdbs\%_C%\WixAdditionalTools.*" 2> nul @exit /b diff --git a/src/setup/setup.sln b/src/setup/setup.sln index 1f3c0cd5..3f6b1b43 100644 --- a/src/setup/setup.sln +++ b/src/setup/setup.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.2.32630.192 MinimumVisualStudioVersion = 10.0.40219.1 Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "ThmViewerPackage", "ThmViewerPackage\ThmViewerPackage.wixproj", "{F8C12838-DEC5-4CA5-97A8-DFE2247564C5}" EndProject +Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "wix-cli", "wix-cli\wix-cli.wixproj", "{69C043AF-F9D4-427D-A954-D0362DF25E6E}" +EndProject Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "WixAdditionalTools", "WixAdditionalTools\WixAdditionalTools.wixproj", "{59FF3AD3-339A-4048-9F0B-504EE74BC4AF}" EndProject Global @@ -17,6 +19,10 @@ Global {F8C12838-DEC5-4CA5-97A8-DFE2247564C5}.Debug|Any CPU.Build.0 = Debug|Any CPU {F8C12838-DEC5-4CA5-97A8-DFE2247564C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {F8C12838-DEC5-4CA5-97A8-DFE2247564C5}.Release|Any CPU.Build.0 = Release|Any CPU + {69C043AF-F9D4-427D-A954-D0362DF25E6E}.Debug|Any CPU.ActiveCfg = Debug|x64 + {69C043AF-F9D4-427D-A954-D0362DF25E6E}.Debug|Any CPU.Build.0 = Debug|x64 + {69C043AF-F9D4-427D-A954-D0362DF25E6E}.Release|Any CPU.ActiveCfg = Release|x64 + {69C043AF-F9D4-427D-A954-D0362DF25E6E}.Release|Any CPU.Build.0 = Release|x64 {59FF3AD3-339A-4048-9F0B-504EE74BC4AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {59FF3AD3-339A-4048-9F0B-504EE74BC4AF}.Debug|Any CPU.Build.0 = Debug|Any CPU {59FF3AD3-339A-4048-9F0B-504EE74BC4AF}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/src/setup/wix-cli/Package.wxs b/src/setup/wix-cli/Package.wxs new file mode 100644 index 00000000..9c193130 --- /dev/null +++ b/src/setup/wix-cli/Package.wxs @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/setup/wix-cli/wix-cli.wixproj b/src/setup/wix-cli/wix-cli.wixproj new file mode 100644 index 00000000..35457460 --- /dev/null +++ b/src/setup/wix-cli/wix-cli.wixproj @@ -0,0 +1,36 @@ + + + + x64 + wix-cli-$(Platform) + $(PackageOutputPath) + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/wix/WixToolset.Core/CommandLine/CommandLine.cs b/src/wix/WixToolset.Core/CommandLine/CommandLine.cs index bbe985f8..d6e0e0ae 100644 --- a/src/wix/WixToolset.Core/CommandLine/CommandLine.cs +++ b/src/wix/WixToolset.Core/CommandLine/CommandLine.cs @@ -56,7 +56,7 @@ namespace WixToolset.Core.CommandLine if (!this.SuppressLogo && command?.ShowLogo == true) { var branding = this.ServiceProvider.GetService(); - Console.WriteLine(branding.ReplacePlaceholders("[AssemblyProduct] [AssemblyDescription] version [ProductVersion]")); + Console.WriteLine(branding.ReplacePlaceholders("[AssemblyProduct] version [ProductVersion]")); Console.WriteLine(branding.ReplacePlaceholders("[AssemblyCopyright]")); Console.WriteLine(); } -- cgit v1.2.3-55-g6feb