@joebigelow / wix-1 / commits / fa98fd39

Set MsiPackage/@Visible='yes' when Permanent='yes'

Fixes 6764

Rob Mensching committed Jun 1, 2022 at 13:37 UTC fa98fd399029a000d57c812af64a41895a70d701
3 files changed +64 -1
src/wix/WixToolset.Core/Compiler_Bundle.cs
+1 -1
@@ -2329,7 +2329,7 @@ namespace WixToolset.Core
2329 rollbackPathVariable = String.Concat("WixBundleRollbackLog_", id.Id);
2330 }
2331
2332 - if (packageType == WixBundlePackageType.Bundle)
2332 + if (packageType == WixBundlePackageType.Bundle || packageType == WixBundlePackageType.Msi)
2333 {
2334 if (permanent == YesNoType.Yes && visible == YesNoType.NotSet)
2335 {
src/wix/test/WixToolsetTest.CoreIntegration/MsiPackageFixture.cs new
+55
@@ -0,0 +1,55 @@
1 +// 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.
2 +
3 +namespace WixToolsetTest.CoreIntegration
4 +{
5 + using System.IO;
6 + using System.Linq;
7 + using System.Xml;
8 + using WixBuildTools.TestSupport;
9 + using WixToolset.Core.TestPackage;
10 + using Xunit;
11 +
12 + public class MsiPackageFixture
13 + {
14 + [Fact]
15 + public void CanDefaultPermanentMsiPackageToVisible()
16 + {
17 + var folder = TestData.Get(@"TestData");
18 +
19 + using (var fs = new DisposableFileSystem())
20 + {
21 + var baseFolder = fs.GetFolder();
22 + var intermediateFolder = Path.Combine(baseFolder, "obj");
23 + var binFolder = Path.Combine(baseFolder, "bin");
24 + var exePath = Path.Combine(binFolder, "test.exe");
25 + var baFolderPath = Path.Combine(baseFolder, "ba");
26 + var extractFolderPath = Path.Combine(baseFolder, "extract");
27 +
28 + var result = WixRunner.Execute(new[]
29 + {
30 + "build",
31 + Path.Combine(folder, "MsiPackage", "VisibleWhenPermanent.wxs"),
32 + Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
33 + "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
34 + "-bindpath", binFolder,
35 + "-intermediateFolder", intermediateFolder,
36 + "-o", exePath,
37 + });
38 +
39 + result.AssertSuccess();
40 +
41 + var extractResult = BundleExtractor.ExtractBAContainer(null, exePath, baFolderPath, extractFolderPath);
42 + extractResult.AssertSuccess();
43 +
44 + var msiProperties = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Chain/burn:MsiPackage/burn:MsiProperty")
45 + .Cast<XmlElement>()
46 + .Select(e => e.GetTestXml())
47 + .ToArray();
48 + WixAssert.CompareLineByLine(new[]
49 + {
50 + "<MsiProperty Id='MSIFASTINSTALL' Value='7' />"
51 + }, msiProperties);
52 + }
53 + }
54 + }
55 +}
src/wix/test/WixToolsetTest.CoreIntegration/TestData/MsiPackage/VisibleWhenPermanent.wxs new
+8
@@ -0,0 +1,8 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 + <Fragment>
4 + <PackageGroup Id="BundlePackages">
5 + <MsiPackage SourceFile="test.msi" Permanent="yes" />
6 + </PackageGroup>
7 + </Fragment>
8 +</Wix>