From 8b5505cd13367d48bce4ec8a6018e370ed3755b1 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Fri, 23 Oct 2020 17:32:44 -0400 Subject: Reorganize Product/Package to Package/SummaryInformation. --- .../Bind/BindSummaryInfoCommand.cs | 23 +- .../Decompile/Decompiler.cs | 99 +++-- .../Decompile/Names.cs | 7 +- .../CommandLine/DecompileCommand.cs | 1 + src/WixToolset.Core/Compiler.cs | 4 +- src/WixToolset.Core/Compiler_2.cs | 467 +++++++++------------ src/WixToolset.Core/Compiler_Module.cs | 56 ++- .../PreprocessorFixture.cs | 4 +- .../DecompiledNestedDirSearchUnderRegSearch.wxs | 9 +- .../TestData/Assembly/Package.wxs | 9 +- .../TestData/BadIf/Package.wxs | 9 +- .../TestData/Class/DecompiledOldClassTableDef.wxs | 9 +- .../TestData/ComplexExampleExtension/Package.wxs | 9 +- .../TestData/Components/Package.wxs | 9 +- .../TestData/CustomTable/CustomTable-Expected.wxs | 9 +- .../DecompileSingleFileCompressed/Expected.wxs | 9 +- .../DecompileSingleFileCompressed64/Expected.wxs | 9 +- .../TestData/ErrorsInUI/Package.wxs | 9 +- .../TestData/ExampleExtension/Package.wxs | 9 +- .../TestData/ForEach/Package.wxs | 9 +- .../TestData/IncludePath/Package.wxs | 9 +- .../TestData/InstanceTransform/Package.wxs | 9 +- .../TestData/ManualUpgrade/Package.wxs | 9 +- .../TestData/MultiFileCompressed/Package.wxs | 9 +- .../TestData/OverridableActions/Package.wxs | 10 +- .../TestData/PatchFamilyFilter/Package.wxs | 32 +- .../TestData/PatchFamilyFilter/Patch.wxs | 19 +- .../TestData/PatchSingle/Package.wxs | 30 +- .../ProductWithComponentGroupRef/Product.wxs | 9 +- .../TestData/ProgId/Package.wxs | 9 +- .../SequenceTables/DecompiledSequenceTables.wxs | 9 +- .../TestData/SetProperty/Package.wxs | 9 +- .../TestData/Shortcut/DecompiledShortcuts.wxs | 9 +- .../TestData/SimpleMerge/Package.wxs | 9 +- .../TestData/SimpleModule/Module.wxs | 7 +- .../TestData/SingleFile/Package.wxs | 9 +- .../TestData/SingleFileCompressed/Package.wxs | 9 +- .../TestData/Variables/Package.wxs | 10 +- .../TestData/Wixipl/Package.wxs | 9 +- .../TestData/WixlibWithBinaries/Package.wxs | 9 +- 40 files changed, 473 insertions(+), 530 deletions(-) (limited to 'src') diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindSummaryInfoCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindSummaryInfoCommand.cs index 6af2dc7a..a496c7ce 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindSummaryInfoCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindSummaryInfoCommand.cs @@ -46,9 +46,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind this.InstallerVersion = 0; this.ModularizationSuffix = null; - var foundCreateDataTime = false; + var foundCreateDateTime = false; var foundLastSaveDataTime = false; var foundCreatingApplication = false; + var foundPackageCode = false; var now = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture); foreach (var summaryInformationSymbol in this.Section.Symbols.OfType()) @@ -73,20 +74,16 @@ namespace WixToolset.Core.WindowsInstaller.Bind break; case SummaryInformationType.PackageCode: // PID_REVNUMBER + foundPackageCode = true; var packageCode = summaryInformationSymbol.Value; if (SectionType.Module == this.Section.Type) { this.ModularizationSuffix = "." + packageCode.Substring(1, 36).Replace('-', '_'); } - else if ("*" == packageCode) - { - // set the revision number (package/patch code) if it should be automatically generated - summaryInformationSymbol.Value = Common.GenerateGuid(); - } break; case SummaryInformationType.Created: - foundCreateDataTime = true; + foundCreateDateTime = true; break; case SummaryInformationType.LastSaved: foundLastSaveDataTime = true; @@ -113,8 +110,18 @@ namespace WixToolset.Core.WindowsInstaller.Bind } } + // set the revision number (package/patch code) if it should be automatically generated + if (!foundPackageCode) + { + this.Section.AddSymbol(new SummaryInformationSymbol(null) + { + PropertyId = SummaryInformationType.PackageCode, + Value = Common.GenerateGuid(), + }); + } + // add a summary information row for the create time/date property if its not already set - if (!foundCreateDataTime) + if (!foundCreateDateTime) { this.Section.AddSymbol(new SummaryInformationSymbol(null) { diff --git a/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs b/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs index a0146fda..80ee75a5 100644 --- a/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs +++ b/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs @@ -160,7 +160,7 @@ namespace WixToolset.Core.WindowsInstaller this.RootElement = new XElement(Names.PatchCreationElement); break; case OutputType.Product: - this.RootElement = new XElement(Names.ProductElement); + this.RootElement = new XElement(Names.PackageElement); break; default: throw new InvalidOperationException("Unknown output type."); @@ -669,6 +669,7 @@ namespace WixToolset.Core.WindowsInstaller } else { + this.FinalizeSummaryInformationStream(tables); this.FinalizeCheckBoxTable(tables); this.FinalizeComponentTable(tables); this.FinalizeDialogTable(tables); @@ -2548,7 +2549,7 @@ namespace WixToolset.Core.WindowsInstaller switch (table.Name) { case "_SummaryInformation": - this.Decompile_SummaryInformationTable(table); + // handled in FinalizeDecompile break; case "AdminExecuteSequence": case "AdminUISequence": @@ -2976,11 +2977,13 @@ namespace WixToolset.Core.WindowsInstaller /// Decompile the _SummaryInformation table. /// /// The table to decompile. - private void Decompile_SummaryInformationTable(Table table) + private void FinalizeSummaryInformationStream(TableIndexedCollection tables) { + var table = tables["_SummaryInformation"]; + if (OutputType.Module == this.OutputType || OutputType.Product == this.OutputType) { - var xPackage = new XElement(Names.PackageElement); + var xSummaryInformation = new XElement(Names.SummaryInformationElement); foreach (var row in table.Rows) { @@ -2993,56 +2996,63 @@ namespace WixToolset.Core.WindowsInstaller case 1: if ("1252" != value) { - xPackage.SetAttributeValue("SummaryCodepage", value); + xSummaryInformation.SetAttributeValue("Codepage", value); } break; case 3: - xPackage.SetAttributeValue("Description", value); + { + var productName = this.RootElement.Attribute("Name")?.Value; + if (value != productName) + { + xSummaryInformation.SetAttributeValue("Description", value); + } break; + } case 4: - xPackage.SetAttributeValue("Manufacturer", value); - break; - case 5: - if ("Installer" != value) + { + var productManufacturer = this.RootElement.Attribute("Manufacturer")?.Value; + if (value != productManufacturer) { - xPackage.SetAttributeValue("Keywords", value); + xSummaryInformation.SetAttributeValue("Manufacturer", value); } break; - case 6: - if (!value.StartsWith("This installer database contains the logic and data required to install ")) + } + case 5: + if ("Installer" != value) { - xPackage.SetAttributeValue("Comments", value); + xSummaryInformation.SetAttributeValue("Keywords", value); } break; case 7: var template = value.Split(';'); if (0 < template.Length && 0 < template[template.Length - 1].Length) { - xPackage.SetAttributeValue("Languages", template[template.Length - 1]); - } - - var platform = GetPlatformFromTemplateSummaryInformation(template).ToString().ToLowerInvariant(); - if (!String.IsNullOrEmpty(platform)) - { - xPackage.SetAttributeValue("Platform", platform); + this.RootElement.SetAttributeValue("Language", template[template.Length - 1]); } break; case 9: if (OutputType.Module == this.OutputType) { this.ModularizationGuid = value; - xPackage.SetAttributeValue("Id", value); } break; case 14: - xPackage.SetAttributeValue("InstallerVersion", row.FieldAsInteger(1)); + var installerVersion = row.FieldAsInteger(1); + // Default InstallerVersion. + if (installerVersion != 500) + { + this.RootElement.SetAttributeValue("InstallerVersion", installerVersion); + } break; case 15: var wordCount = row.FieldAsInteger(1); if (0x1 == (wordCount & 0x1)) { this.ShortNames = true; - xPackage.SetAttributeValue("ShortNames", "yes"); + if (OutputType.Product == this.OutputType) + { + this.RootElement.SetAttributeValue("ShortNames", "yes"); + } } if (0x2 == (wordCount & 0x2)) @@ -3051,38 +3061,35 @@ namespace WixToolset.Core.WindowsInstaller if (OutputType.Product == this.OutputType) { - xPackage.SetAttributeValue("Compressed", "yes"); + this.RootElement.SetAttributeValue("Compressed", "yes"); } } - if (0x4 == (wordCount & 0x4)) + if (OutputType.Product == this.OutputType) { - xPackage.SetAttributeValue("AdminImage", "yes"); - } - - if (0x8 == (wordCount & 0x8)) - { - xPackage.SetAttributeValue("InstallPrivileges", "limited"); + if (0x8 == (wordCount & 0x8)) + { + this.RootElement.SetAttributeValue("Scope", "perUser"); + } + else + { + var xAllUsers = this.RootElement.Elements(Names.PropertyElement).SingleOrDefault(p => p.Attribute("Id")?.Value == "ALLUSERS"); + if (xAllUsers?.Attribute("Value")?.Value == "1") + { + xAllUsers?.Remove(); + } + } } - break; - case 19: - var security = row.FieldAsInteger(1); - switch (security) - { - case 0: - xPackage.SetAttributeValue("ReadOnly", "no"); - break; - case 4: - xPackage.SetAttributeValue("ReadOnly", "yes"); - break; - } break; } } } - this.RootElement.Add(xPackage); + if (xSummaryInformation.HasAttributes) + { + this.RootElement.Add(xSummaryInformation); + } } else { @@ -6204,7 +6211,7 @@ namespace WixToolset.Core.WindowsInstaller this.RootElement.SetAttributeValue("Manufacturer", value); continue; case "ProductCode": - this.RootElement.SetAttributeValue("Id", value.ToUpper(CultureInfo.InvariantCulture)); + this.RootElement.SetAttributeValue("ProductCode", value.ToUpper(CultureInfo.InvariantCulture)); continue; case "ProductLanguage": this.RootElement.SetAttributeValue("Language", value); diff --git a/src/WixToolset.Core.WindowsInstaller/Decompile/Names.cs b/src/WixToolset.Core.WindowsInstaller/Decompile/Names.cs index 63ab5cd3..82258c57 100644 --- a/src/WixToolset.Core.WindowsInstaller/Decompile/Names.cs +++ b/src/WixToolset.Core.WindowsInstaller/Decompile/Names.cs @@ -8,10 +8,12 @@ namespace WixToolset.Core.WindowsInstaller.Decompile public static readonly XName WixElement = WxsNamespace + "Wix"; - public static readonly XName ProductElement = WxsNamespace + "Product"; + public static readonly XName PackageElement = WxsNamespace + "Package"; public static readonly XName ModuleElement = WxsNamespace + "Module"; public static readonly XName PatchCreationElement = WxsNamespace + "PatchCreation"; + public static readonly XName SummaryInformationElement = WxsNamespace + "SummaryInformation"; + public static readonly XName CustomElement = WxsNamespace + "Custom"; public static readonly XName AdminExecuteSequenceElement = WxsNamespace + "AdminExecuteSequence"; @@ -30,9 +32,8 @@ namespace WixToolset.Core.WindowsInstaller.Decompile public static readonly XName FileElement = WxsNamespace + "File"; public static readonly XName EnsureTableElement = WxsNamespace + "EnsureTable"; - public static readonly XName PackageElement = WxsNamespace + "Package"; public static readonly XName PatchInformationElement = WxsNamespace + "PatchInformation"; - + public static readonly XName ProgressTextElement = WxsNamespace + "ProgressText"; public static readonly XName UIElement = WxsNamespace + "UI"; diff --git a/src/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/WixToolset.Core/CommandLine/DecompileCommand.cs index fc77a7b4..bce7a5a4 100644 --- a/src/WixToolset.Core/CommandLine/DecompileCommand.cs +++ b/src/WixToolset.Core/CommandLine/DecompileCommand.cs @@ -53,6 +53,7 @@ namespace WixToolset.Core.CommandLine if (!this.Messaging.EncounteredError) { + Directory.CreateDirectory(Path.GetDirectoryName(context.OutputPath)); result.Document.Save(context.OutputPath, SaveOptions.OmitDuplicateNamespaces); } } diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index d9c60ef6..a575bb95 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs @@ -227,8 +227,8 @@ namespace WixToolset.Core case "PatchCreation": this.ParsePatchCreationElement(child); break; - case "Product": - this.ParseProductElement(child); + case "Package": + this.ParsePackageElement(child); break; case "Patch": this.ParsePatchElement(child); diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs index fbad873e..a3bc09b6 100644 --- a/src/WixToolset.Core/Compiler_2.cs +++ b/src/WixToolset.Core/Compiler_2.cs @@ -23,15 +23,24 @@ namespace WixToolset.Core /// Parses a product element. /// /// Element to parse. - private void ParseProductElement(XElement node) + private void ParsePackageElement(XElement node) { var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); + var sourceBits = 0; var codepage = 65001; var productCode = "*"; + var isPerMachine = true; + string installScope = null; string upgradeCode = null; string manufacturer = null; string version = null; string symbols = null; + var isCodepageSet = false; + var isPackageNameSet = false; + var isKeywordsSet = false; + var isPackageAuthorSet = false; + + this.GetDefaultPlatformAndInstallerVersion(out var platform, out var msiVersion); this.activeName = null; this.activeLanguage = null; @@ -42,12 +51,18 @@ namespace WixToolset.Core { switch (attrib.Name.LocalName) { - case "Id": - productCode = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, true); - break; case "Codepage": codepage = this.Core.GetAttributeCodePageValue(sourceLineNumbers, attrib); break; + case "Compressed": + if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) + { + sourceBits |= 2; + } + break; + case "InstallerVersion": + msiVersion = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); + break; case "Language": this.activeLanguage = this.Core.GetAttributeLocalizableIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue); break; @@ -65,6 +80,31 @@ namespace WixToolset.Core this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, this.activeName)); } break; + case "ProductCode": + productCode = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, true); + break; + case "Scope": + installScope = this.Core.GetAttributeValue(sourceLineNumbers, attrib); + switch (installScope) + { + case "perMachine": + // handled below after we create the section. + break; + case "perUser": + isPerMachine = false; + sourceBits |= 8; + break; + default: + this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installScope, "perMachine", "perUser")); + break; + } + break; + case "ShortNames": + if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) + { + sourceBits |= 1; + } + break; case "UpgradeCode": upgradeCode = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, false); break; @@ -140,6 +180,19 @@ namespace WixToolset.Core this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Public, "UpgradeCode"), upgradeCode, false, false, false, true); } + if (isPerMachine) + { + this.AddProperty(sourceLineNumbers, new Identifier(AccessModifier.Public, "ALLUSERS"), "1", false, false, false, false); + } + + this.ValidateAndAddCommonSummaryInformationSymbols(sourceLineNumbers, msiVersion, platform); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.WordCount, + Value = sourceBits.ToString(CultureInfo.InvariantCulture) + }); + var contextValues = new Dictionary { ["ProductLanguage"] = this.activeLanguage, @@ -240,9 +293,6 @@ namespace WixToolset.Core case "MediaTemplate": this.ParseMediaTemplateElement(child, null); break; - case "Package": - this.ParsePackageElement(child, manufacturer, null); - break; case "PackageCertificates": case "PatchCertificates": this.ParseCertificatesElement(child); @@ -263,6 +313,9 @@ namespace WixToolset.Core string parentName = null; this.ParseSFPCatalogElement(child, ref parentName); break; + case "SummaryInformation": + this.ParseSummaryInformationElement(child, ref isCodepageSet, ref isPackageNameSet, ref isKeywordsSet, ref isPackageAuthorSet); + break; case "SymbolPath": if (null != symbols) { @@ -298,6 +351,42 @@ namespace WixToolset.Core if (!this.Core.EncounteredError) { + if (!isCodepageSet) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Codepage, + Value = "1252" + }); + } + + if (!isPackageNameSet) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Subject, + Value = this.activeName + }); + } + + if (!isPackageAuthorSet) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Author, + Value = manufacturer + }); + } + + if (!isKeywordsSet) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Keywords, + Value = "Installer" + }); + } + if (null != symbols) { this.Core.AddSymbol(new WixDeltaPatchSymbolPathsSymbol(sourceLineNumbers) @@ -315,6 +404,74 @@ namespace WixToolset.Core } } + private void GetDefaultPlatformAndInstallerVersion(out string platform, out int msiVersion) + { + // Let's default to a modern version of MSI. Users can override, + // of course, subject to platform-specific limitations. + msiVersion = 500; + + switch (this.CurrentPlatform) + { + case Platform.X86: + platform = "Intel"; + break; + case Platform.X64: + platform = "x64"; + break; + case Platform.ARM64: + platform = "Arm64"; + break; + default: + throw new ArgumentException("Unknown platform enumeration '{0}' encountered.", this.CurrentPlatform.ToString()); + } + } + + private void ValidateAndAddCommonSummaryInformationSymbols(SourceLineNumber sourceLineNumbers, int msiVersion, string platform) + { + if (String.Equals(platform, "X64", StringComparison.OrdinalIgnoreCase) && 200 > msiVersion) + { + msiVersion = 200; + this.Core.Write(WarningMessages.RequiresMsi200for64bitPackage(sourceLineNumbers)); + } + + if (String.Equals(platform, "Arm64", StringComparison.OrdinalIgnoreCase) && 500 > msiVersion) + { + msiVersion = 500; + this.Core.Write(WarningMessages.RequiresMsi500forArmPackage(sourceLineNumbers)); + } + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Comments, + Value = String.Format(CultureInfo.InvariantCulture, "This installer database contains the logic and data required to install {0}.", this.activeName) + }); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Title, + Value = "Installation Database" + }); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.PlatformAndLanguage, + Value = String.Format(CultureInfo.InvariantCulture, "{0};{1}", platform, this.activeLanguage) + }); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.WindowsInstallerVersion, + Value = msiVersion.ToString(CultureInfo.InvariantCulture) + }); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Security, + Value = "2" + }); + + } + /// /// Parses an odbc driver or translator element. /// @@ -615,40 +772,13 @@ namespace WixToolset.Core /// Element to parse. /// Default package author. /// The module guid - this is necessary until Module/@Guid is removed. - private void ParsePackageElement(XElement node, string productAuthor, string moduleId) + private void ParseSummaryInformationElement(XElement node, ref bool isCodepageSet, ref bool isPackageNameSet, ref bool isKeywordsSet, ref bool isPackageAuthorSet) { var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); - var codepage = "1252"; - var comments = String.Format(CultureInfo.InvariantCulture, "This installer database contains the logic and data required to install {0}.", this.activeName); - var keywords = "Installer"; - var msiVersion = 100; // lowest released version, really should be specified - var packageAuthor = productAuthor; - string packageCode = null; - var packageLanguages = this.activeLanguage; - var packageName = this.activeName; - string platform = null; - string platformValue = null; - var security = YesNoDefaultType.Default; - var sourceBits = (this.compilingModule ? 2 : 0); - var installPrivilegeSeen = false; - var installScopeSeen = false; - - switch (this.CurrentPlatform) - { - case Platform.X86: - platform = "Intel"; - break; - case Platform.X64: - platform = "x64"; - msiVersion = 200; - break; - case Platform.ARM64: - platform = "Arm64"; - msiVersion = 500; - break; - default: - throw new ArgumentException("Unknown platform enumeration '{0}' encountered.", this.CurrentPlatform.ToString()); - } + string codepage = null; + string packageName = null; + string keywords = null; + string packageAuthor = null; foreach (var attrib in node.Attributes()) { @@ -656,83 +786,15 @@ namespace WixToolset.Core { switch (attrib.Name.LocalName) { - case "Id": - packageCode = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, this.compilingProduct); - break; - case "AdminImage": - if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) - { - sourceBits |= 4; - } - break; - case "Comments": - comments = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - break; - case "Compressed": - // merge modules must always be compressed, so this attribute is invalid - if (this.compilingModule) - { - this.Core.Write(WarningMessages.DeprecatedPackageCompressedAttribute(sourceLineNumbers)); - // this.core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Compressed", "Module")); - } - else if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) - { - sourceBits |= 2; - } + case "Codepage": + codepage = this.Core.GetAttributeLocalizableCodePageValue(sourceLineNumbers, attrib, true); break; case "Description": packageName = this.Core.GetAttributeValue(sourceLineNumbers, attrib); break; - case "InstallPrivileges": - var installPrivileges = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - switch (installPrivileges) - { - case "elevated": - // this is the default setting - installPrivilegeSeen = true; - break; - case "limited": - sourceBits |= 8; - installPrivilegeSeen = true; - break; - case "": - break; - default: - this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installPrivileges, "elevated", "limited")); - break; - } - break; - case "InstallScope": - var installScope = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - switch (installScope) - { - case "perMachine": - this.Core.AddSymbol(new PropertySymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, "ALLUSERS")) - { - Value = "1" - }); - installScopeSeen = true; - break; - case "perUser": - sourceBits |= 8; - installScopeSeen = true; - break; - case "": - break; - default: - this.Core.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, installScope, "perMachine", "perUser")); - break; - } - break; - case "InstallerVersion": - msiVersion = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); - break; case "Keywords": keywords = this.Core.GetAttributeValue(sourceLineNumbers, attrib); break; - case "Languages": - packageLanguages = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - break; case "Manufacturer": packageAuthor = this.Core.GetAttributeValue(sourceLineNumbers, attrib); if ("PUT-COMPANY-NAME-HERE" == packageAuthor) @@ -740,56 +802,6 @@ namespace WixToolset.Core this.Core.Write(WarningMessages.PlaceholderValue(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, packageAuthor)); } break; - case "Platform": - if (null != platformValue) - { - this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platforms")); - } - - platformValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - switch (platformValue) - { - case "intel": - this.Core.Write(WarningMessages.DeprecatedAttributeValue(sourceLineNumbers, platformValue, node.Name.LocalName, attrib.Name.LocalName, "x86")); - goto case "x86"; - case "x86": - platform = "Intel"; - break; - case "x64": - platform = "x64"; - break; - case "arm64": - platform = "Arm64"; - break; - case "": - break; - default: - this.Core.Write(ErrorMessages.InvalidPlatformValue(sourceLineNumbers, platformValue)); - break; - } - break; - case "Platforms": - if (null != platformValue) - { - this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform")); - } - - this.Core.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, "Platform")); - platformValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib); - platform = platformValue; - break; - case "ReadOnly": - security = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib); - break; - case "ShortNames": - if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) - { - sourceBits |= 1; - } - break; - case "SummaryCodepage": - codepage = this.Core.GetAttributeLocalizableCodePageValue(sourceLineNumbers, attrib, true); - break; default: this.Core.UnexpectedAttribute(node, attrib); break; @@ -801,127 +813,50 @@ namespace WixToolset.Core } } - if (installPrivilegeSeen && installScopeSeen) - { - this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "InstallPrivileges", "InstallScope")); - } - - if (String.Equals(platform, "X64", StringComparison.OrdinalIgnoreCase) && 200 > msiVersion) - { - msiVersion = 200; - this.Core.Write(WarningMessages.RequiresMsi200for64bitPackage(sourceLineNumbers)); - } - - if (String.Equals(platform, "Arm64", StringComparison.OrdinalIgnoreCase) && 500 > msiVersion) - { - msiVersion = 500; - this.Core.Write(WarningMessages.RequiresMsi500forArmPackage(sourceLineNumbers)); - } - - if (null == packageAuthor) - { - this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Manufacturer")); - } + this.Core.ParseForExtensionElements(node); - if (this.compilingModule) + if (!this.Core.EncounteredError) { - if (null == packageCode) + if (null != codepage) { - this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); + isCodepageSet = true; + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Codepage, + Value = codepage + }); } - // merge modules use the modularization guid as the package code - if (null != moduleId) + if (null != packageName) { - packageCode = moduleId; + isPackageNameSet = true; + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Subject, + Value = packageName + }); } - // merge modules are always compressed - sourceBits = 2; - } - else // product - { - if (null == packageCode) + if (null != packageAuthor) { - packageCode = "*"; + isPackageAuthorSet = true; + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Author, + Value = packageAuthor + }); } - if ("*" != packageCode) + if (null != keywords) { - this.Core.Write(WarningMessages.PackageCodeSet(sourceLineNumbers)); + isKeywordsSet = true; + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Keywords, + Value = keywords + }); } } - - this.Core.ParseForExtensionElements(node); - - if (!this.Core.EncounteredError) - { - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Codepage, - Value = codepage - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Title, - Value = "Installation Database" - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Subject, - Value = packageName - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Author, - Value = packageAuthor - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Keywords, - Value = keywords - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Comments, - Value = comments - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.PlatformAndLanguage, - Value = String.Format(CultureInfo.InvariantCulture, "{0};{1}", platform, packageLanguages) - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.PackageCode, - Value = packageCode - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.WindowsInstallerVersion, - Value = msiVersion.ToString(CultureInfo.InvariantCulture) - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.WordCount, - Value = sourceBits.ToString(CultureInfo.InvariantCulture) - }); - - this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) - { - PropertyId = SummaryInformationType.Security, - Value = YesNoDefaultType.No == security ? "0" : YesNoDefaultType.Yes == security ? "4" : "2" - }); - } } /// diff --git a/src/WixToolset.Core/Compiler_Module.cs b/src/WixToolset.Core/Compiler_Module.cs index 2ecd9113..2f926d82 100644 --- a/src/WixToolset.Core/Compiler_Module.cs +++ b/src/WixToolset.Core/Compiler_Module.cs @@ -24,6 +24,12 @@ namespace WixToolset.Core var codepage = 0; string moduleId = null; string version = null; + var setCodepage = false; + var setPackageName = false; + var setKeywords = false; + var ignoredForMergeModules = false; + + this.GetDefaultPlatformAndInstallerVersion(out var platform, out var msiVersion); this.activeName = null; this.activeLanguage = null; @@ -50,7 +56,9 @@ namespace WixToolset.Core break; case "Guid": moduleId = this.Core.GetAttributeGuidValue(sourceLineNumbers, attrib, false); - this.Core.Write(WarningMessages.DeprecatedModuleGuidAttribute(sourceLineNumbers)); + break; + case "InstallerVersion": + msiVersion = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); break; case "Language": this.activeLanguage = this.Core.GetAttributeLocalizableIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue); @@ -74,6 +82,11 @@ namespace WixToolset.Core this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); } + if (null == moduleId) + { + this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Guid")); + } + if (null == this.activeLanguage) { this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language")); @@ -174,9 +187,6 @@ namespace WixToolset.Core case "IgnoreTable": this.ParseIgnoreTableElement(child); break; - case "Package": - this.ParsePackageElement(child, null, moduleId); - break; case "Property": this.ParsePropertyElement(child); break; @@ -196,6 +206,9 @@ namespace WixToolset.Core case "Substitution": this.ParseSubstitutionElement(child); break; + case "SummaryInformation": + this.ParseSummaryInformationElement(child, ref setCodepage, ref setPackageName, ref setKeywords, ref ignoredForMergeModules); + break; case "UI": this.ParseUIElement(child); break; @@ -219,6 +232,33 @@ namespace WixToolset.Core if (!this.Core.EncounteredError) { + if (!setCodepage) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Codepage, + Value = "1252" + }); + } + + if (!setPackageName) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Subject, + Value = this.activeName + }); + } + + if (!setKeywords) + { + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.Keywords, + Value = "Installer" + }); + } + var symbol = this.Core.AddSymbol(new ModuleSignatureSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, this.activeName, this.activeLanguage)) { ModuleID = this.activeName, @@ -226,6 +266,14 @@ namespace WixToolset.Core }); symbol.Set((int)ModuleSignatureSymbolFields.Language, this.activeLanguage); + + this.Core.AddSymbol(new SummaryInformationSymbol(sourceLineNumbers) + { + PropertyId = SummaryInformationType.PackageCode, + Value = moduleId + }); + + this.ValidateAndAddCommonSummaryInformationSymbols(sourceLineNumbers, msiVersion, platform); } } finally diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs index b038812d..e18990d3 100644 --- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs @@ -34,8 +34,8 @@ namespace WixToolsetTest.CoreIntegration Assert.NotNull(result.Document); Assert.Equal(includeFile, includedFile.Path); Assert.Equal(sourcePath, includedFile.SourceLineNumbers.FileName); - Assert.Equal(2, includedFile.SourceLineNumbers.LineNumber.Value); - Assert.Equal($"{sourcePath}*2", includedFile.SourceLineNumbers.QualifiedFileName); + Assert.Equal(1, includedFile.SourceLineNumbers.LineNumber.Value); + Assert.Equal($"{sourcePath}*1", includedFile.SourceLineNumbers.QualifiedFileName); Assert.Null(includedFile.SourceLineNumbers.Parent); } diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DecompiledNestedDirSearchUnderRegSearch.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DecompiledNestedDirSearchUnderRegSearch.wxs index 26649485..8d1e5de2 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DecompiledNestedDirSearchUnderRegSearch.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/AppSearch/DecompiledNestedDirSearchUnderRegSearch.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -16,7 +14,6 @@ - @@ -43,5 +40,5 @@ - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Assembly/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Assembly/Package.wxs index dbce4c71..50282522 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Assembly/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Assembly/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/BadIf/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/BadIf/Package.wxs index c1cf55c2..1d7ebb94 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/BadIf/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/BadIf/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -13,7 +12,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Class/DecompiledOldClassTableDef.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Class/DecompiledOldClassTableDef.wxs index 86d41c50..08ced0c2 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Class/DecompiledOldClassTableDef.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Class/DecompiledOldClassTableDef.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -22,6 +20,5 @@ - - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ComplexExampleExtension/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ComplexExampleExtension/Package.wxs index f3dd9a02..23923426 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ComplexExampleExtension/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ComplexExampleExtension/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -13,7 +12,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Components/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Components/Package.wxs index 28d564e2..0607c718 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Components/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Components/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/CustomTable/CustomTable-Expected.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/CustomTable/CustomTable-Expected.wxs index 22036ae5..f87c9387 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/CustomTable/CustomTable-Expected.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/CustomTable/CustomTable-Expected.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -30,6 +28,5 @@ - - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed/Expected.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed/Expected.wxs index fd6f81ca..e2557fe1 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed/Expected.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed/Expected.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -16,6 +14,5 @@ - - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed64/Expected.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed64/Expected.wxs index b7f5ad07..38ce54b8 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed64/Expected.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/DecompileSingleFileCompressed64/Expected.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -16,6 +14,5 @@ - - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.wxs index 59eeb027..75707f3d 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -11,7 +10,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs index f20f5f73..b3fd3672 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ExampleExtension/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -12,7 +11,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ForEach/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ForEach/Package.wxs index 3bd14fbb..91ac6537 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ForEach/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ForEach/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -10,7 +9,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs index 59c8b2b3..6269fe9d 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs @@ -1,15 +1,14 @@ - - + - - + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/InstanceTransform/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/InstanceTransform/Package.wxs index e55b3ec6..befab53e 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/InstanceTransform/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/InstanceTransform/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -14,7 +13,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs index 025aaaa3..090c7724 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ManualUpgrade/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -15,7 +14,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/MultiFileCompressed/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/MultiFileCompressed/Package.wxs index 44b8c2b5..bc7450e3 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/MultiFileCompressed/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/MultiFileCompressed/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -17,7 +16,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/OverridableActions/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/OverridableActions/Package.wxs index cc873a62..6d9e854d 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/OverridableActions/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/OverridableActions/Package.wxs @@ -1,8 +1,6 @@ - - - - - + + + @@ -18,7 +16,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Package.wxs index 4baeb85b..c9dcdd72 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Package.wxs @@ -1,29 +1,27 @@ - - - + + + - + - - - + + + - - + + - + - - - + + + - - + + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Patch.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Patch.wxs index 7c3cff7e..d39170c0 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Patch.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchFamilyFilter/Patch.wxs @@ -1,23 +1,16 @@ - - + + - + - + - - + + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchSingle/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchSingle/Package.wxs index ee133ba3..72424986 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/PatchSingle/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/PatchSingle/Package.wxs @@ -1,30 +1,28 @@ - - - + + + - - + + - - - + + + - - + + - + - + - + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ProductWithComponentGroupRef/Product.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ProductWithComponentGroupRef/Product.wxs index 5b26091a..c902c339 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ProductWithComponentGroupRef/Product.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ProductWithComponentGroupRef/Product.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/ProgId/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/ProgId/Package.wxs index 388a271e..0d2d5032 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/ProgId/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/ProgId/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SequenceTables/DecompiledSequenceTables.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SequenceTables/DecompiledSequenceTables.wxs index b8adf6e4..08af1950 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SequenceTables/DecompiledSequenceTables.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SequenceTables/DecompiledSequenceTables.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -17,7 +15,6 @@ - @@ -33,5 +30,5 @@ - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/Package.wxs index 879fad35..c8289464 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -10,7 +9,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Shortcut/DecompiledShortcuts.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Shortcut/DecompiledShortcuts.wxs index 3a9e401c..1b602588 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Shortcut/DecompiledShortcuts.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Shortcut/DecompiledShortcuts.wxs @@ -1,7 +1,5 @@ - - - - + + @@ -19,6 +17,5 @@ - - + \ No newline at end of file diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs index b04c5d1a..a858b351 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleMerge/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleModule/Module.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleModule/Module.wxs index 260339ba..737ac8df 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleModule/Module.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SimpleModule/Module.wxs @@ -1,7 +1,6 @@ - - - - + + + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/Package.wxs index 28d564e2..0607c718 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFile/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFileCompressed/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFileCompressed/Package.wxs index c21a669c..852d1aed 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFileCompressed/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/SingleFileCompressed/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -16,7 +15,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Variables/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Variables/Package.wxs index 8d49c30e..7de55810 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Variables/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Variables/Package.wxs @@ -1,6 +1,4 @@ - - - + @@ -13,15 +11,15 @@ - - + + - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Wixipl/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Wixipl/Package.wxs index bf5223c1..d9714e7a 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/Wixipl/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Wixipl/Package.wxs @@ -1,7 +1,6 @@ - - - - + + + @@ -10,7 +9,7 @@ - + diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/WixlibWithBinaries/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/WixlibWithBinaries/Package.wxs index 4c36f3cc..b29a785f 100644 --- a/src/test/WixToolsetTest.CoreIntegration/TestData/WixlibWithBinaries/Package.wxs +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/WixlibWithBinaries/Package.wxs @@ -1,14 +1,13 @@ - - - - + + + - + -- cgit v1.2.3-55-g6feb