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">