@joebigelow / wix / commits / 97a70bbc

Fix resolution of !(bind.ProductVersion.MsiId) bind variables

Fixes wixtoolset/issues#4830

Rob Mensching committed Nov 5, 2019 at 22:33 UTC 97a70bbc1b90cb26f8c77d83e703689d15d08761
4 files changed +15 -5
src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
+5
@@ -135,6 +135,11 @@ namespace WixToolset.Core.Burn.Bundles
135 this.Facade.PackageTuple.Description = ProcessMsiPackageCommand.GetProperty(db, "ARPCOMMENTS");
136 }
137
138 + if (String.IsNullOrEmpty(this.Facade.PackageTuple.Version))
139 + {
140 + this.Facade.PackageTuple.Version = msiPackage.ProductVersion;
141 + }
142 +
143 var payloadNames = this.GetPayloadTargetNames(packagePayload.Id.Id);
144
145 var msiPropertyNames = this.GetMsiPropertyNames(packagePayload.Id.Id);
src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
+3 -4
@@ -153,12 +153,11 @@ namespace WixToolset.Core.Bind
153 }
154 else
155 {
156 - string key = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", variableId, variableScope).ToLower(CultureInfo.InvariantCulture);
157 - string resolvedValue = variableDefaultValue;
156 + var key = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", variableId, variableScope).ToLower(CultureInfo.InvariantCulture);
157
159 - if (resolutionData.ContainsKey(key))
158 + if (!resolutionData.TryGetValue(key, out var resolvedValue))
159 {
161 - resolvedValue = resolutionData[key];
160 + resolvedValue = variableDefaultValue;
161 }
162
163 if ("bind" == variableNamespace)
src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs
+6
@@ -44,6 +44,12 @@ namespace WixToolsetTest.CoreIntegration
44 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir"));
45 var section = intermediate.Sections.Single();
46
47 + var bundleTuple = section.Tuples.OfType<WixBundleTuple>().Single();
48 + Assert.Equal("1.0.0.0", bundleTuple.Version);
49 +
50 + var previousVersion = bundleTuple.Fields[(int)WixBundleTupleFields.Version].PreviousValue;
51 + Assert.Equal("!(bind.packageVersion.test.msi)", previousVersion.AsString());
52 +
53 var msiTuple = section.Tuples.OfType<WixBundlePackageTuple>().Single();
54 Assert.Equal("test.msi", msiTuple.Id.Id );
55 }
src/test/WixToolsetTest.CoreIntegration/TestData/SimpleBundle/Bundle.wxs
+1 -1
@@ -1,6 +1,6 @@
1 <?xml version="1.0" encoding="utf-8"?>
2 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 - <Bundle Name="!(loc.BundleName)" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
3 + <Bundle Name="!(loc.BundleName)" Version="!(bind.packageVersion.test.msi)" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
4 <BootstrapperApplication SourceFile="fakeba.dll" />
5 <Chain>
6 <MsiPackage SourceFile="test.msi">