@joebigelow / wix / commits / 0f65aaac

Move creation of hidden properties...

...for deferred CAs with HideTarget="yes" to the MSI backend where it belongs.

Bob Arnson committed Nov 5, 2019 at 19:27 UTC 0f65aaaca2faf1b6fc233c445216d547f08c6fa5
4 files changed +20 -13
src/WixToolset.Core.WindowsInstaller/Bind/CreateSpecialPropertiesCommand.cs
+12 -3
@@ -20,9 +20,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind
20 public void Execute()
21 {
22 // Create lists of the properties that contribute to the special lists of properties.
23 - SortedSet<string> adminProperties = new SortedSet<string>();
24 - SortedSet<string> secureProperties = new SortedSet<string>();
25 - SortedSet<string> hiddenProperties = new SortedSet<string>();
23 + var adminProperties = new SortedSet<string>();
24 + var secureProperties = new SortedSet<string>();
25 + var hiddenProperties = new SortedSet<string>();
26
27 foreach (var wixPropertyRow in this.Section.Tuples.OfType<WixPropertyTuple>())
28 {
@@ -42,6 +42,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind
42 }
43 }
44
45 + // Hide properties for in-script custom actions that have HideTarget set.
46 + var hideTargetCustomActions = this.Section.Tuples.OfType<CustomActionTuple>().Where(
47 + ca => ca.Hidden
48 + && (ca.ExecutionType == CustomActionExecutionType.Deferred
49 + || ca.ExecutionType == CustomActionExecutionType.Commit
50 + || ca.ExecutionType == CustomActionExecutionType.Rollback))
51 + .Select(ca => ca.Id.Id);
52 + hiddenProperties.UnionWith(hideTargetCustomActions);
53 +
54 if (0 < adminProperties.Count)
55 {
56 var tuple = new PropertyTuple(null, new Identifier(AccessModifier.Private, "AdminProperties"));
src/WixToolset.Core/Compiler.cs
+1 -9
@@ -3561,6 +3561,7 @@ namespace WixToolset.Core
3561 PatchUninstall = patchUninstall,
3562 TSAware = tsAware,
3563 Win64 = win64,
3564 + Hidden = hidden,
3565 };
3566
3567 this.Core.AddTuple(tuple);
@@ -3569,15 +3570,6 @@ namespace WixToolset.Core
3570 {
3571 this.Core.AddTuple(new WixSuppressModularizationTuple(sourceLineNumbers, id));
3572 }
3572 -
3573 - // For deferred CAs that specify HideTarget we should also hide the CA data property for the action.
3574 - if (hidden &&
3575 - (CustomActionExecutionType.Deferred == executionType ||
3576 - CustomActionExecutionType.Commit == executionType ||
3577 - CustomActionExecutionType.Rollback == executionType))
3578 - {
3579 - this.AddWixPropertyRow(sourceLineNumbers, id, false, false, hidden);
3580 - }
3573 }
3574 }
3575
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+5
@@ -3,6 +3,7 @@
3 namespace WixToolsetTest.CoreIntegration
4 {
5 using System.IO;
6 + using System.Linq;
7 using WixBuildTools.TestSupport;
8 using WixToolset.Core.TestPackage;
9 using Xunit;
@@ -281,8 +282,12 @@ namespace WixToolsetTest.CoreIntegration
282 {
283 "Binary:Binary1\t[Binary data]",
284 "CustomAction:CustomAction1\t1\tBinary1\tInvalidEntryPoint\t",
285 + "CustomAction:CustomActionWithHiddenTarget\t9217\tBinary1\tInvalidEntryPoint\t",
286 "CustomAction:DiscardOptimismAllBeingsWhoProceed\t19\t\tAbandon hope all ye who enter here.\t",
287 }, results);
288 + var properties = Query.QueryDatabase(msiPath, new[] { "Property" });
289 + var hiddenProperties = properties.Where(q => q.StartsWith("Property:MsiHiddenProperties")).Single();
290 + Assert.Equal("Property:MsiHiddenProperties\tCustomActionWithHiddenTarget", hiddenProperties);
291 }
292 }
293
src/test/WixToolsetTest.CoreIntegration/TestData/CustomAction/UnscheduledCustomAction.wxs
+2 -1
@@ -6,7 +6,8 @@
6 </ComponentGroup>
7
8 <Binary Id="Binary1" SourceFile="test.txt"></Binary>
9 - <CustomAction Id="CustomAction1" BinaryKey="Binary1" DllEntry="InvalidEntryPoint"></CustomAction>
9 + <CustomAction Id="CustomAction1" BinaryKey="Binary1" DllEntry="InvalidEntryPoint" />
10 <CustomAction Id="DiscardOptimismAllBeingsWhoProceed" Error="Abandon hope all ye who enter here." />
11 + <CustomAction Id="CustomActionWithHiddenTarget" BinaryKey="Binary1" DllEntry="InvalidEntryPoint" Execute="deferred" HideTarget="yes" />
12 </Fragment>
13 </Wix>