From d7956470db6e5111ebfdc4f6ee1b6d4b6c544c4c Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 16 Nov 2022 20:22:57 -0800 Subject: Fix build when Cultures is specified Write the tests for the test data in the WixToolset.Sdk test and fix all the culture related bugs that fallout from that. Fixes 69999 --- src/wix/WixToolset.BuildTasks/WixAssignCulture.cs | 83 ++++++++++--------- src/wix/WixToolset.Sdk/tools/wix.targets | 14 ++-- src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 96 +++++++++++++++++++++- .../MsiPackageWithBindVariables.wixproj | 2 - .../MsiPackageWithBindVariables/Package.en-us.wxl | 11 --- .../MsiPackageWithBindVariables/Package.wxs | 4 +- .../MsiPackage/MsiPackage.wixproj | 32 +------- .../MsiPackage/Package.de-de.wxl | 7 -- .../MsiPackage/Package.en-us.wxl | 10 +-- .../MsiPackage/Package.en.wxl | 4 + .../MultiCulturalMsiPackage/MsiPackage/Package.wxs | 3 +- .../SimpleMsiPackage/MsiPackage/MsiPackage.wixproj | 2 +- .../Package.de-de.wxl | 10 +++ .../Package.en-us.wxl | 11 +++ .../Package.wxs | 16 ++++ .../PackageComponents.wxs | 10 +++ .../SingleCultureWithFallbackMsiPackage.wixproj | 23 ++++++ .../data/test.txt | 1 + 18 files changed, 225 insertions(+), 114 deletions(-) delete mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en.wxl create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.de-de.wxl create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.wxs create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/PackageComponents.wxs create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/SingleCultureWithFallbackMsiPackage.wixproj create mode 100644 src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/data/test.txt (limited to 'src') diff --git a/src/wix/WixToolset.BuildTasks/WixAssignCulture.cs b/src/wix/WixToolset.BuildTasks/WixAssignCulture.cs index a8baa62f..ac257990 100644 --- a/src/wix/WixToolset.BuildTasks/WixAssignCulture.cs +++ b/src/wix/WixToolset.BuildTasks/WixAssignCulture.cs @@ -17,6 +17,7 @@ namespace WixToolset.BuildTasks public class WixAssignCulture : Task { private const string CultureAttributeName = "Culture"; + private const string OutputSuffixMetadataName = "OutputSuffix"; private const string OutputFolderMetadataName = "OutputFolder"; private const string InvariantCultureIdentifier = "neutral"; private const string NullCultureIdentifier = "null"; @@ -35,21 +36,13 @@ namespace WixToolset.BuildTasks /// The list of files to apply culture information to. /// [Required] - public ITaskItem[] Files - { - get; - set; - } + public ITaskItem[] Files { get; set; } /// /// The files that had culture information applied /// [Output] - public ITaskItem[] CultureGroups - { - get; - private set; - } + public ITaskItem[] CultureGroups { get; private set; } /// /// Applies culture information to the files specified by the Files property. @@ -60,70 +53,66 @@ namespace WixToolset.BuildTasks public override bool Execute() { // First, process the culture group list the user specified in the cultures property - List cultureGroups = new List(); + var cultureGroups = new List(); if (!String.IsNullOrEmpty(this.Cultures)) { // Get rid of extra quotes this.Cultures = this.Cultures.Trim('\"'); - foreach (string cultureGroupString in this.Cultures.Split(';')) + // MSBuild cannnot handle "" items for the invariant culture we require the neutral keyword + foreach (var cultureGroupString in this.Cultures.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) { - if (0 == cultureGroupString.Length) - { - // MSBuild v2.0.50727 cannnot handle "" items - // for the invariant culture we require the neutral keyword - continue; - } - CultureGroup cultureGroup = new CultureGroup(cultureGroupString); + var cultureGroup = new CultureGroup(cultureGroupString); cultureGroups.Add(cultureGroup); } } else { // Only process the EmbeddedResource items if cultures was unspecified - foreach (ITaskItem file in this.Files) + foreach (var file in this.Files) { // Ignore non-wxls if (!String.Equals(file.GetMetadata("Extension"), ".wxl", StringComparison.OrdinalIgnoreCase)) { - Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec); + this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec); return false; } - XmlDocument wxlFile = new XmlDocument(); + var wxlFile = new XmlDocument(); try { wxlFile.Load(file.ItemSpec); } catch (FileNotFoundException) { - Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec); + this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec); return false; } catch (Exception e) { - Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message); + this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message); return false; } // Take the culture value and try using it to create a culture. - XmlAttribute cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName]; - string wxlCulture = null == cultureAttr ? String.Empty : cultureAttr.Value; + var cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName]; + var wxlCulture = cultureAttr?.Value ?? String.Empty; + if (0 == wxlCulture.Length) { - // We use a keyword for the invariant culture because MSBuild v2.0.50727 cannnot handle "" items + // We use a keyword for the invariant culture because MSBuild cannnot handle "" items. wxlCulture = InvariantCultureIdentifier; } // We found the culture for the WXL, we now need to determine if it maps to a culture group specified // in the Cultures property or if we need to create a new one. - Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec); + this.Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec); - bool cultureGroupExists = false; - foreach (CultureGroup cultureGroup in cultureGroups) + var cultureGroupExists = false; + foreach (var cultureGroup in cultureGroups) { - foreach (string culture in cultureGroup.Cultures) + foreach (var culture in cultureGroup.Cultures) { if (String.Equals(wxlCulture, culture, StringComparison.OrdinalIgnoreCase)) { @@ -142,29 +131,32 @@ namespace WixToolset.BuildTasks } // If we didn't create any culture groups the culture was unspecificed and no WXLs were included - // Build an unlocalized target in the output folder + // then build an unlocalized target in the output folder if (cultureGroups.Count == 0) { cultureGroups.Add(new CultureGroup()); } - List cultureGroupItems = new List(); + var cultureGroupItems = new List(); if (1 == cultureGroups.Count && 0 == this.Files.Length) { // Maintain old behavior, if only one culturegroup is specified and no WXL, output to the default folder - TaskItem cultureGroupItem = new TaskItem(cultureGroups[0].ToString()); + var cultureGroupItem = new TaskItem(cultureGroups[0].ToString()); + cultureGroupItem.SetMetadata(OutputSuffixMetadataName, cultureGroups[0].OutputSuffix); cultureGroupItem.SetMetadata(OutputFolderMetadataName, CultureGroup.DefaultFolder); cultureGroupItems.Add(cultureGroupItem); } else { - foreach (CultureGroup cultureGroup in cultureGroups) + foreach (var cultureGroup in cultureGroups) { - TaskItem cultureGroupItem = new TaskItem(cultureGroup.ToString()); + var cultureGroupItem = new TaskItem(cultureGroup.ToString()); + cultureGroupItem.SetMetadata(OutputSuffixMetadataName, cultureGroup.OutputSuffix); cultureGroupItem.SetMetadata(OutputFolderMetadataName, cultureGroup.OutputFolder); cultureGroupItems.Add(cultureGroupItem); - Log.LogMessage("Culture: {0}", cultureGroup.ToString()); + + this.Log.LogMessage("Culture: {0}", cultureGroup.ToString()); } } @@ -179,6 +171,11 @@ namespace WixToolset.BuildTasks /// public const string DefaultFolder = ""; + /// + /// Language neutral. + /// + public const string DefaultSuffix = InvariantCultureIdentifier; + /// /// Initialize a null culture group /// @@ -189,7 +186,7 @@ namespace WixToolset.BuildTasks public CultureGroup(string cultureGroupString) { Debug.Assert(!String.IsNullOrEmpty(cultureGroupString)); - foreach (string cultureString in cultureGroupString.Split(',')) + foreach (var cultureString in cultureGroupString.Split(',')) { this.Cultures.Add(cultureString); } @@ -201,17 +198,21 @@ namespace WixToolset.BuildTasks { get { - string result = DefaultFolder; if (this.Cultures.Count > 0 && !this.Cultures[0].Equals(InvariantCultureIdentifier, StringComparison.OrdinalIgnoreCase)) { - result = this.Cultures[0] + "\\"; + return this.Cultures[0] + "\\"; } - return result; + return DefaultFolder; } } + public string OutputSuffix + { + get => (this.Cultures.Count > 0) ? this.Cultures[0] : InvariantCultureIdentifier; + } + public override string ToString() { if (this.Cultures.Count > 0) diff --git a/src/wix/WixToolset.Sdk/tools/wix.targets b/src/wix/WixToolset.Sdk/tools/wix.targets index ff9b2eb1..e18eaf62 100644 --- a/src/wix/WixToolset.Sdk/tools/wix.targets +++ b/src/wix/WixToolset.Sdk/tools/wix.targets @@ -566,7 +566,7 @@ @(_ResolvedWixLibraryPaths); @(_ResolvedWixExtensionPaths); @(_BindInputs)" - Outputs="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension);@(_BindBuiltOutputs)" + Outputs="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension);@(_BindBuiltOutputs)" DependsOnTargets="$(CoreCompileDependsOn)" Condition=" '@(Compile)' != '' "> @@ -604,7 +604,7 @@ BindPaths="@(BindPath)" BindVariables="@(BindVariable)" BindFiles="$(BindFiles)" - BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)" + BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)" CabinetCachePath="$(_WixBuildCabinetCachePath)" CabinetCreationThreadCount="$(CabinetCreationThreadCount)" @@ -719,7 +719,7 @@ - + @@ -748,12 +748,12 @@ Name="UpdateFileWritesWithBindInformation" AfterTargets="CoreCompile"> - + - + @@ -818,7 +818,7 @@ - + @@ -894,7 +894,7 @@ - + diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index 05de1e2a..845df9be 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs @@ -252,15 +252,26 @@ namespace WixToolsetTest.Sdk }); result.AssertSuccess(); + var trackingContents = File.ReadAllLines(Path.Combine(baseFolder, "obj", "Release", "MsiPackageWithBindVariables.wixproj.BindTracking-neutral.txt")); + var lines = trackingContents.Select(l => l.Replace(baseFolder, "")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "BuiltContentOutput\t\\obj\\Release\\cab1.cab", + "BuiltPdbOutput\t\\obj\\Release\\MsiPackageWithBindVariables.wixpdb", + "BuiltTargetOutput\t\\obj\\Release\\MsiPackageWithBindVariables.msi", + "Input\tdata\\test.txt", + "Intermediate\t\\obj\\Release\\cab1.cab" + }, lines); + var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) .Select(s => s.Substring(baseFolder.Length + 1)) .OrderBy(s => s) .ToArray(); WixAssert.CompareLineByLine(new[] { - @"bin\Release\en-US\cab1.cab", - @"bin\Release\en-US\MsiPackageWithBindVariables.msi", - @"bin\Release\en-US\MsiPackageWithBindVariables.wixpdb", + @"bin\Release\cab1.cab", + @"bin\Release\MsiPackageWithBindVariables.msi", + @"bin\Release\MsiPackageWithBindVariables.wixpdb", }, paths); } } @@ -424,6 +435,85 @@ namespace WixToolsetTest.Sdk } } + [Theory] + [InlineData(BuildSystem.DotNetCoreSdk)] + [InlineData(BuildSystem.MSBuild)] + [InlineData(BuildSystem.MSBuild64)] + public void CanBuildSingleCultureWithFallbackMsiPackage(BuildSystem buildSystem) + { + var sourceFolder = TestData.Get(@"TestData", "SingleCultureWithFallbackMsiPackage"); + + using (var fs = new TestDataFolderFileSystem()) + { + fs.Initialize(sourceFolder); + var baseFolder = fs.BaseFolder; + var binFolder = Path.Combine(baseFolder, @"bin\"); + var projectPath = Path.Combine(baseFolder, "SingleCultureWithFallbackMsiPackage.wixproj"); + + var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] + { + MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) + }); + result.AssertSuccess(); + + var trackingContents = File.ReadAllLines(Path.Combine(baseFolder, "obj", "Release", "SingleCultureWithFallbackMsiPackage.wixproj.BindTracking-de-DE.txt")); + var lines = trackingContents.Select(l => l.Replace(baseFolder, "")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "BuiltContentOutput\t\\obj\\Release\\de-DE\\cab1.cab", + "BuiltPdbOutput\t\\obj\\Release\\de-DE\\SingleCultureWithFallbackMsiPackage.wixpdb", + "BuiltTargetOutput\t\\obj\\Release\\de-DE\\SingleCultureWithFallbackMsiPackage.msi", + "Input\t\\data\\test.txt", + "Intermediate\t\\obj\\Release\\de-DE\\cab1.cab" + }, lines); + } + } + + [Theory] + [InlineData(BuildSystem.DotNetCoreSdk)] + [InlineData(BuildSystem.MSBuild)] + [InlineData(BuildSystem.MSBuild64)] + public void CanBuildMultiCulturalMsiPackage(BuildSystem buildSystem) + { + var sourceFolder = TestData.Get(@"TestData", "MultiCulturalMsiPackage"); + + using (var fs = new TestDataFolderFileSystem()) + { + fs.Initialize(sourceFolder); + var baseFolder = fs.BaseFolder; + var slnPath = Path.Combine(baseFolder, "MultiCulturalMsiPackage.sln"); + var projectFolder = Path.Combine(baseFolder, "MsiPackage"); + + var result = MsbuildUtilities.BuildProject(buildSystem, slnPath, new[] + { + MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) + }); + result.AssertSuccess(); + + var trackingEnuContents = File.ReadAllLines(Path.Combine(projectFolder, "obj", "x64", "Release", "MsiPackage.wixproj.BindTracking-en-US.txt")); + var enuLines = trackingEnuContents.Select(l => l.Replace(projectFolder, "")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "BuiltContentOutput\t\\obj\\x64\\Release\\en-US\\cab1.cab", + "BuiltPdbOutput\t\\obj\\x64\\Release\\en-US\\MsiPackage.wixpdb", + "BuiltTargetOutput\t\\obj\\x64\\Release\\en-US\\MsiPackage.msi", + "Input\t\\data\\test.txt", + "Intermediate\t\\obj\\x64\\Release\\en-US\\cab1.cab" + }, enuLines); + + var trackingDeuContents = File.ReadAllLines(Path.Combine(projectFolder, "obj", "x64", "Release", "MsiPackage.wixproj.BindTracking-de-DE.txt")); + var deuLines = trackingDeuContents.Select(l => l.Replace(projectFolder, "")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + "BuiltContentOutput\t\\obj\\x64\\Release\\de-DE\\cab1.cab", + "BuiltPdbOutput\t\\obj\\x64\\Release\\de-DE\\MsiPackage.wixpdb", + "BuiltTargetOutput\t\\obj\\x64\\Release\\de-DE\\MsiPackage.msi", + "Input\t\\data\\test.txt", + "Intermediate\t\\obj\\x64\\Release\\de-DE\\cab1.cab" + }, deuLines); + } + } + [Theory] [InlineData(BuildSystem.DotNetCoreSdk)] [InlineData(BuildSystem.MSBuild)] diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/MsiPackageWithBindVariables.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/MsiPackageWithBindVariables.wixproj index e6eb8f88..e6978f49 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/MsiPackageWithBindVariables.wixproj +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/MsiPackageWithBindVariables.wixproj @@ -7,8 +7,6 @@ - - diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl deleted file mode 100644 index 2bcb83ee..00000000 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.wxs index c11ef3ba..4a0ac7c3 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.wxs +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.wxs @@ -1,8 +1,8 @@ - + - + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj index 555addbe..49ef7fbf 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/MsiPackage.wixproj @@ -1,37 +1,10 @@ - - + + - Debug - x86 - 0.9 - 7fb77005-c6e0-454f-8c2d-0a4a79c918ba - MsiPackage - Package - MsiPackage - MsiPackage en-US,en;de-DE - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - Debug - - - $(Platform) - bin\$(Platform)\$(Configuration)\ - - @@ -39,6 +12,7 @@ + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl index 03c5563a..1fb20ef5 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.de-de.wxl @@ -1,11 +1,4 @@ - - - - - diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl index 2bcb83ee..5e2378f8 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en-us.wxl @@ -1,11 +1,3 @@ - - - - - - - + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en.wxl new file mode 100644 index 00000000..466bc0c6 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.en.wxl @@ -0,0 +1,4 @@ + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs index df24aa33..9524f3a4 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/MultiCulturalMsiPackage/MsiPackage/Package.wxs @@ -1,7 +1,6 @@ - + - diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj index acbcd85d..f3155cf6 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SimpleMsiPackage/MsiPackage/MsiPackage.wixproj @@ -1,5 +1,5 @@ - + Debug diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.de-de.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.de-de.wxl new file mode 100644 index 00000000..768ccdf0 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.de-de.wxl @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl new file mode 100644 index 00000000..945a773f --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.wxs new file mode 100644 index 00000000..df24aa33 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.wxs @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/PackageComponents.wxs b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/PackageComponents.wxs new file mode 100644 index 00000000..e26c4509 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/PackageComponents.wxs @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/SingleCultureWithFallbackMsiPackage.wixproj b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/SingleCultureWithFallbackMsiPackage.wixproj new file mode 100644 index 00000000..86b4d786 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/SingleCultureWithFallbackMsiPackage.wixproj @@ -0,0 +1,23 @@ + + + + + de-DE,en-us + + + + + + + + + + + + + + + + + + diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/data/test.txt b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/data/test.txt new file mode 100644 index 00000000..cd0db0e1 --- /dev/null +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/data/test.txt @@ -0,0 +1 @@ +This is test.txt. \ No newline at end of file -- cgit v1.2.3-55-g6feb