diff options
Diffstat (limited to 'src')
17 files changed, 216 insertions, 105 deletions
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 | |||
| 17 | public class WixAssignCulture : Task | 17 | public class WixAssignCulture : Task |
| 18 | { | 18 | { |
| 19 | private const string CultureAttributeName = "Culture"; | 19 | private const string CultureAttributeName = "Culture"; |
| 20 | private const string OutputSuffixMetadataName = "OutputSuffix"; | ||
| 20 | private const string OutputFolderMetadataName = "OutputFolder"; | 21 | private const string OutputFolderMetadataName = "OutputFolder"; |
| 21 | private const string InvariantCultureIdentifier = "neutral"; | 22 | private const string InvariantCultureIdentifier = "neutral"; |
| 22 | private const string NullCultureIdentifier = "null"; | 23 | private const string NullCultureIdentifier = "null"; |
| @@ -35,21 +36,13 @@ namespace WixToolset.BuildTasks | |||
| 35 | /// The list of files to apply culture information to. | 36 | /// The list of files to apply culture information to. |
| 36 | /// </summary> | 37 | /// </summary> |
| 37 | [Required] | 38 | [Required] |
| 38 | public ITaskItem[] Files | 39 | public ITaskItem[] Files { get; set; } |
| 39 | { | ||
| 40 | get; | ||
| 41 | set; | ||
| 42 | } | ||
| 43 | 40 | ||
| 44 | /// <summary> | 41 | /// <summary> |
| 45 | /// The files that had culture information applied | 42 | /// The files that had culture information applied |
| 46 | /// </summary> | 43 | /// </summary> |
| 47 | [Output] | 44 | [Output] |
| 48 | public ITaskItem[] CultureGroups | 45 | public ITaskItem[] CultureGroups { get; private set; } |
| 49 | { | ||
| 50 | get; | ||
| 51 | private set; | ||
| 52 | } | ||
| 53 | 46 | ||
| 54 | /// <summary> | 47 | /// <summary> |
| 55 | /// Applies culture information to the files specified by the Files property. | 48 | /// Applies culture information to the files specified by the Files property. |
| @@ -60,70 +53,66 @@ namespace WixToolset.BuildTasks | |||
| 60 | public override bool Execute() | 53 | public override bool Execute() |
| 61 | { | 54 | { |
| 62 | // First, process the culture group list the user specified in the cultures property | 55 | // First, process the culture group list the user specified in the cultures property |
| 63 | List<CultureGroup> cultureGroups = new List<CultureGroup>(); | 56 | var cultureGroups = new List<CultureGroup>(); |
| 64 | 57 | ||
| 65 | if (!String.IsNullOrEmpty(this.Cultures)) | 58 | if (!String.IsNullOrEmpty(this.Cultures)) |
| 66 | { | 59 | { |
| 67 | // Get rid of extra quotes | 60 | // Get rid of extra quotes |
| 68 | this.Cultures = this.Cultures.Trim('\"'); | 61 | this.Cultures = this.Cultures.Trim('\"'); |
| 69 | 62 | ||
| 70 | foreach (string cultureGroupString in this.Cultures.Split(';')) | 63 | // MSBuild cannnot handle "" items for the invariant culture we require the neutral keyword |
| 64 | foreach (var cultureGroupString in this.Cultures.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) | ||
| 71 | { | 65 | { |
| 72 | if (0 == cultureGroupString.Length) | 66 | var cultureGroup = new CultureGroup(cultureGroupString); |
| 73 | { | ||
| 74 | // MSBuild v2.0.50727 cannnot handle "" items | ||
| 75 | // for the invariant culture we require the neutral keyword | ||
| 76 | continue; | ||
| 77 | } | ||
| 78 | CultureGroup cultureGroup = new CultureGroup(cultureGroupString); | ||
| 79 | cultureGroups.Add(cultureGroup); | 67 | cultureGroups.Add(cultureGroup); |
| 80 | } | 68 | } |
| 81 | } | 69 | } |
| 82 | else | 70 | else |
| 83 | { | 71 | { |
| 84 | // Only process the EmbeddedResource items if cultures was unspecified | 72 | // Only process the EmbeddedResource items if cultures was unspecified |
| 85 | foreach (ITaskItem file in this.Files) | 73 | foreach (var file in this.Files) |
| 86 | { | 74 | { |
| 87 | // Ignore non-wxls | 75 | // Ignore non-wxls |
| 88 | if (!String.Equals(file.GetMetadata("Extension"), ".wxl", StringComparison.OrdinalIgnoreCase)) | 76 | if (!String.Equals(file.GetMetadata("Extension"), ".wxl", StringComparison.OrdinalIgnoreCase)) |
| 89 | { | 77 | { |
| 90 | Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec); | 78 | this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec); |
| 91 | return false; | 79 | return false; |
| 92 | } | 80 | } |
| 93 | XmlDocument wxlFile = new XmlDocument(); | ||
| 94 | 81 | ||
| 82 | var wxlFile = new XmlDocument(); | ||
| 95 | try | 83 | try |
| 96 | { | 84 | { |
| 97 | wxlFile.Load(file.ItemSpec); | 85 | wxlFile.Load(file.ItemSpec); |
| 98 | } | 86 | } |
| 99 | catch (FileNotFoundException) | 87 | catch (FileNotFoundException) |
| 100 | { | 88 | { |
| 101 | Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec); | 89 | this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec); |
| 102 | return false; | 90 | return false; |
| 103 | } | 91 | } |
| 104 | catch (Exception e) | 92 | catch (Exception e) |
| 105 | { | 93 | { |
| 106 | Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message); | 94 | this.Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message); |
| 107 | return false; | 95 | return false; |
| 108 | } | 96 | } |
| 109 | 97 | ||
| 110 | // Take the culture value and try using it to create a culture. | 98 | // Take the culture value and try using it to create a culture. |
| 111 | XmlAttribute cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName]; | 99 | var cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName]; |
| 112 | string wxlCulture = null == cultureAttr ? String.Empty : cultureAttr.Value; | 100 | var wxlCulture = cultureAttr?.Value ?? String.Empty; |
| 101 | |||
| 113 | if (0 == wxlCulture.Length) | 102 | if (0 == wxlCulture.Length) |
| 114 | { | 103 | { |
| 115 | // We use a keyword for the invariant culture because MSBuild v2.0.50727 cannnot handle "" items | 104 | // We use a keyword for the invariant culture because MSBuild cannnot handle "" items. |
| 116 | wxlCulture = InvariantCultureIdentifier; | 105 | wxlCulture = InvariantCultureIdentifier; |
| 117 | } | 106 | } |
| 118 | 107 | ||
| 119 | // We found the culture for the WXL, we now need to determine if it maps to a culture group specified | 108 | // We found the culture for the WXL, we now need to determine if it maps to a culture group specified |
| 120 | // in the Cultures property or if we need to create a new one. | 109 | // in the Cultures property or if we need to create a new one. |
| 121 | Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec); | 110 | this.Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec); |
| 122 | 111 | ||
| 123 | bool cultureGroupExists = false; | 112 | var cultureGroupExists = false; |
| 124 | foreach (CultureGroup cultureGroup in cultureGroups) | 113 | foreach (var cultureGroup in cultureGroups) |
| 125 | { | 114 | { |
| 126 | foreach (string culture in cultureGroup.Cultures) | 115 | foreach (var culture in cultureGroup.Cultures) |
| 127 | { | 116 | { |
| 128 | if (String.Equals(wxlCulture, culture, StringComparison.OrdinalIgnoreCase)) | 117 | if (String.Equals(wxlCulture, culture, StringComparison.OrdinalIgnoreCase)) |
| 129 | { | 118 | { |
| @@ -142,29 +131,32 @@ namespace WixToolset.BuildTasks | |||
| 142 | } | 131 | } |
| 143 | 132 | ||
| 144 | // If we didn't create any culture groups the culture was unspecificed and no WXLs were included | 133 | // If we didn't create any culture groups the culture was unspecificed and no WXLs were included |
| 145 | // Build an unlocalized target in the output folder | 134 | // then build an unlocalized target in the output folder |
| 146 | if (cultureGroups.Count == 0) | 135 | if (cultureGroups.Count == 0) |
| 147 | { | 136 | { |
| 148 | cultureGroups.Add(new CultureGroup()); | 137 | cultureGroups.Add(new CultureGroup()); |
| 149 | } | 138 | } |
| 150 | 139 | ||
| 151 | List<TaskItem> cultureGroupItems = new List<TaskItem>(); | 140 | var cultureGroupItems = new List<TaskItem>(); |
| 152 | 141 | ||
| 153 | if (1 == cultureGroups.Count && 0 == this.Files.Length) | 142 | if (1 == cultureGroups.Count && 0 == this.Files.Length) |
| 154 | { | 143 | { |
| 155 | // Maintain old behavior, if only one culturegroup is specified and no WXL, output to the default folder | 144 | // Maintain old behavior, if only one culturegroup is specified and no WXL, output to the default folder |
| 156 | TaskItem cultureGroupItem = new TaskItem(cultureGroups[0].ToString()); | 145 | var cultureGroupItem = new TaskItem(cultureGroups[0].ToString()); |
| 146 | cultureGroupItem.SetMetadata(OutputSuffixMetadataName, cultureGroups[0].OutputSuffix); | ||
| 157 | cultureGroupItem.SetMetadata(OutputFolderMetadataName, CultureGroup.DefaultFolder); | 147 | cultureGroupItem.SetMetadata(OutputFolderMetadataName, CultureGroup.DefaultFolder); |
| 158 | cultureGroupItems.Add(cultureGroupItem); | 148 | cultureGroupItems.Add(cultureGroupItem); |
| 159 | } | 149 | } |
| 160 | else | 150 | else |
| 161 | { | 151 | { |
| 162 | foreach (CultureGroup cultureGroup in cultureGroups) | 152 | foreach (var cultureGroup in cultureGroups) |
| 163 | { | 153 | { |
| 164 | TaskItem cultureGroupItem = new TaskItem(cultureGroup.ToString()); | 154 | var cultureGroupItem = new TaskItem(cultureGroup.ToString()); |
| 155 | cultureGroupItem.SetMetadata(OutputSuffixMetadataName, cultureGroup.OutputSuffix); | ||
| 165 | cultureGroupItem.SetMetadata(OutputFolderMetadataName, cultureGroup.OutputFolder); | 156 | cultureGroupItem.SetMetadata(OutputFolderMetadataName, cultureGroup.OutputFolder); |
| 166 | cultureGroupItems.Add(cultureGroupItem); | 157 | cultureGroupItems.Add(cultureGroupItem); |
| 167 | Log.LogMessage("Culture: {0}", cultureGroup.ToString()); | 158 | |
| 159 | this.Log.LogMessage("Culture: {0}", cultureGroup.ToString()); | ||
| 168 | } | 160 | } |
| 169 | } | 161 | } |
| 170 | 162 | ||
| @@ -180,6 +172,11 @@ namespace WixToolset.BuildTasks | |||
| 180 | public const string DefaultFolder = ""; | 172 | public const string DefaultFolder = ""; |
| 181 | 173 | ||
| 182 | /// <summary> | 174 | /// <summary> |
| 175 | /// Language neutral. | ||
| 176 | /// </summary> | ||
| 177 | public const string DefaultSuffix = InvariantCultureIdentifier; | ||
| 178 | |||
| 179 | /// <summary> | ||
| 183 | /// Initialize a null culture group | 180 | /// Initialize a null culture group |
| 184 | /// </summary> | 181 | /// </summary> |
| 185 | public CultureGroup() | 182 | public CultureGroup() |
| @@ -189,7 +186,7 @@ namespace WixToolset.BuildTasks | |||
| 189 | public CultureGroup(string cultureGroupString) | 186 | public CultureGroup(string cultureGroupString) |
| 190 | { | 187 | { |
| 191 | Debug.Assert(!String.IsNullOrEmpty(cultureGroupString)); | 188 | Debug.Assert(!String.IsNullOrEmpty(cultureGroupString)); |
| 192 | foreach (string cultureString in cultureGroupString.Split(',')) | 189 | foreach (var cultureString in cultureGroupString.Split(',')) |
| 193 | { | 190 | { |
| 194 | this.Cultures.Add(cultureString); | 191 | this.Cultures.Add(cultureString); |
| 195 | } | 192 | } |
| @@ -201,17 +198,21 @@ namespace WixToolset.BuildTasks | |||
| 201 | { | 198 | { |
| 202 | get | 199 | get |
| 203 | { | 200 | { |
| 204 | string result = DefaultFolder; | ||
| 205 | if (this.Cultures.Count > 0 && | 201 | if (this.Cultures.Count > 0 && |
| 206 | !this.Cultures[0].Equals(InvariantCultureIdentifier, StringComparison.OrdinalIgnoreCase)) | 202 | !this.Cultures[0].Equals(InvariantCultureIdentifier, StringComparison.OrdinalIgnoreCase)) |
| 207 | { | 203 | { |
| 208 | result = this.Cultures[0] + "\\"; | 204 | return this.Cultures[0] + "\\"; |
| 209 | } | 205 | } |
| 210 | 206 | ||
| 211 | return result; | 207 | return DefaultFolder; |
| 212 | } | 208 | } |
| 213 | } | 209 | } |
| 214 | 210 | ||
| 211 | public string OutputSuffix | ||
| 212 | { | ||
| 213 | get => (this.Cultures.Count > 0) ? this.Cultures[0] : InvariantCultureIdentifier; | ||
| 214 | } | ||
| 215 | |||
| 215 | public override string ToString() | 216 | public override string ToString() |
| 216 | { | 217 | { |
| 217 | if (this.Cultures.Count > 0) | 218 | 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 @@ | |||
| 566 | @(_ResolvedWixLibraryPaths); | 566 | @(_ResolvedWixLibraryPaths); |
| 567 | @(_ResolvedWixExtensionPaths); | 567 | @(_ResolvedWixExtensionPaths); |
| 568 | @(_BindInputs)" | 568 | @(_BindInputs)" |
| 569 | Outputs="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension);@(_BindBuiltOutputs)" | 569 | Outputs="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension);@(_BindBuiltOutputs)" |
| 570 | DependsOnTargets="$(CoreCompileDependsOn)" | 570 | DependsOnTargets="$(CoreCompileDependsOn)" |
| 571 | Condition=" '@(Compile)' != '' "> | 571 | Condition=" '@(Compile)' != '' "> |
| 572 | 572 | ||
| @@ -604,7 +604,7 @@ | |||
| 604 | BindPaths="@(BindPath)" | 604 | BindPaths="@(BindPath)" |
| 605 | BindVariables="@(BindVariable)" | 605 | BindVariables="@(BindVariable)" |
| 606 | BindFiles="$(BindFiles)" | 606 | BindFiles="$(BindFiles)" |
| 607 | BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)" | 607 | BindTrackingFile="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)" |
| 608 | 608 | ||
| 609 | CabinetCachePath="$(_WixBuildCabinetCachePath)" | 609 | CabinetCachePath="$(_WixBuildCabinetCachePath)" |
| 610 | CabinetCreationThreadCount="$(CabinetCreationThreadCount)" | 610 | CabinetCreationThreadCount="$(CabinetCreationThreadCount)" |
| @@ -719,7 +719,7 @@ | |||
| 719 | <Target | 719 | <Target |
| 720 | Name="ReadPreviousBindInputsAndBuiltOutputs"> | 720 | Name="ReadPreviousBindInputsAndBuiltOutputs"> |
| 721 | 721 | ||
| 722 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> | 722 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)"> |
| 723 | <Output TaskParameter="Inputs" ItemName="_BindInputs" /> | 723 | <Output TaskParameter="Inputs" ItemName="_BindInputs" /> |
| 724 | <Output TaskParameter="BuiltOutputs" ItemName="_BindBuiltOutputs" /> | 724 | <Output TaskParameter="BuiltOutputs" ItemName="_BindBuiltOutputs" /> |
| 725 | </ReadTracking> | 725 | </ReadTracking> |
| @@ -748,12 +748,12 @@ | |||
| 748 | Name="UpdateFileWritesWithBindInformation" | 748 | Name="UpdateFileWritesWithBindInformation" |
| 749 | AfterTargets="CoreCompile"> | 749 | AfterTargets="CoreCompile"> |
| 750 | 750 | ||
| 751 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> | 751 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)"> |
| 752 | <Output TaskParameter="Outputs" ItemName="FileWrites" /> | 752 | <Output TaskParameter="Outputs" ItemName="FileWrites" /> |
| 753 | </ReadTracking> | 753 | </ReadTracking> |
| 754 | 754 | ||
| 755 | <ItemGroup> | 755 | <ItemGroup> |
| 756 | <FileWrites Include="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)" Condition=" Exists('$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)') " /> | 756 | <FileWrites Include="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)" Condition=" Exists('$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)') " /> |
| 757 | </ItemGroup> | 757 | </ItemGroup> |
| 758 | </Target> | 758 | </Target> |
| 759 | 759 | ||
| @@ -818,7 +818,7 @@ | |||
| 818 | <!-- Don't add BuiltProjectOutputGroupKeyOutput - to avoid duplicates, we only want to get the updated list of TargetPaths from the TargetPath property below --> | 818 | <!-- Don't add BuiltProjectOutputGroupKeyOutput - to avoid duplicates, we only want to get the updated list of TargetPaths from the TargetPath property below --> |
| 819 | 819 | ||
| 820 | <!-- Try to read the outputs from the bind tracking text file since that's the output list straight from compiler. --> | 820 | <!-- Try to read the outputs from the bind tracking text file since that's the output list straight from compiler. --> |
| 821 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> | 821 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)"> |
| 822 | <Output TaskParameter="Outputs" ItemName="_BuiltProjectOutputGroupOutputIntermediate" /> | 822 | <Output TaskParameter="Outputs" ItemName="_BuiltProjectOutputGroupOutputIntermediate" /> |
| 823 | </ReadTracking> | 823 | </ReadTracking> |
| 824 | 824 | ||
| @@ -894,7 +894,7 @@ | |||
| 894 | </ItemGroup> | 894 | </ItemGroup> |
| 895 | 895 | ||
| 896 | <!-- Add the bound content output files to the list to be copied. --> | 896 | <!-- Add the bound content output files to the list to be copied. --> |
| 897 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.Identity)$(BindTrackingFileExtension)"> | 897 | <ReadTracking File="$(IntermediateOutputPath)$(BindTrackingFilePrefix)%(CultureGroup.OutputSuffix)$(BindTrackingFileExtension)"> |
| 898 | <Output TaskParameter="BuiltContentOutputs" ItemName="_FullPathToCopy" /> | 898 | <Output TaskParameter="BuiltContentOutputs" ItemName="_FullPathToCopy" /> |
| 899 | <Output TaskParameter="CopiedOutputs" ItemName="_FullPathToCopy" /> | 899 | <Output TaskParameter="CopiedOutputs" ItemName="_FullPathToCopy" /> |
| 900 | </ReadTracking> | 900 | </ReadTracking> |
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 | |||
| 252 | }); | 252 | }); |
| 253 | result.AssertSuccess(); | 253 | result.AssertSuccess(); |
| 254 | 254 | ||
| 255 | var trackingContents = File.ReadAllLines(Path.Combine(baseFolder, "obj", "Release", "MsiPackageWithBindVariables.wixproj.BindTracking-neutral.txt")); | ||
| 256 | var lines = trackingContents.Select(l => l.Replace(baseFolder, "<basefolder>")).ToArray(); | ||
| 257 | WixAssert.CompareLineByLine(new[] | ||
| 258 | { | ||
| 259 | "BuiltContentOutput\t<basefolder>\\obj\\Release\\cab1.cab", | ||
| 260 | "BuiltPdbOutput\t<basefolder>\\obj\\Release\\MsiPackageWithBindVariables.wixpdb", | ||
| 261 | "BuiltTargetOutput\t<basefolder>\\obj\\Release\\MsiPackageWithBindVariables.msi", | ||
| 262 | "Input\tdata\\test.txt", | ||
| 263 | "Intermediate\t<basefolder>\\obj\\Release\\cab1.cab" | ||
| 264 | }, lines); | ||
| 265 | |||
| 255 | var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) | 266 | var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) |
| 256 | .Select(s => s.Substring(baseFolder.Length + 1)) | 267 | .Select(s => s.Substring(baseFolder.Length + 1)) |
| 257 | .OrderBy(s => s) | 268 | .OrderBy(s => s) |
| 258 | .ToArray(); | 269 | .ToArray(); |
| 259 | WixAssert.CompareLineByLine(new[] | 270 | WixAssert.CompareLineByLine(new[] |
| 260 | { | 271 | { |
| 261 | @"bin\Release\en-US\cab1.cab", | 272 | @"bin\Release\cab1.cab", |
| 262 | @"bin\Release\en-US\MsiPackageWithBindVariables.msi", | 273 | @"bin\Release\MsiPackageWithBindVariables.msi", |
| 263 | @"bin\Release\en-US\MsiPackageWithBindVariables.wixpdb", | 274 | @"bin\Release\MsiPackageWithBindVariables.wixpdb", |
| 264 | }, paths); | 275 | }, paths); |
| 265 | } | 276 | } |
| 266 | } | 277 | } |
| @@ -428,6 +439,85 @@ namespace WixToolsetTest.Sdk | |||
| 428 | [InlineData(BuildSystem.DotNetCoreSdk)] | 439 | [InlineData(BuildSystem.DotNetCoreSdk)] |
| 429 | [InlineData(BuildSystem.MSBuild)] | 440 | [InlineData(BuildSystem.MSBuild)] |
| 430 | [InlineData(BuildSystem.MSBuild64)] | 441 | [InlineData(BuildSystem.MSBuild64)] |
| 442 | public void CanBuildSingleCultureWithFallbackMsiPackage(BuildSystem buildSystem) | ||
| 443 | { | ||
| 444 | var sourceFolder = TestData.Get(@"TestData", "SingleCultureWithFallbackMsiPackage"); | ||
| 445 | |||
| 446 | using (var fs = new TestDataFolderFileSystem()) | ||
| 447 | { | ||
| 448 | fs.Initialize(sourceFolder); | ||
| 449 | var baseFolder = fs.BaseFolder; | ||
| 450 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
| 451 | var projectPath = Path.Combine(baseFolder, "SingleCultureWithFallbackMsiPackage.wixproj"); | ||
| 452 | |||
| 453 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] | ||
| 454 | { | ||
| 455 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) | ||
| 456 | }); | ||
| 457 | result.AssertSuccess(); | ||
| 458 | |||
| 459 | var trackingContents = File.ReadAllLines(Path.Combine(baseFolder, "obj", "Release", "SingleCultureWithFallbackMsiPackage.wixproj.BindTracking-de-DE.txt")); | ||
| 460 | var lines = trackingContents.Select(l => l.Replace(baseFolder, "<basefolder>")).ToArray(); | ||
| 461 | WixAssert.CompareLineByLine(new[] | ||
| 462 | { | ||
| 463 | "BuiltContentOutput\t<basefolder>\\obj\\Release\\de-DE\\cab1.cab", | ||
| 464 | "BuiltPdbOutput\t<basefolder>\\obj\\Release\\de-DE\\SingleCultureWithFallbackMsiPackage.wixpdb", | ||
| 465 | "BuiltTargetOutput\t<basefolder>\\obj\\Release\\de-DE\\SingleCultureWithFallbackMsiPackage.msi", | ||
| 466 | "Input\t<basefolder>\\data\\test.txt", | ||
| 467 | "Intermediate\t<basefolder>\\obj\\Release\\de-DE\\cab1.cab" | ||
| 468 | }, lines); | ||
| 469 | } | ||
| 470 | } | ||
| 471 | |||
| 472 | [Theory] | ||
| 473 | [InlineData(BuildSystem.DotNetCoreSdk)] | ||
| 474 | [InlineData(BuildSystem.MSBuild)] | ||
| 475 | [InlineData(BuildSystem.MSBuild64)] | ||
| 476 | public void CanBuildMultiCulturalMsiPackage(BuildSystem buildSystem) | ||
| 477 | { | ||
| 478 | var sourceFolder = TestData.Get(@"TestData", "MultiCulturalMsiPackage"); | ||
| 479 | |||
| 480 | using (var fs = new TestDataFolderFileSystem()) | ||
| 481 | { | ||
| 482 | fs.Initialize(sourceFolder); | ||
| 483 | var baseFolder = fs.BaseFolder; | ||
| 484 | var slnPath = Path.Combine(baseFolder, "MultiCulturalMsiPackage.sln"); | ||
| 485 | var projectFolder = Path.Combine(baseFolder, "MsiPackage"); | ||
| 486 | |||
| 487 | var result = MsbuildUtilities.BuildProject(buildSystem, slnPath, new[] | ||
| 488 | { | ||
| 489 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) | ||
| 490 | }); | ||
| 491 | result.AssertSuccess(); | ||
| 492 | |||
| 493 | var trackingEnuContents = File.ReadAllLines(Path.Combine(projectFolder, "obj", "x64", "Release", "MsiPackage.wixproj.BindTracking-en-US.txt")); | ||
| 494 | var enuLines = trackingEnuContents.Select(l => l.Replace(projectFolder, "<basefolder>")).ToArray(); | ||
| 495 | WixAssert.CompareLineByLine(new[] | ||
| 496 | { | ||
| 497 | "BuiltContentOutput\t<basefolder>\\obj\\x64\\Release\\en-US\\cab1.cab", | ||
| 498 | "BuiltPdbOutput\t<basefolder>\\obj\\x64\\Release\\en-US\\MsiPackage.wixpdb", | ||
| 499 | "BuiltTargetOutput\t<basefolder>\\obj\\x64\\Release\\en-US\\MsiPackage.msi", | ||
| 500 | "Input\t<basefolder>\\data\\test.txt", | ||
| 501 | "Intermediate\t<basefolder>\\obj\\x64\\Release\\en-US\\cab1.cab" | ||
| 502 | }, enuLines); | ||
| 503 | |||
| 504 | var trackingDeuContents = File.ReadAllLines(Path.Combine(projectFolder, "obj", "x64", "Release", "MsiPackage.wixproj.BindTracking-de-DE.txt")); | ||
| 505 | var deuLines = trackingDeuContents.Select(l => l.Replace(projectFolder, "<basefolder>")).ToArray(); | ||
| 506 | WixAssert.CompareLineByLine(new[] | ||
| 507 | { | ||
| 508 | "BuiltContentOutput\t<basefolder>\\obj\\x64\\Release\\de-DE\\cab1.cab", | ||
| 509 | "BuiltPdbOutput\t<basefolder>\\obj\\x64\\Release\\de-DE\\MsiPackage.wixpdb", | ||
| 510 | "BuiltTargetOutput\t<basefolder>\\obj\\x64\\Release\\de-DE\\MsiPackage.msi", | ||
| 511 | "Input\t<basefolder>\\data\\test.txt", | ||
| 512 | "Intermediate\t<basefolder>\\obj\\x64\\Release\\de-DE\\cab1.cab" | ||
| 513 | }, deuLines); | ||
| 514 | } | ||
| 515 | } | ||
| 516 | |||
| 517 | [Theory] | ||
| 518 | [InlineData(BuildSystem.DotNetCoreSdk)] | ||
| 519 | [InlineData(BuildSystem.MSBuild)] | ||
| 520 | [InlineData(BuildSystem.MSBuild64)] | ||
| 431 | public void CanBuildSimpleMsiPackageAsWixipl(BuildSystem buildSystem) | 521 | public void CanBuildSimpleMsiPackageAsWixipl(BuildSystem buildSystem) |
| 432 | { | 522 | { |
| 433 | var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); | 523 | var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); |
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 @@ | |||
| 7 | <ItemGroup> | 7 | <ItemGroup> |
| 8 | <Compile Include="Package.wxs" /> | 8 | <Compile Include="Package.wxs" /> |
| 9 | 9 | ||
| 10 | <EmbeddedResource Include="Package.en-us.wxl" /> | ||
| 11 | |||
| 12 | <BindVariable Include="VersionVar=1.2.3" /> | 10 | <BindVariable Include="VersionVar=1.2.3" /> |
| 13 | </ItemGroup> | 11 | </ItemGroup> |
| 14 | 12 | ||
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 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> |
| 2 | <Package Name="MsiPackage" Language="1033" Version="!(wix.VersionVar)" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> | 2 | <Package Name="MsiPackage" Language="1033" Version="!(wix.VersionVar)" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> |
| 3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> | 3 | <MajorUpgrade DowngradeErrorMessage="Downgrade disabled" /> |
| 4 | 4 | ||
| 5 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | 5 | <Feature Id="ProductFeature"> |
| 6 | <Component Directory="INSTALLFOLDER"> | 6 | <Component Directory="INSTALLFOLDER"> |
| 7 | <File Source="!(wix.DataFolderVar)\test.txt" /> | 7 | <File Source="!(wix.DataFolderVar)\test.txt" /> |
| 8 | </Component> | 8 | </Component> |
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <Project ToolsVersion="15.0" DefaultTargets="Build"> |
| 2 | <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
| 3 | <Import Project="$(WixMSBuildProps)" /> | 2 | <Import Project="$(WixMSBuildProps)" /> |
| 3 | |||
| 4 | <PropertyGroup> | 4 | <PropertyGroup> |
| 5 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
| 6 | <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||
| 7 | <ProductVersion>0.9</ProductVersion> | ||
| 8 | <ProjectGuid>7fb77005-c6e0-454f-8c2d-0a4a79c918ba</ProjectGuid> | ||
| 9 | <OutputName>MsiPackage</OutputName> | ||
| 10 | <OutputType>Package</OutputType> | ||
| 11 | <Name>MsiPackage</Name> | ||
| 12 | <RootNamespace>MsiPackage</RootNamespace> | ||
| 13 | <Cultures>en-US,en;de-DE</Cultures> | 5 | <Cultures>en-US,en;de-DE</Cultures> |
| 14 | </PropertyGroup> | 6 | </PropertyGroup> |
| 15 | 7 | ||
| 16 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||
| 17 | <PlatformName>$(Platform)</PlatformName> | ||
| 18 | <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> | ||
| 19 | <DefineConstants>Debug</DefineConstants> | ||
| 20 | </PropertyGroup> | ||
| 21 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||
| 22 | <PlatformName>$(Platform)</PlatformName> | ||
| 23 | <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> | ||
| 24 | </PropertyGroup> | ||
| 25 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> | ||
| 26 | <PlatformName>$(Platform)</PlatformName> | ||
| 27 | <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> | ||
| 28 | <DefineConstants>Debug</DefineConstants> | ||
| 29 | </PropertyGroup> | ||
| 30 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> | ||
| 31 | <PlatformName>$(Platform)</PlatformName> | ||
| 32 | <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath> | ||
| 33 | </PropertyGroup> | ||
| 34 | |||
| 35 | <ItemGroup> | 8 | <ItemGroup> |
| 36 | <Compile Include="Package.wxs" /> | 9 | <Compile Include="Package.wxs" /> |
| 37 | <Compile Include="PackageComponents.wxs" /> | 10 | <Compile Include="PackageComponents.wxs" /> |
| @@ -39,6 +12,7 @@ | |||
| 39 | 12 | ||
| 40 | <ItemGroup> | 13 | <ItemGroup> |
| 41 | <EmbeddedResource Include="Package.en-us.wxl" /> | 14 | <EmbeddedResource Include="Package.en-us.wxl" /> |
| 15 | <EmbeddedResource Include="Package.en.wxl" /> | ||
| 42 | <EmbeddedResource Include="Package.de-de.wxl" /> | 16 | <EmbeddedResource Include="Package.de-de.wxl" /> |
| 43 | </ItemGroup> | 17 | </ItemGroup> |
| 44 | 18 | ||
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | |||
| 3 | <!-- | ||
| 4 | This file contains the declaration of all the localizable strings. | ||
| 5 | --> | ||
| 6 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="de-DE"> | 1 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="de-DE"> |
| 7 | |||
| 8 | <String Id="DowngradeError" Value="German DowngradeError" /> | 2 | <String Id="DowngradeError" Value="German DowngradeError" /> |
| 9 | <String Id="FeatureTitle" Value="German FeatureTitle" /> | 3 | <String Id="FeatureTitle" Value="German FeatureTitle" /> |
| 10 | |||
| 11 | </WixLocalization> | 4 | </WixLocalization> |
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | |||
| 3 | <!-- | ||
| 4 | This file contains the declaration of all the localizable strings. | ||
| 5 | --> | ||
| 6 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> | 1 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> |
| 7 | 2 | <String Id="DowngradeError" Value="EN-US Downgrade Error" /> | |
| 8 | <String Id="DowngradeError" Value="A newer version of [ProductName] is already installed." /> | ||
| 9 | <String Id="FeatureTitle" Value="MsiPackage" /> | ||
| 10 | |||
| 11 | </WixLocalization> | 3 | </WixLocalization> |
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 @@ | |||
| 1 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en"> | ||
| 2 | <String Id="DowngradeError" Value="EN Downgrade Error" Overridable="true" /> | ||
| 3 | <String Id="FeatureTitle" Value="EN Feature Title" Overridable="true" /> | ||
| 4 | </WixLocalization> | ||
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 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> |
| 2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="yes" InstallerVersion="200"> | 2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> |
| 3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> | 3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> |
| 4 | <MediaTemplate /> | ||
| 5 | 4 | ||
| 6 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | 5 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> |
| 7 | <ComponentGroupRef Id="ProductComponents" /> | 6 | <ComponentGroupRef Id="ProductComponents" /> |
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | 2 | <Project ToolsVersion="15.0" DefaultTargets="Build"> |
| 3 | <Import Project="$(WixMSBuildProps)" /> | 3 | <Import Project="$(WixMSBuildProps)" /> |
| 4 | <PropertyGroup> | 4 | <PropertyGroup> |
| 5 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | 5 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | |||
| 3 | <!-- | ||
| 4 | This file contains the declaration of all the localizable strings. | ||
| 5 | --> | ||
| 6 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="de-DE"> | ||
| 7 | |||
| 8 | <String Id="DowngradeError" Value="German DowngradeError" /> | ||
| 9 | |||
| 10 | </WixLocalization> | ||
diff --git a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl index 2bcb83ee..945a773f 100644 --- a/src/wix/test/WixToolsetTest.Sdk/TestData/MsiPackageWithBindVariables/Package.en-us.wxl +++ b/src/wix/test/WixToolsetTest.Sdk/TestData/SingleCultureWithFallbackMsiPackage/Package.en-us.wxl | |||
| @@ -5,7 +5,7 @@ This file contains the declaration of all the localizable strings. | |||
| 5 | --> | 5 | --> |
| 6 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> | 6 | <WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US"> |
| 7 | 7 | ||
| 8 | <String Id="DowngradeError" Value="A newer version of [ProductName] is already installed." /> | 8 | <String Id="DowngradeError" Value="English Downgrade Error" Overridable="true" /> |
| 9 | <String Id="FeatureTitle" Value="MsiPackage" /> | 9 | <String Id="FeatureTitle" Value="English Feature Title" Overridable="true" /> |
| 10 | 10 | ||
| 11 | </WixLocalization> | 11 | </WixLocalization> |
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 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
| 2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="yes" InstallerVersion="200"> | ||
| 3 | <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> | ||
| 4 | <MediaTemplate /> | ||
| 5 | |||
| 6 | <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)"> | ||
| 7 | <ComponentGroupRef Id="ProductComponents" /> | ||
| 8 | </Feature> | ||
| 9 | </Package> | ||
| 10 | |||
| 11 | <Fragment> | ||
| 12 | <StandardDirectory Id="ProgramFilesFolder"> | ||
| 13 | <Directory Id="INSTALLFOLDER" Name="MsiPackage" /> | ||
| 14 | </StandardDirectory> | ||
| 15 | </Fragment> | ||
| 16 | </Wix> | ||
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
| 3 | <Fragment> | ||
| 4 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> | ||
| 5 | <Component> | ||
| 6 | <File Source="test.txt" /> | ||
| 7 | </Component> | ||
| 8 | </ComponentGroup> | ||
| 9 | </Fragment> | ||
| 10 | </Wix> | ||
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 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <Project ToolsVersion="15.0" DefaultTargets="Build"> | ||
| 3 | <Import Project="$(WixMSBuildProps)" /> | ||
| 4 | <PropertyGroup> | ||
| 5 | <Cultures>de-DE,en-us</Cultures> | ||
| 6 | </PropertyGroup> | ||
| 7 | |||
| 8 | <ItemGroup> | ||
| 9 | <Compile Include="Package.wxs" /> | ||
| 10 | <Compile Include="PackageComponents.wxs" /> | ||
| 11 | </ItemGroup> | ||
| 12 | |||
| 13 | <ItemGroup> | ||
| 14 | <EmbeddedResource Include="Package.en-us.wxl" /> | ||
| 15 | <EmbeddedResource Include="Package.de-de.wxl" /> | ||
| 16 | </ItemGroup> | ||
| 17 | |||
| 18 | <ItemGroup> | ||
| 19 | <BindPath Include="data" /> | ||
| 20 | </ItemGroup> | ||
| 21 | |||
| 22 | <Import Project="$(WixTargetsPath)" /> | ||
| 23 | </Project> | ||
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 | |||
