@joebigelow / wix-1 / commits / 90729dee

Set well-known deferred properties to String.Empty when not present

Fixes wixtoolset/issues#6431

Rob Mensching committed Apr 19, 2021 at 14:46 UTC 90729dee09047c206d95b00f9fc4e4f1a35d4d0d
2 files changed +18 -19
src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+17 -18
@@ -208,17 +208,6 @@ namespace WixToolset.Core.Burn
208 {
209 var command = new ProcessMsiPackageCommand(this.ServiceProvider, this.BackendExtensions, section, facade, packagesPayloads[facade.PackageId]);
210 command.Execute();
211 -
212 - if (null != variableCache)
213 - {
214 - var msiPackage = (WixBundleMsiPackageSymbol)facade.SpecificPackageSymbol;
215 - variableCache.Add(String.Concat("packageLanguage.", facade.PackageId), msiPackage.ProductLanguage.ToString());
216 -
217 - if (null != msiPackage.Manufacturer)
218 - {
219 - variableCache.Add(String.Concat("packageManufacturer.", facade.PackageId), msiPackage.Manufacturer);
220 - }
221 - }
211 }
212 break;
213
@@ -239,7 +228,7 @@ namespace WixToolset.Core.Burn
228
229 if (null != variableCache)
230 {
242 - BindBundleCommand.PopulatePackageVariableCache(facade.PackageSymbol, variableCache);
231 + BindBundleCommand.PopulatePackageVariableCache(facade, variableCache);
232 }
233 }
234
@@ -534,17 +523,27 @@ namespace WixToolset.Core.Burn
523 /// <summary>
524 /// Populates the variable cache with specific package properties.
525 /// </summary>
537 - /// <param name="package">The package with properties to cache.</param>
526 + /// <param name="facade">The package facade with properties to cache.</param>
527 /// <param name="variableCache">The property cache.</param>
539 - private static void PopulatePackageVariableCache(WixBundlePackageSymbol package, IDictionary<string, string> variableCache)
528 + private static void PopulatePackageVariableCache(PackageFacade facade, IDictionary<string, string> variableCache)
529 {
530 + var package = facade.PackageSymbol;
531 var id = package.Id.Id;
532
543 - variableCache.Add(String.Concat("packageDescription.", id), package.Description);
544 - //variableCache.Add(String.Concat("packageLanguage.", id), package.Language);
545 - //variableCache.Add(String.Concat("packageManufacturer.", id), package.Manufacturer);
546 - variableCache.Add(String.Concat("packageName.", id), package.DisplayName);
533 + variableCache.Add(String.Concat("packageDescription.", id), package.Description ?? String.Empty);
534 + variableCache.Add(String.Concat("packageName.", id), package.DisplayName ?? String.Empty);
535 variableCache.Add(String.Concat("packageVersion.", id), package.Version);
536 +
537 + if (facade.SpecificPackageSymbol is WixBundleMsiPackageSymbol msiPackage)
538 + {
539 + variableCache.Add(String.Concat("packageLanguage.", id), msiPackage.ProductLanguage.ToString());
540 + variableCache.Add(String.Concat("packageManufacturer.", id), msiPackage.Manufacturer ?? String.Empty);
541 + }
542 + else
543 + {
544 + variableCache.Add(String.Concat("packageLanguage.", id), String.Empty);
545 + variableCache.Add(String.Concat("packageManufacturer.", id), String.Empty);
546 + }
547 }
548
549 private void ResolveBundleInstallScope(IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable<PackageFacade> facades)
src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs
+1 -1
@@ -10,7 +10,7 @@ namespace WixToolsetTest.CoreIntegration
10
11 public class BindVariablesFixture
12 {
13 - [Fact(Skip = "Test demonstrates failure")]
13 + [Fact]
14 public void CanBuildBundleWithPackageBindVariables()
15 {
16 var folder = TestData.Get(@"TestData");