diff options
Diffstat (limited to 'src')
3 files changed, 61 insertions, 15 deletions
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/UpdateFileFacadesCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/UpdateFileFacadesCommand.cs index 0f77abfc..8043ffa8 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/UpdateFileFacadesCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/UpdateFileFacadesCommand.cs | |||
| @@ -195,22 +195,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 195 | { | 195 | { |
| 196 | facade.Language = language; | 196 | facade.Language = language; |
| 197 | } | 197 | } |
| 198 | } | ||
| 198 | 199 | ||
| 199 | // Populate the binder variables for this file information if requested. | 200 | // Populate the binder variables for this file information if requested. |
| 200 | if (null != this.VariableCache) | 201 | if (null != this.VariableCache) |
| 201 | { | 202 | { |
| 202 | if (!String.IsNullOrEmpty(facade.Version)) | 203 | this.VariableCache[$"fileversion.{facade.Id}"] = facade.Version ?? String.Empty; |
| 203 | { | 204 | this.VariableCache[$"filelanguage.{facade.Id}"] = facade.Language ?? String.Empty; |
| 204 | var key = String.Format(CultureInfo.InvariantCulture, "fileversion.{0}", facade.Id); | ||
| 205 | this.VariableCache[key] = facade.Version; | ||
| 206 | } | ||
| 207 | |||
| 208 | if (!String.IsNullOrEmpty(facade.Language)) | ||
| 209 | { | ||
| 210 | var key = String.Format(CultureInfo.InvariantCulture, "filelanguage.{0}", facade.Id); | ||
| 211 | this.VariableCache[key] = facade.Language; | ||
| 212 | } | ||
| 213 | } | ||
| 214 | } | 205 | } |
| 215 | 206 | ||
| 216 | // If this is a CLR assembly, load the assembly and get the assembly name information | 207 | // If this is a CLR assembly, load the assembly and get the assembly name information |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs index 39e6b4aa..820f1707 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs | |||
| @@ -4,6 +4,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 4 | { | 4 | { |
| 5 | using System; | 5 | using System; |
| 6 | using System.IO; | 6 | using System.IO; |
| 7 | using System.Linq; | ||
| 7 | using WixBuildTools.TestSupport; | 8 | using WixBuildTools.TestSupport; |
| 8 | using WixToolset.Core.TestPackage; | 9 | using WixToolset.Core.TestPackage; |
| 9 | using Xunit; | 10 | using Xunit; |
| @@ -39,6 +40,40 @@ namespace WixToolsetTest.CoreIntegration | |||
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | [Fact] | 42 | [Fact] |
| 43 | public void CanBuildPackageWithBindVariables() | ||
| 44 | { | ||
| 45 | var folder = TestData.Get(@"TestData", "BindVariables"); | ||
| 46 | var dotDataFolder = TestData.Get(@"TestData", ".Data"); | ||
| 47 | |||
| 48 | using (var fs = new DisposableFileSystem()) | ||
| 49 | { | ||
| 50 | var baseFolder = fs.GetFolder(); | ||
| 51 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 52 | var msiPath = Path.Combine(intermediateFolder, @"test.msi"); | ||
| 53 | |||
| 54 | var result = WixRunner.Execute(new[] | ||
| 55 | { | ||
| 56 | "build", | ||
| 57 | Path.Combine(folder, "PackageWithBindVariables.wxs"), | ||
| 58 | "-intermediateFolder", intermediateFolder, | ||
| 59 | "-bindpath", folder, | ||
| 60 | "-bindpath", dotDataFolder, | ||
| 61 | "-o", msiPath, | ||
| 62 | }); | ||
| 63 | |||
| 64 | result.AssertSuccess(); | ||
| 65 | |||
| 66 | var queryResults = Query.QueryDatabase(msiPath, new[] { "Property" }).ToDictionary(s => s.Split('\t')[0]); | ||
| 67 | Assert.Equal("Property:ProductVersion\t3.14.1703.0", queryResults["Property:ProductVersion"]); | ||
| 68 | Assert.Equal("Property:TestPackageManufacturer\tExample Corporation", queryResults["Property:TestPackageManufacturer"]); | ||
| 69 | Assert.Equal("Property:TestPackageName\tPacakgeWithBindVariables", queryResults["Property:TestPackageName"]); | ||
| 70 | Assert.Equal("Property:TestPackageVersion\t3.14.1703.0", queryResults["Property:TestPackageVersion"]); | ||
| 71 | Assert.Equal("Property:TestTextVersion\tv", queryResults["Property:TestTextVersion"]); | ||
| 72 | Assert.False(queryResults.ContainsKey("Property:TestTextLanguage")); | ||
| 73 | } | ||
| 74 | } | ||
| 75 | |||
| 76 | [Fact] | ||
| 42 | public void CanBuildWithDefaultValue() | 77 | public void CanBuildWithDefaultValue() |
| 43 | { | 78 | { |
| 44 | var folder = TestData.Get(@"TestData", "BindVariables"); | 79 | var folder = TestData.Get(@"TestData", "BindVariables"); |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BindVariables/PackageWithBindVariables.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BindVariables/PackageWithBindVariables.wxs new file mode 100644 index 00000000..377f7e11 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/BindVariables/PackageWithBindVariables.wxs | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> | ||
| 2 | <Package Name="PacakgeWithBindVariables" Version="!(bind.fileversion.TestBinaryFile)" Manufacturer="Example Corporation" UpgradeCode="00000000-0000-0000-0000-000000000000"> | ||
| 3 | |||
| 4 | <Property Id="TestPackageManufacturer" Value="!(bind.Property.Manufacturer)" /> | ||
| 5 | <Property Id="TestPackageName" Value="!(bind.Property.ProductName)" /> | ||
| 6 | <Property Id="TestPackageVersion" Value="!(bind.Property.ProductVersion)" /> | ||
| 7 | |||
| 8 | <Property Id="TestTextVersion" Value="v!(bind.fileversion.TestTextFile)" /> | ||
| 9 | <Property Id="TestTextLangauge" Value="!(bind.filelanguage.TestTextFile)" /> | ||
| 10 | |||
| 11 | <Feature Id="ProductFeature"> | ||
| 12 | <Component Directory="ProgramFiles6432Folder" Subdirectory="test"> | ||
| 13 | <File Id="TestBinaryFile" Source="burn.exe" /> | ||
| 14 | </Component> | ||
| 15 | <Component Directory="ProgramFiles6432Folder" Subdirectory="test"> | ||
| 16 | <File Id="TestTextFile" Source="data\test.txt" /> | ||
| 17 | </Component> | ||
| 18 | </Feature> | ||
| 19 | </Package> | ||
| 20 | </Wix> | ||
