From 90729dee09047c206d95b00f9fc4e4f1a35d4d0d Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 19 Apr 2021 14:46:39 -0700 Subject: Set well-known deferred properties to String.Empty when not present Fixes wixtoolset/issues#6431 --- src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs | 35 +++++++++++----------- .../BindVariablesFixture.cs | 2 +- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs index fd847e05..5ddb6be1 100644 --- a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs +++ b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs @@ -208,17 +208,6 @@ namespace WixToolset.Core.Burn { var command = new ProcessMsiPackageCommand(this.ServiceProvider, this.BackendExtensions, section, facade, packagesPayloads[facade.PackageId]); command.Execute(); - - if (null != variableCache) - { - var msiPackage = (WixBundleMsiPackageSymbol)facade.SpecificPackageSymbol; - variableCache.Add(String.Concat("packageLanguage.", facade.PackageId), msiPackage.ProductLanguage.ToString()); - - if (null != msiPackage.Manufacturer) - { - variableCache.Add(String.Concat("packageManufacturer.", facade.PackageId), msiPackage.Manufacturer); - } - } } break; @@ -239,7 +228,7 @@ namespace WixToolset.Core.Burn if (null != variableCache) { - BindBundleCommand.PopulatePackageVariableCache(facade.PackageSymbol, variableCache); + BindBundleCommand.PopulatePackageVariableCache(facade, variableCache); } } @@ -534,17 +523,27 @@ namespace WixToolset.Core.Burn /// /// Populates the variable cache with specific package properties. /// - /// The package with properties to cache. + /// The package facade with properties to cache. /// The property cache. - private static void PopulatePackageVariableCache(WixBundlePackageSymbol package, IDictionary variableCache) + private static void PopulatePackageVariableCache(PackageFacade facade, IDictionary variableCache) { + var package = facade.PackageSymbol; var id = package.Id.Id; - variableCache.Add(String.Concat("packageDescription.", id), package.Description); - //variableCache.Add(String.Concat("packageLanguage.", id), package.Language); - //variableCache.Add(String.Concat("packageManufacturer.", id), package.Manufacturer); - variableCache.Add(String.Concat("packageName.", id), package.DisplayName); + variableCache.Add(String.Concat("packageDescription.", id), package.Description ?? String.Empty); + variableCache.Add(String.Concat("packageName.", id), package.DisplayName ?? String.Empty); variableCache.Add(String.Concat("packageVersion.", id), package.Version); + + if (facade.SpecificPackageSymbol is WixBundleMsiPackageSymbol msiPackage) + { + variableCache.Add(String.Concat("packageLanguage.", id), msiPackage.ProductLanguage.ToString()); + variableCache.Add(String.Concat("packageManufacturer.", id), msiPackage.Manufacturer ?? String.Empty); + } + else + { + variableCache.Add(String.Concat("packageLanguage.", id), String.Empty); + variableCache.Add(String.Concat("packageManufacturer.", id), String.Empty); + } } private void ResolveBundleInstallScope(IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable facades) diff --git a/src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs b/src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs index 44f9c802..39e6b4aa 100644 --- a/src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs @@ -10,7 +10,7 @@ namespace WixToolsetTest.CoreIntegration public class BindVariablesFixture { - [Fact(Skip = "Test demonstrates failure")] + [Fact] public void CanBuildBundleWithPackageBindVariables() { var folder = TestData.Get(@"TestData"); -- cgit v1.2.3-55-g6feb