aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2022-11-21 16:57:23 -0500
committerBob Arnson <github@bobs.org>2022-12-06 15:16:20 -0500
commitc4ffb9967e4e4f7d67f5925208e3e0a885e903c5 (patch)
tree3f34ca158b1bc39d5b6aaee2a4bb2f93dae0d365
parent0af946e794ec85801dc542edd9905f9e9e18e7ed (diff)
downloadwix-c4ffb9967e4e4f7d67f5925208e3e0a885e903c5.tar.gz
wix-c4ffb9967e4e4f7d67f5925208e3e0a885e903c5.tar.bz2
wix-c4ffb9967e4e4f7d67f5925208e3e0a885e903c5.zip
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.
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs80
-rw-r--r--src/ext/UI/wixext/UICompiler.cs40
-rw-r--r--src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs6
-rw-r--r--src/ext/UI/wixlib/Common_Platform.wxi16
-rw-r--r--src/ext/UI/wixlib/LicenseAgreementDlg.wxs6
-rw-r--r--src/ext/UI/wixlib/WelcomeEulaDlg.wxs6
-rw-r--r--src/ext/UI/wixlib/WixUI_Advanced.wxs14
-rw-r--r--src/ext/UI/wixlib/WixUI_FeatureTree.wxs10
-rw-r--r--src/ext/UI/wixlib/WixUI_InstallDir.wxs14
-rw-r--r--src/ext/UI/wixlib/WixUI_Minimal.wxs10
-rw-r--r--src/ext/UI/wixlib/WixUI_Mondo.wxs12
-rw-r--r--src/ext/UI/wixlib/ui.wixproj16
12 files changed, 133 insertions, 97 deletions
diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
index 4fd203c5..c637b5dd 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -20,7 +20,7 @@ namespace WixToolsetTest.UI
20 var bindFolder = TestData.Get(@"TestData\data"); 20 var bindFolder = TestData.Get(@"TestData\data");
21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
22 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")); 24 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
25 WixAssert.CompareLineByLine(new[] 25 WixAssert.CompareLineByLine(new[]
26 { 26 {
@@ -38,9 +38,15 @@ namespace WixToolsetTest.UI
38 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t", 38 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
39 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 39 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
40 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 40 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
41 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", 41 "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
42 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t", 42 "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
43 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
44 } 50 }
45 51
46 [Fact] 52 [Fact]
@@ -50,7 +56,7 @@ namespace WixToolsetTest.UI
50 var bindFolder = TestData.Get(@"TestData\data"); 56 var bindFolder = TestData.Get(@"TestData\data");
51 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 57 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
52 58
53 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction"); 59 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent");
54 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 60 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
55 WixAssert.CompareLineByLine(new[] 61 WixAssert.CompareLineByLine(new[]
56 { 62 {
@@ -68,9 +74,15 @@ namespace WixToolsetTest.UI
68 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t", 74 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
69 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 75 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
70 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 76 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
71 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X64\tPrintEula\t", 77 "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
72 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X64\tValidatePath\t", 78 "CustomAction:WixUIValidatePath_X64\t65\tWixUiCa_X64\tValidatePath\t",
73 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
74 } 86 }
75 87
76 [Fact] 88 [Fact]
@@ -80,7 +92,7 @@ namespace WixToolsetTest.UI
80 var bindFolder = TestData.Get(@"TestData\data"); 92 var bindFolder = TestData.Get(@"TestData\data");
81 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 93 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
82 94
83 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction"); 95 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent");
84 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 96 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
85 WixAssert.CompareLineByLine(new[] 97 WixAssert.CompareLineByLine(new[]
86 { 98 {
@@ -98,9 +110,15 @@ namespace WixToolsetTest.UI
98 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t", 110 "CustomAction:WixSetDefaultPerUserFolder\t51\tWixPerUserFolder\t[LocalAppDataFolder]Apps\\[ApplicationFolderName]\t",
99 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 111 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
100 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 112 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
101 "CustomAction:WixUIPrintEula\t65\tWixUiCa_A64\tPrintEula\t", 113 "CustomAction:WixUIPrintEula_A64\t65\tWixUiCa_A64\tPrintEula\t",
102 "CustomAction:WixUIValidatePath\t65\tWixUiCa_A64\tValidatePath\t", 114 "CustomAction:WixUIValidatePath_A64\t65\tWixUiCa_A64\tValidatePath\t",
103 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
104 } 122 }
105 123
106 [Fact] 124 [Fact]
@@ -110,7 +128,7 @@ namespace WixToolsetTest.UI
110 var bindFolder = TestData.Get(@"TestData\data"); 128 var bindFolder = TestData.Get(@"TestData\data");
111 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 129 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
112 130
113 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction"); 131 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent");
114 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 132 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
115 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 133 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
116 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t"))); 134 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
@@ -122,13 +140,16 @@ namespace WixToolsetTest.UI
122 "Binary:WixUI_Bmp_Up\t[Binary data]", 140 "Binary:WixUI_Bmp_Up\t[Binary data]",
123 "Binary:WixUI_Ico_Exclam\t[Binary data]", 141 "Binary:WixUI_Ico_Exclam\t[Binary data]",
124 "Binary:WixUI_Ico_Info\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]",
126 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 144 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
127 WixAssert.CompareLineByLine(new[] 145 WixAssert.CompareLineByLine(new[]
128 { 146 {
129 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", 147 "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
130 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
131 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
132 } 153 }
133 154
134 [Fact] 155 [Fact]
@@ -138,7 +159,7 @@ namespace WixToolsetTest.UI
138 var bindFolder = TestData.Get(@"TestData\data"); 159 var bindFolder = TestData.Get(@"TestData\data");
139 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 160 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
140 161
141 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property"); 162 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent");
142 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 163 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
143 WixAssert.CompareLineByLine(new[] 164 WixAssert.CompareLineByLine(new[]
144 { 165 {
@@ -152,13 +173,19 @@ namespace WixToolsetTest.UI
152 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 173 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
153 WixAssert.CompareLineByLine(new[] 174 WixAssert.CompareLineByLine(new[]
154 { 175 {
155 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", 176 "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
156 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t", 177 "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
157 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 178 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
158 WixAssert.CompareLineByLine(new[] 179 WixAssert.CompareLineByLine(new[]
159 { 180 {
160 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", 181 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
161 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); 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());
162 } 189 }
163 190
164 [Fact] 191 [Fact]
@@ -168,7 +195,7 @@ namespace WixToolsetTest.UI
168 var bindFolder = TestData.Get(@"TestData\data"); 195 var bindFolder = TestData.Get(@"TestData\data");
169 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 196 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
170 197
171 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction"); 198 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent");
172 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t")); 199 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
173 WixAssert.CompareLineByLine(new[] 200 WixAssert.CompareLineByLine(new[]
174 { 201 {
@@ -182,9 +209,12 @@ namespace WixToolsetTest.UI
182 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 209 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
183 WixAssert.CompareLineByLine(new[] 210 WixAssert.CompareLineByLine(new[]
184 { 211 {
185 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", 212 "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
186 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t",
187 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
188 } 218 }
189 219
190 [Fact] 220 [Fact]
@@ -232,7 +262,7 @@ namespace WixToolsetTest.UI
232 var bindFolder = TestData.Get(@"TestData\data"); 262 var bindFolder = TestData.Get(@"TestData\data");
233 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 263 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
234 264
235 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction"); 265 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent");
236 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 266 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
237 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 267 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
238 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t")); 268 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
@@ -248,9 +278,15 @@ namespace WixToolsetTest.UI
248 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 278 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
249 WixAssert.CompareLineByLine(new[] 279 WixAssert.CompareLineByLine(new[]
250 { 280 {
251 "CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\tPrintEula\t", 281 "CustomAction:WixUIPrintEula_X86\t65\tWixUiCa_X86\tPrintEula\t",
252 "CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\tValidatePath\t", 282 "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
253 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 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());
254 } 290 }
255 291
256 [Fact] 292 [Fact]
diff --git a/src/ext/UI/wixext/UICompiler.cs b/src/ext/UI/wixext/UICompiler.cs
index 6fdb5bd9..8b527454 100644
--- a/src/ext/UI/wixext/UICompiler.cs
+++ b/src/ext/UI/wixext/UICompiler.cs
@@ -17,11 +17,6 @@ namespace WixToolset.UI
17 public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/ui"; 17 public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/ui";
18 18
19 /// <summary> 19 /// <summary>
20 /// Flag to prevent custom action symbols duplication.
21 /// </summary>
22 private bool customActionsAdded = false;
23
24 /// <summary>
25 /// Processes an element for the Compiler. 20 /// Processes an element for the Compiler.
26 /// </summary> 21 /// </summary>
27 /// <param name="sourceLineNumbers">Source line number for the parent element.</param> 22 /// <param name="sourceLineNumbers">Source line number for the parent element.</param>
@@ -91,40 +86,9 @@ namespace WixToolset.UI
91 } 86 }
92 else 87 else
93 { 88 {
89 var platform = this.Context.Platform == Platform.ARM64 ? "A64" : this.Context.Platform.ToString();
94 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixUI, id); 90 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixUI, id);
95 91 this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, SymbolDefinitions.WixUI, $"{id}_{platform}");
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 }
128 92
129 if (installDirectory != null) 93 if (installDirectory != null)
130 { 94 {
diff --git a/src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs b/src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs
index 96b22f1e..8b950ec1 100644
--- a/src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs
+++ b/src/ext/UI/wixlib/AdvancedWelcomeEulaDlg.wxs
@@ -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 2
3 3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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" /> 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" /> 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)" /> 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)"> 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>
17 <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;" /> 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;" />
18 <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"> 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">
19 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" /> 17 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
diff --git a/src/ext/UI/wixlib/Common_Platform.wxi b/src/ext/UI/wixlib/Common_Platform.wxi
index 0c03629c..cd050e06 100644
--- a/src/ext/UI/wixlib/Common_Platform.wxi
+++ b/src/ext/UI/wixlib/Common_Platform.wxi
@@ -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 2
3 3
4<Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 4<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5 <?include ..\..\caDecor.wxi ?> 5 <?include ..\..\caDecor.wxi ?>
6 6
7 <!-- 7 <Fragment>
8 Custom actions to print EULA amd validate install directories are defined 8 <CustomAction Id="WixUIPrintEula$(Suffix)" BinaryRef="WixUiCa$(Suffix)" DllEntry="PrintEula" Return="ignore" Execute="immediate" />
9 in WixUIExtension compiler extension, to handle platform-specific custom 9 </Fragment>
10 actions referred to from `DoAction` control events. 10
11 --> 11 <Fragment>
12 <CustomAction Id="WixUIValidatePath$(Suffix)" BinaryRef="WixUiCa$(Suffix)" DllEntry="ValidatePath" Return="ignore" Execute="immediate" />
13 </Fragment>
12 14
13 <Fragment> 15 <Fragment>
14 <Binary Id="WixUiCa$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))uica.dll" /> 16 <Binary Id="WixUiCa$(Suffix)" SourceFile="!(bindpath.$(platform))uica.dll" />
15 </Fragment> 17 </Fragment>
16</Include> 18</Include>
diff --git a/src/ext/UI/wixlib/LicenseAgreementDlg.wxs b/src/ext/UI/wixlib/LicenseAgreementDlg.wxs
index aaa0611d..a072cf6b 100644
--- a/src/ext/UI/wixlib/LicenseAgreementDlg.wxs
+++ b/src/ext/UI/wixlib/LicenseAgreementDlg.wxs
@@ -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 2
3 3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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)" /> 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)" /> 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)" /> 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)"> 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>
17 <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" /> 15 <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
18 <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;"> 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;">
19 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" /> 17 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
diff --git a/src/ext/UI/wixlib/WelcomeEulaDlg.wxs b/src/ext/UI/wixlib/WelcomeEulaDlg.wxs
index 38868bcd..4b389ac6 100644
--- a/src/ext/UI/wixlib/WelcomeEulaDlg.wxs
+++ b/src/ext/UI/wixlib/WelcomeEulaDlg.wxs
@@ -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 2
3 3
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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)" /> 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" /> 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)" /> 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)"> 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>
15 <Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" /> 13 <Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
16 <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"> 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">
17 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" /> 15 <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg" Condition="!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1" />
diff --git a/src/ext/UI/wixlib/WixUI_Advanced.wxs b/src/ext/UI/wixlib/WixUI_Advanced.wxs
index 2ea7a97d..1aabbf96 100644
--- a/src/ext/UI/wixlib/WixUI_Advanced.wxs
+++ b/src/ext/UI/wixlib/WixUI_Advanced.wxs
@@ -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 2
3 3
4 4
@@ -67,7 +67,6 @@ Todo:
67 <DialogRef Id="WelcomeDlg" /> 67 <DialogRef Id="WelcomeDlg" />
68 68
69 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" /> 69 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
70 <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="1" />
71 <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="2" Condition="WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" /> 70 <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="2" Condition="WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
72 71
73 <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Advanced" Event="NewDialog" Value="InstallScopeDlg" Order="1" Condition="!(wix.WixUISupportPerMachine) AND !(wix.WixUISupportPerUser)" /> 72 <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Advanced" Event="NewDialog" Value="InstallScopeDlg" Order="1" Condition="!(wix.WixUISupportPerMachine) AND !(wix.WixUISupportPerUser)" />
@@ -87,7 +86,6 @@ Todo:
87 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="InstallScopeDlg" Condition="!(wix.WixUISupportPerUser)" /> 86 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="InstallScopeDlg" Condition="!(wix.WixUISupportPerUser)" />
88 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="AdvancedWelcomeEulaDlg" Condition="NOT !(wix.WixUISupportPerUser)" /> 87 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="AdvancedWelcomeEulaDlg" Condition="NOT !(wix.WixUISupportPerUser)" />
89 <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" /> 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" />
91 <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" /> 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;" />
92 <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&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;" />
93 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" /> 91 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
@@ -117,4 +115,14 @@ Todo:
117 <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER" /> 115 <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER" />
118 <UIRef Id="WixUI_Common" /> 116 <UIRef Id="WixUI_Common" />
119 </Fragment> 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?>
120</Wix> 128</Wix>
diff --git a/src/ext/UI/wixlib/WixUI_FeatureTree.wxs b/src/ext/UI/wixlib/WixUI_FeatureTree.wxs
index 6f36bdb8..e50839d3 100644
--- a/src/ext/UI/wixlib/WixUI_FeatureTree.wxs
+++ b/src/ext/UI/wixlib/WixUI_FeatureTree.wxs
@@ -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 2
3 3
4 4
@@ -65,4 +65,12 @@ Patch dialog sequence:
65 65
66 <UIRef Id="WixUI_Common" /> 66 <UIRef Id="WixUI_Common" />
67 </Fragment> 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?>
68</Wix> 76</Wix>
diff --git a/src/ext/UI/wixlib/WixUI_InstallDir.wxs b/src/ext/UI/wixlib/WixUI_InstallDir.wxs
index f8eb3b11..10b32ce8 100644
--- a/src/ext/UI/wixlib/WixUI_InstallDir.wxs
+++ b/src/ext/UI/wixlib/WixUI_InstallDir.wxs
@@ -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 2
3 3
4 4
@@ -41,7 +41,6 @@ Patch dialog sequence:
41 <DialogRef Id="ProgressDlg" /> 41 <DialogRef Id="ProgressDlg" />
42 <DialogRef Id="ResumeDlg" /> 42 <DialogRef Id="ResumeDlg" />
43 <DialogRef Id="UserExit" /> 43 <DialogRef Id="UserExit" />
44 <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3" />
45 <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" /> 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;" />
46 45
47 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" /> 46 <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
@@ -54,7 +53,6 @@ Patch dialog sequence:
54 53
55 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" /> 54 <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" />
56 <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" /> 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" />
58 <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" /> 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;" />
59 <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&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;" />
60 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" /> 58 <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
@@ -74,4 +72,14 @@ Patch dialog sequence:
74 72
75 <UIRef Id="WixUI_Common" /> 73 <UIRef Id="WixUI_Common" />
76 </Fragment> 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?>
77</Wix> 85</Wix>
diff --git a/src/ext/UI/wixlib/WixUI_Minimal.wxs b/src/ext/UI/wixlib/WixUI_Minimal.wxs
index 8ac9751f..6d1709c5 100644
--- a/src/ext/UI/wixlib/WixUI_Minimal.wxs
+++ b/src/ext/UI/wixlib/WixUI_Minimal.wxs
@@ -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 2
3 3
4 4
@@ -59,4 +59,12 @@ Patch dialog sequence:
59 59
60 <UIRef Id="WixUI_Common" /> 60 <UIRef Id="WixUI_Common" />
61 </Fragment> 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?>
62</Wix> 70</Wix>
diff --git a/src/ext/UI/wixlib/WixUI_Mondo.wxs b/src/ext/UI/wixlib/WixUI_Mondo.wxs
index 6a4b15b1..92890572 100644
--- a/src/ext/UI/wixlib/WixUI_Mondo.wxs
+++ b/src/ext/UI/wixlib/WixUI_Mondo.wxs
@@ -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 2
3 3
4 4
@@ -74,4 +74,14 @@ Patch dialog sequence:
74 74
75 <UIRef Id="WixUI_Common" /> 75 <UIRef Id="WixUI_Common" />
76 </Fragment> 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?>
77</Wix> 87</Wix>
diff --git a/src/ext/UI/wixlib/ui.wixproj b/src/ext/UI/wixlib/ui.wixproj
index d7c6e638..ebac0c79 100644
--- a/src/ext/UI/wixlib/ui.wixproj
+++ b/src/ext/UI/wixlib/ui.wixproj
@@ -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. --> 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"> 2<Project Sdk="WixToolset.Sdk">
3
4 <PropertyGroup> 3 <PropertyGroup>
5 <OutputType>Library</OutputType> 4 <OutputType>Library</OutputType>
6 <BindFiles>true</BindFiles> 5 <BindFiles>true</BindFiles>
7 <Cultures>en-us</Cultures> 6 <Cultures>en-us</Cultures>
8 </PropertyGroup> 7 </PropertyGroup>
9
10 <PropertyGroup> 8 <PropertyGroup>
11 <DefineConstants> 9 <DefineConstants>
12 $(DefineConstants); 10 $(DefineConstants);
@@ -19,20 +17,20 @@
19 upIco=$(MSBuildProjectDirectory)\Bitmaps\up.ico; 17 upIco=$(MSBuildProjectDirectory)\Bitmaps\up.ico;
20 </DefineConstants> 18 </DefineConstants>
21 </PropertyGroup> 19 </PropertyGroup>
22
23 <ItemGroup> 20 <ItemGroup>
24 <BindInputPaths Include="$(OutputPath)x86" BindName='x86' /> 21 <BindInputPaths Include="$(OutputPath)x86" BindName="x86" />
25 <BindInputPaths Include="$(OutputPath)x64" BindName='x64' /> 22 <BindInputPaths Include="$(OutputPath)x64" BindName="x64" />
26 <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' /> 23 <BindInputPaths Include="$(OutputPath)arm64" BindName="arm64" />
24 </ItemGroup>
25 <ItemGroup>
26 <Content Include="Common_Platform.wxi" />
27 </ItemGroup> 27 </ItemGroup>
28
29 <ItemGroup> 28 <ItemGroup>
30 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x86" /> 29 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x86" />
31 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x64" /> 30 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=x64" />
32 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=ARM64" /> 31 <ProjectReference Include="..\ca\uica.vcxproj" Properties="Platform=ARM64" />
33 </ItemGroup> 32 </ItemGroup>
34
35 <ItemGroup> 33 <ItemGroup>
36 <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" /> 34 <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
37 </ItemGroup> 35 </ItemGroup>
38</Project> 36</Project> \ No newline at end of file