From fa98fd399029a000d57c812af64a41895a70d701 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Jun 2022 13:37:26 -0700 Subject: Set MsiPackage/@Visible='yes' when Permanent='yes' Fixes 6764 --- src/wix/WixToolset.Core/Compiler_Bundle.cs | 2 +- .../MsiPackageFixture.cs | 55 ++++++++++++++++++++++ .../TestData/MsiPackage/VisibleWhenPermanent.wxs | 8 ++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/wix/test/WixToolsetTest.CoreIntegration/MsiPackageFixture.cs create mode 100644 src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsiPackage/VisibleWhenPermanent.wxs diff --git a/src/wix/WixToolset.Core/Compiler_Bundle.cs b/src/wix/WixToolset.Core/Compiler_Bundle.cs index b8f449d6..be976a22 100644 --- a/src/wix/WixToolset.Core/Compiler_Bundle.cs +++ b/src/wix/WixToolset.Core/Compiler_Bundle.cs @@ -2329,7 +2329,7 @@ namespace WixToolset.Core rollbackPathVariable = String.Concat("WixBundleRollbackLog_", id.Id); } - if (packageType == WixBundlePackageType.Bundle) + if (packageType == WixBundlePackageType.Bundle || packageType == WixBundlePackageType.Msi) { if (permanent == YesNoType.Yes && visible == YesNoType.NotSet) { diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsiPackageFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsiPackageFixture.cs new file mode 100644 index 00000000..ce963df6 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsiPackageFixture.cs @@ -0,0 +1,55 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolsetTest.CoreIntegration +{ + using System.IO; + using System.Linq; + using System.Xml; + using WixBuildTools.TestSupport; + using WixToolset.Core.TestPackage; + using Xunit; + + public class MsiPackageFixture + { + [Fact] + public void CanDefaultPermanentMsiPackageToVisible() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var binFolder = Path.Combine(baseFolder, "bin"); + var exePath = Path.Combine(binFolder, "test.exe"); + var baFolderPath = Path.Combine(baseFolder, "ba"); + var extractFolderPath = Path.Combine(baseFolder, "extract"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "MsiPackage", "VisibleWhenPermanent.wxs"), + Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), + "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), + "-bindpath", binFolder, + "-intermediateFolder", intermediateFolder, + "-o", exePath, + }); + + result.AssertSuccess(); + + var extractResult = BundleExtractor.ExtractBAContainer(null, exePath, baFolderPath, extractFolderPath); + extractResult.AssertSuccess(); + + var msiProperties = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Chain/burn:MsiPackage/burn:MsiProperty") + .Cast() + .Select(e => e.GetTestXml()) + .ToArray(); + WixAssert.CompareLineByLine(new[] + { + "" + }, msiProperties); + } + } + } +} diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsiPackage/VisibleWhenPermanent.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsiPackage/VisibleWhenPermanent.wxs new file mode 100644 index 00000000..584a1bbd --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsiPackage/VisibleWhenPermanent.wxs @@ -0,0 +1,8 @@ + + + + + + + + -- cgit v1.2.3-55-g6feb