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