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 <> "1"" EnableCondition="LicenseAccepted = "1"" />
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 <> "1"" EnableCondition="LicenseAccepted = "1"" 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 <> "1"" EnableCondition="LicenseAccepted = "1"">
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 <> "1"" EnableCondition="LicenseAccepted = "1"" 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<>"1"" />
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<>"1"" />
90
<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"" />
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<>"1"" />
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<>"1"" />
57
<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"" />
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