@joebigelow / wix-1 / commits / c4ffb996

Better solution to the UI custom action "problem."

Add platform-specific fragments that are referenced by the compiler extension. That makes it easier to customize: Just copy the dialog set authoring and rename, like in v3.

Bob Arnson committed Nov 21, 2022 at 16:57 UTC c4ffb9967e4e4f7d67f5925208e3e0a885e903c5
12 files changed +133 -97
src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+58 -22
@@ -20,7 +20,7 @@ namespace WixToolsetTest.UI
20 var bindFolder = TestData.Get(@"TestData\data");
21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
22
23 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction");
23 + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent");
24 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
25 WixAssert.CompareLineByLine(new[]
26 {
@@ -38,9 +38,15 @@ namespace WixToolsetTest.UI
38 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
39 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
40 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
41 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t",
42 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
41 + "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
42 + "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
43 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
44 + WixAssert.CompareLineByLine(new[]
45 + {
46 + "ControlEvent:AdvancedWelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
47 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t1",
48 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
49 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
50 }
51
52 [Fact]
@@ -50,7 +56,7 @@ namespace WixToolsetTest.UI
56 var bindFolder = TestData.Get(@"TestData\data");
57 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
58
53 - var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction");
59 + var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent");
60 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
61 WixAssert.CompareLineByLine(new[]
62 {
@@ -68,9 +74,15 @@ namespace WixToolsetTest.UI
74 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
75 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
76 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
71 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X64\tPrintEula\t",
72 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X64\tValidatePath\t",
77 + "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
78 + "CustomAction:WixUIValidatePath_X64\t65\tWixUiCa_X64\tValidatePath\t",
79 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
80 + WixAssert.CompareLineByLine(new[]
81 + {
82 + "ControlEvent:AdvancedWelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1",
83 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t1",
84 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t2",
85 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
86 }
87
88 [Fact]
@@ -80,7 +92,7 @@ namespace WixToolsetTest.UI
92 var bindFolder = TestData.Get(@"TestData\data");
93 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
94
83 - var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction");
95 + var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent");
96 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
97 WixAssert.CompareLineByLine(new[]
98 {
@@ -98,9 +110,15 @@ namespace WixToolsetTest.UI
110 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
111 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
112 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
101 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_A64\tPrintEula\t",
102 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_A64\tValidatePath\t",
113 + "CustomAction:WixUIPrintEula_A64\t65\tWixUiCa_A64\tPrintEula\t",
114 + "CustomAction:WixUIValidatePath_A64\t65\tWixUiCa_A64\tValidatePath\t",
115 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
116 + WixAssert.CompareLineByLine(new[]
117 + {
118 + "ControlEvent:AdvancedWelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_A64\t1\t1",
119 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_A64\tNOT WIXUI_DONTVALIDATEPATH\t1",
120 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_A64\tNOT WIXUI_DONTVALIDATEPATH\t2",
121 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
122 }
123
124 [Fact]
@@ -110,7 +128,7 @@ namespace WixToolsetTest.UI
128 var bindFolder = TestData.Get(@"TestData\data");
129 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
130
113 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction");
131 + var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent");
132 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
133 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
134 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
@@ -122,13 +140,16 @@ namespace WixToolsetTest.UI
140 "Binary:WixUI_Bmp_Up\t[Binary data]",
141 "Binary:WixUI_Ico_Exclam\t[Binary data]",
142 "Binary:WixUI_Ico_Info\t[Binary data]",
125 - "Binary:WixUiCa_X86\t[Binary data]",
143 + "Binary:WixUiCa_X64\t[Binary data]",
144 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
145 WixAssert.CompareLineByLine(new[]
146 {
129 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t",
130 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
147 + "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
148 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
149 + WixAssert.CompareLineByLine(new[]
150 + {
151 + "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1",
152 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
153 }
154
155 [Fact]
@@ -138,7 +159,7 @@ namespace WixToolsetTest.UI
159 var bindFolder = TestData.Get(@"TestData\data");
160 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
161
141 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property");
162 + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent");
163 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
164 WixAssert.CompareLineByLine(new[]
165 {
@@ -152,13 +173,19 @@ namespace WixToolsetTest.UI
173 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
174 WixAssert.CompareLineByLine(new[]
175 {
155 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t",
156 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
176 + "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
177 + "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
178 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
179 WixAssert.CompareLineByLine(new[]
180 {
181 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
182 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray());
183 + WixAssert.CompareLineByLine(new[]
184 + {
185 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3",
186 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
187 + "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
188 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
189 }
190
191 [Fact]
@@ -168,7 +195,7 @@ namespace WixToolsetTest.UI
195 var bindFolder = TestData.Get(@"TestData\data");
196 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
197
171 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction");
198 + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent");
199 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
200 WixAssert.CompareLineByLine(new[]
201 {
@@ -182,9 +209,12 @@ namespace WixToolsetTest.UI
209 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
210 WixAssert.CompareLineByLine(new[]
211 {
185 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t",
186 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
212 + "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
213 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
214 + WixAssert.CompareLineByLine(new[]
215 + {
216 + "ControlEvent:WelcomeEulaDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
217 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
218 }
219
220 [Fact]
@@ -232,7 +262,7 @@ namespace WixToolsetTest.UI
262 var bindFolder = TestData.Get(@"TestData\data");
263 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
264
235 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction");
265 + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent");
266 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
267 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
268 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
@@ -248,9 +278,15 @@ namespace WixToolsetTest.UI
278 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
279 WixAssert.CompareLineByLine(new[]
280 {
251 - "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t",
252 - "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
281 + "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
282 + "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
283 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
284 + WixAssert.CompareLineByLine(new[]
285 + {
286 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3",
287 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
288 + "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X86\t1\t1",
289 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
290 }
291
292 [Fact]
src/ext/UI/wixext/UICompiler.cs
+2 -38
@@ -16,11 +16,6 @@ namespace WixToolset.UI
16 {
17 public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/ui";
18
19 - /// <summary>
20 - /// Flag to prevent custom action symbols duplication.
21 - /// </summary>
22 - private bool customActionsAdded = false;
23 -
19 /// <summary>
20 /// Processes an element for the Compiler.
21 /// </summary>
@@ -91,40 +86,9 @@ namespace WixToolset.UI
86 }
87 else
88 {
89 + var platform = this.Context.Platform == Platform.ARM64 ? "A64" : this.Context.Platform.ToString();
90 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixUI, id);
95 -
96 - if (!customActionsAdded)
97 - {
98 - // Because these custom actions are "scheduled" via `DoAction` control events, we have to create the
99 - // custom action definitions here, so the `DoAction` references are static and the targets are
100 - // dynamically created to properly reflect the platform-specific DLL and avoid having duplicate ids
101 - // in the UI .wixlib.
102 - var platform = this.Context.Platform == Platform.ARM64 ? "A64" : this.Context.Platform.ToString();
103 - var source = $"WixUiCa_{platform}";
104 - this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.Binary, source);
105 -
106 - section.AddSymbol(new CustomActionSymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, "WixUIPrintEula"))
107 - {
108 - TargetType = CustomActionTargetType.Dll,
109 - Target = "PrintEula",
110 - SourceType = CustomActionSourceType.Binary,
111 - Source = source,
112 - IgnoreResult = true,
113 - ExecutionType = CustomActionExecutionType.Immediate,
114 - });
115 -
116 - section.AddSymbol(new CustomActionSymbol(sourceLineNumbers, new Identifier(AccessModifier.Global, "WixUIValidatePath"))
117 - {
118 - TargetType = CustomActionTargetType.Dll,
119 - Target = "ValidatePath",
120 - SourceType = CustomActionSourceType.Binary,
121 - Source = source,
122 - IgnoreResult = true,
123 - ExecutionType = CustomActionExecutionType.Immediate,
124 - });
125 -
126 - customActionsAdded = true;
127 - }
91 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixUI, $"{id}_{platform}");
92
93 if (installDirectory != null)
94 {
src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs
+2 -4
@@ -1,4 +1,4 @@
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. -->
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
4 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
@@ -11,9 +11,7 @@
11 <Control Id="DescriptionPerMachine" Type="Text" X="20" Y="202" Width="330" Height="31" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.AdvancedWelcomeEulaDlgDescriptionPerMachine)" ShowCondition="ALLUSERS" />
12 <Control Id="DescriptionPerUser" Type="Text" X="20" Y="202" Width="330" Height="31" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.AdvancedWelcomeEulaDlgDescriptionPerUser)" ShowCondition="NOT ALLUSERS" />
13 <Control Id="LicenseAcceptedCheckBox" Type="CheckBox" X="20" Y="180" Width="226" Height="18" CheckBoxValue="1" Property="LicenseAccepted" Text="!(loc.WelcomeEulaDlgLicenseAcceptedCheckBox)" />
14 - <Control Id="Print" Type="PushButton" X="88" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)">
15 - <Publish Event="DoAction" Value="WixUIPrintEula" />
16 - </Control>
14 + <Control Id="Print" Type="PushButton" X="88" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)" />
15 <Control Id="Advanced" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.AdvancedWelcomeEulaDlgAdvanced)" DisableCondition="LicenseAccepted &lt;&gt; &quot;1&quot;" EnableCondition="LicenseAccepted = &quot;1&quot;" />
16 <Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="!(loc.AdvancedWelcomeEulaDlgInstall)" Hidden="yes" DisableCondition="LicenseAccepted &lt;&gt; &quot;1&quot;" EnableCondition="LicenseAccepted = &quot;1&quot;" ShowCondition="ALLUSERS">
17 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
src/ext/UI/wixlib/Common_Platform.wxi
+9 -7
@@ -1,16 +1,18 @@
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. -->
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
4 <Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5 <?include ..\..\caDecor.wxi ?>
6
7 - <!--
8 - Custom actions to print EULA amd validate install directories are defined
9 - in WixUIExtension compiler extension, to handle platform-specific custom
10 - actions referred to from `DoAction` control events.
11 - -->
7 + <Fragment>
8 + <CustomAction Id="WixUIPrintEula$(Suffix)" BinaryRef="WixUiCa$(Suffix)" DllEntry="PrintEula" Return="ignore" Execute="immediate" />
9 + </Fragment>
10 +
11 + <Fragment>
12 + <CustomAction Id="WixUIValidatePath$(Suffix)" BinaryRef="WixUiCa$(Suffix)" DllEntry="ValidatePath" Return="ignore" Execute="immediate" />
13 + </Fragment>
14
15 <Fragment>
14 - <Binary Id="WixUiCa$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))uica.dll" />
16 + <Binary Id="WixUiCa$(Suffix)" SourceFile="!(bindpath.$(platform))uica.dll" />
17 </Fragment>
18 </Include>
src/ext/UI/wixlib/LicenseAgreementDlg.wxs
+2 -4
@@ -1,4 +1,4 @@
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. -->
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
4 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
@@ -11,9 +11,7 @@
11 <Control Id="Description" Type="Text" X="25" Y="23" Width="340" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.LicenseAgreementDlgDescription)" />
12 <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.LicenseAgreementDlgTitle)" />
13 <Control Id="LicenseAcceptedCheckBox" Type="CheckBox" X="20" Y="207" Width="330" Height="18" CheckBoxValue="1" Property="LicenseAccepted" Text="!(loc.LicenseAgreementDlgLicenseAcceptedCheckBox)" />
14 - <Control Id="Print" Type="PushButton" X="112" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)">
15 - <Publish Event="DoAction" Value="WixUIPrintEula" />
16 - </Control>
14 + <Control Id="Print" Type="PushButton" X="112" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)" />
15 <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
16 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" DisableCondition="LicenseAccepted &lt;&gt; &quot;1&quot;" EnableCondition="LicenseAccepted = &quot;1&quot;">
17 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
src/ext/UI/wixlib/WelcomeEulaDlg.wxs
+2 -4
@@ -1,4 +1,4 @@
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. -->
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
4 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
@@ -9,9 +9,7 @@
9 <Control Id="Title" Type="Text" X="130" Y="6" Width="225" Height="30" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeEulaDlgTitle)" />
10 <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
11 <Control Id="LicenseAcceptedCheckBox" Type="CheckBox" X="130" Y="207" Width="226" Height="18" CheckBoxValue="1" Property="LicenseAccepted" Text="!(loc.WelcomeEulaDlgLicenseAcceptedCheckBox)" />
12 - <Control Id="Print" Type="PushButton" X="88" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)">
13 - <Publish Event="DoAction" Value="WixUIPrintEula" />
14 - </Control>
12 + <Control Id="Print" Type="PushButton" X="88" Y="243" Width="56" Height="17" Text="!(loc.WixUIPrint)" />
13 <Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
14 <Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="!(loc.WelcomeEulaDlgInstall)" Hidden="yes" DisableCondition="LicenseAccepted &lt;&gt; &quot;1&quot;" EnableCondition="LicenseAccepted = &quot;1&quot;" ShowCondition="ALLUSERS">
15 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
src/ext/UI/wixlib/WixUI_Advanced.wxs
+11 -3
@@ -1,4 +1,4 @@
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. -->
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
4
@@ -67,7 +67,6 @@ Todo:
67 <DialogRef Id="WelcomeDlg" />
68
69 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
70 - <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="1" />
70 <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="2" Condition="WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
71
72 <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Advanced" Event="NewDialog" Value="InstallScopeDlg" Order="1" Condition="!(wix.WixUISupportPerMachine) AND !(wix.WixUISupportPerUser)" />
@@ -87,7 +86,6 @@ Todo:
86 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="InstallScopeDlg" Condition="!(wix.WixUISupportPerUser)" />
87 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="AdvancedWelcomeEulaDlg" Condition="NOT !(wix.WixUISupportPerUser)" />
88 <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" />
90 - <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
89 <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
90 <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&quot;1&quot;" />
91 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
@@ -117,4 +115,14 @@ Todo:
115 <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER" />
116 <UIRef Id="WixUI_Common" />
117 </Fragment>
118 +
119 + <?foreach WIXUIARCH in X86;X64;A64 ?>
120 + <Fragment>
121 + <UI Id="WixUI_Advanced_$(WIXUIARCH)">
122 + <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
123 + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="1" Condition="NOT WIXUI_DONTVALIDATEPATH" />
124 + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
125 + </UI>
126 + </Fragment>
127 + <?endforeach?>
128 </Wix>
src/ext/UI/wixlib/WixUI_FeatureTree.wxs
+9 -1
@@ -1,4 +1,4 @@
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. -->
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
4
@@ -65,4 +65,12 @@ Patch dialog sequence:
65
66 <UIRef Id="WixUI_Common" />
67 </Fragment>
68 +
69 + <?foreach WIXUIARCH in X86;X64;A64 ?>
70 + <Fragment>
71 + <UI Id="WixUI_FeatureTree_$(WIXUIARCH)">
72 + <Publish Dialog="LicenseAgreementDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
73 + </UI>
74 + </Fragment>
75 + <?endforeach?>
76 </Wix>
src/ext/UI/wixlib/WixUI_InstallDir.wxs
+11 -3
@@ -1,4 +1,4 @@
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. -->
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
4
@@ -41,7 +41,6 @@ Patch dialog sequence:
41 <DialogRef Id="ProgressDlg" />
42 <DialogRef Id="ResumeDlg" />
43 <DialogRef Id="UserExit" />
44 - <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3" />
44 <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
45
46 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
@@ -54,7 +53,6 @@ Patch dialog sequence:
53
54 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" />
55 <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" />
57 - <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
56 <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
57 <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&quot;1&quot;" />
58 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
@@ -74,4 +72,14 @@ Patch dialog sequence:
72
73 <UIRef Id="WixUI_Common" />
74 </Fragment>
75 +
76 + <?foreach WIXUIARCH in X86;X64;A64 ?>
77 + <Fragment>
78 + <UI Id="WixUI_InstallDir_$(WIXUIARCH)">
79 + <Publish Dialog="LicenseAgreementDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
80 + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH" />
81 + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
82 + </UI>
83 + </Fragment>
84 + <?endforeach?>
85 </Wix>
src/ext/UI/wixlib/WixUI_Minimal.wxs
+9 -1
@@ -1,4 +1,4 @@
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. -->
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
4
@@ -59,4 +59,12 @@ Patch dialog sequence:
59
60 <UIRef Id="WixUI_Common" />
61 </Fragment>
62 +
63 + <?foreach WIXUIARCH in X86;X64;A64 ?>
64 + <Fragment>
65 + <UI Id="WixUI_Minimal_$(WIXUIARCH)">
66 + <Publish Dialog="WelcomeEulaDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
67 + </UI>
68 + </Fragment>
69 + <?endforeach?>
70 </Wix>
src/ext/UI/wixlib/WixUI_Mondo.wxs
+11 -1
@@ -1,4 +1,4 @@
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. -->
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
4
@@ -74,4 +74,14 @@ Patch dialog sequence:
74
75 <UIRef Id="WixUI_Common" />
76 </Fragment>
77 +
78 + <?foreach WIXUIARCH in X86;X64;A64 ?>
79 + <Fragment>
80 + <UI Id="WixUI_Mondo_$(WIXUIARCH)">
81 + <Publish Dialog="LicenseAgreementDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
82 + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH" />
83 + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
84 + </UI>
85 + </Fragment>
86 + <?endforeach?>
87 </Wix>
src/ext/UI/wixlib/ui.wixproj
+7 -9
@@ -1,12 +1,10 @@
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 <Project Sdk="WixToolset.Sdk">
3 -
3 <PropertyGroup>
4 <OutputType>Library</OutputType>
5 <BindFiles>true</BindFiles>
6 <Cultures>en-us</Cultures>
7 </PropertyGroup>
9 -
8 <PropertyGroup>
9 <DefineConstants>
10 $(DefineConstants);
@@ -19,20 +17,20 @@
17 upIco=$(MSBuildProjectDirectory)\Bitmaps\up.ico;
18 </DefineConstants>
19 </PropertyGroup>
22 -
20 <ItemGroup>
24 - <BindInputPaths Include="$(OutputPath)x86" BindName='x86' />
25 - <BindInputPaths Include="$(OutputPath)x64" BindName='x64' />
26 - <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' />
21 + <BindInputPaths Include="$(OutputPath)x86" BindName="x86" />
22 + <BindInputPaths Include="$(OutputPath)x64" BindName="x64" />
23 + <BindInputPaths Include="$(OutputPath)arm64" BindName="arm64" />
24 + </ItemGroup>
25 + <ItemGroup>
26 + <Content Include="Common_Platform.wxi" />
27 </ItemGroup>
28 -
28 <ItemGroup>
29 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x86" />
30 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x64" />
31 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=ARM64" />
32 </ItemGroup>
34 -
33 <ItemGroup>
34 <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
35 </ItemGroup>
38 -</Project>
36 +</Project>
\ No newline at end of file