aboutsummaryrefslogtreecommitdiff
path: root/src/ext/UI
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext/UI')
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs89
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj7
-rw-r--r--src/ext/UI/ui.cmd42
-rw-r--r--src/ext/UI/ui_t.proj17
4 files changed, 66 insertions, 89 deletions
diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
index bb20f087..e06feac7 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -4,15 +4,16 @@ namespace WixToolsetTest.UI
4{ 4{
5 using System.IO; 5 using System.IO;
6 using System.Linq; 6 using System.Linq;
7 using WixInternal.Core.TestPackage; 7 using Microsoft.VisualStudio.TestTools.UnitTesting;
8 using WixInternal.TestSupport; 8 using WixInternal.Core.MSTestPackage;
9 using WixInternal.MSTestSupport;
9 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
10 using WixToolset.UI; 11 using WixToolset.UI;
11 using Xunit;
12 12
13 [TestClass]
13 public class UIExtensionFixture 14 public class UIExtensionFixture
14 { 15 {
15 [Fact] 16 [TestMethod]
16 public void CanBuildUsingWixUIAdvanced() 17 public void CanBuildUsingWixUIAdvanced()
17 { 18 {
18 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 19 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -20,7 +21,7 @@ namespace WixToolsetTest.UI
20 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
21 22
22 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 23 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
23 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 24 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
24 WixAssert.CompareLineByLine(new[] 25 WixAssert.CompareLineByLine(new[]
25 { 26 {
26 "Binary:WixUI_Bmp_Banner\t[Binary data]", 27 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -37,7 +38,7 @@ namespace WixToolsetTest.UI
37 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 38 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
38 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 39 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
39 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 40 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
40 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 41 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
41 WixAssert.CompareLineByLine(new[] 42 WixAssert.CompareLineByLine(new[]
42 { 43 {
43 "InstallUISequence:AdvancedWelcomeEulaDlg\tNOT Installed\t1297", 44 "InstallUISequence:AdvancedWelcomeEulaDlg\tNOT Installed\t1297",
@@ -45,7 +46,7 @@ namespace WixToolsetTest.UI
45 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 46 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
46 } 47 }
47 48
48 [Fact] 49 [TestMethod]
49 public void CanBuildUsingWixUIAdvancedX64() 50 public void CanBuildUsingWixUIAdvancedX64()
50 { 51 {
51 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 52 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -53,7 +54,7 @@ namespace WixToolsetTest.UI
53 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 54 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
54 55
55 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 56 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
56 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 57 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
57 WixAssert.CompareLineByLine(new[] 58 WixAssert.CompareLineByLine(new[]
58 { 59 {
59 "Binary:WixUI_Bmp_Banner\t[Binary data]", 60 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -70,10 +71,10 @@ namespace WixToolsetTest.UI
70 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 71 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
71 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 72 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
72 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 73 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
73 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 74 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
74 } 75 }
75 76
76 [Fact] 77 [TestMethod]
77 public void CanBuildUsingWixUIAdvancedARM64() 78 public void CanBuildUsingWixUIAdvancedARM64()
78 { 79 {
79 var folder = TestData.Get(@"TestData", "WixUI_Advanced"); 80 var folder = TestData.Get(@"TestData", "WixUI_Advanced");
@@ -81,7 +82,7 @@ namespace WixToolsetTest.UI
81 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 82 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
82 83
83 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 84 var results = build.BuildAndQuery(BuildARM64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
84 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t")); 85 WixAssert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
85 WixAssert.CompareLineByLine(new[] 86 WixAssert.CompareLineByLine(new[]
86 { 87 {
87 "Binary:WixUI_Bmp_Banner\t[Binary data]", 88 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -98,10 +99,10 @@ namespace WixToolsetTest.UI
98 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t", 99 "CustomAction:WixSetPerMachineFolder\t51\tAPPLICATIONFOLDER\t[WixPerMachineFolder]\t",
99 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t", 100 "CustomAction:WixSetPerUserFolder\t51\tAPPLICATIONFOLDER\t[WixPerUserFolder]\t",
100 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 101 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
101 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray()); 102 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).ToArray());
102 } 103 }
103 104
104 [Fact] 105 [TestMethod]
105 public void CanBuildUsingWixUIFeatureTree() 106 public void CanBuildUsingWixUIFeatureTree()
106 { 107 {
107 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree"); 108 var folder = TestData.Get(@"TestData", "WixUI_FeatureTree");
@@ -109,9 +110,9 @@ namespace WixToolsetTest.UI
109 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 110 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
110 111
111 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 112 var results = build.BuildAndQuery(BuildX64, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
112 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 113 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
113 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 114 WixAssert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
114 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t"))); 115 WixAssert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
115 WixAssert.CompareLineByLine(new[] 116 WixAssert.CompareLineByLine(new[]
116 { 117 {
117 "Binary:WixUI_Bmp_Banner\t[Binary data]", 118 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -125,14 +126,14 @@ namespace WixToolsetTest.UI
125 { 126 {
126 "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t", 127 "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t",
127 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 128 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
128 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction"))); 129 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")));
129 WixAssert.CompareLineByLine(new[] 130 WixAssert.CompareLineByLine(new[]
130 { 131 {
131 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297", 132 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
132 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 133 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
133 } 134 }
134 135
135 [Fact] 136 [TestMethod]
136 public void CanBuildWithWixUIInstallDirWithCustomizedEula() 137 public void CanBuildWithWixUIInstallDirWithCustomizedEula()
137 { 138 {
138 var folder = TestData.Get(@"TestData", "WixUI_InstallDir"); 139 var folder = TestData.Get(@"TestData", "WixUI_InstallDir");
@@ -140,8 +141,8 @@ namespace WixToolsetTest.UI
140 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 141 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
141 142
142 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 143 var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
143 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 144 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
144 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 145 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
145 WixAssert.CompareLineByLine(new[] 146 WixAssert.CompareLineByLine(new[]
146 { 147 {
147 "Binary:WixUI_Bmp_Banner\t[Binary data]", 148 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -171,7 +172,7 @@ namespace WixToolsetTest.UI
171 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 172 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
172 } 173 }
173 174
174 [Fact] 175 [TestMethod]
175 public void CanBuildUsingWixUIMinimal() 176 public void CanBuildUsingWixUIMinimal()
176 { 177 {
177 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 178 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -179,7 +180,7 @@ namespace WixToolsetTest.UI
179 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 180 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
180 181
181 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 182 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
182 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t")); 183 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
183 WixAssert.CompareLineByLine(new[] 184 WixAssert.CompareLineByLine(new[]
184 { 185 {
185 "Binary:WixUI_Bmp_Banner\t[Binary data]", 186 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -189,8 +190,8 @@ namespace WixToolsetTest.UI
189 "Binary:WixUI_Ico_Exclam\t[Binary data]", 190 "Binary:WixUI_Ico_Exclam\t[Binary data]",
190 "Binary:WixUI_Ico_Info\t[Binary data]", 191 "Binary:WixUI_Ico_Info\t[Binary data]",
191 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 192 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
192 Assert.Empty(results.Where(r => r.StartsWith("CustomAction:"))); 193 WixAssert.Empty(results.Where(r => r.StartsWith("CustomAction:")));
193 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction"))); 194 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")));
194 WixAssert.CompareLineByLine(new[] 195 WixAssert.CompareLineByLine(new[]
195 { 196 {
196 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1296", 197 "InstallUISequence:WelcomeDlg\tInstalled AND PATCH\t1296",
@@ -198,7 +199,7 @@ namespace WixToolsetTest.UI
198 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 199 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
199 } 200 }
200 201
201 [Fact] 202 [TestMethod]
202 public void CanBuildUsingWixUIMinimalInKazakh() 203 public void CanBuildUsingWixUIMinimalInKazakh()
203 { 204 {
204 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 205 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -207,10 +208,10 @@ namespace WixToolsetTest.UI
207 208
208 var results = build.BuildAndQuery(BuildInKazakh, "Dialog"); 209 var results = build.BuildAndQuery(BuildInKazakh, "Dialog");
209 var welcomeDlg = results.Where(r => r.StartsWith("Dialog:WelcomeDlg\t")).Select(r => r.Split('\t')).Single(); 210 var welcomeDlg = results.Where(r => r.StartsWith("Dialog:WelcomeDlg\t")).Select(r => r.Split('\t')).Single();
210 Assert.Equal("[ProductName] бағдарламасын орнату", welcomeDlg[6]); 211 Assert.AreEqual("[ProductName] бағдарламасын орнату", welcomeDlg[6]);
211 } 212 }
212 213
213 [Fact] 214 [TestMethod]
214 public void CanBuildUsingWixUIMinimalAndReadPdb() 215 public void CanBuildUsingWixUIMinimalAndReadPdb()
215 { 216 {
216 var folder = TestData.Get(@"TestData", "WixUI_Minimal"); 217 var folder = TestData.Get(@"TestData", "WixUI_Minimal");
@@ -236,7 +237,7 @@ namespace WixToolsetTest.UI
236 } 237 }
237 } 238 }
238 239
239 [Fact] 240 [TestMethod]
240 public void CanBuildUsingWixUIMondo() 241 public void CanBuildUsingWixUIMondo()
241 { 242 {
242 var folder = TestData.Get(@"TestData", "WixUI_Mondo"); 243 var folder = TestData.Get(@"TestData", "WixUI_Mondo");
@@ -244,9 +245,9 @@ namespace WixToolsetTest.UI
244 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 245 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
245 246
246 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence"); 247 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "ControlEvent", "InstallUISequence");
247 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t")); 248 WixAssert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
248 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t")); 249 WixAssert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
249 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t")); 250 WixAssert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
250 WixAssert.CompareLineByLine(new[] 251 WixAssert.CompareLineByLine(new[]
251 { 252 {
252 "Binary:WixUI_Bmp_Banner\t[Binary data]", 253 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -271,7 +272,7 @@ namespace WixToolsetTest.UI
271 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 272 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
272 } 273 }
273 274
274 [Fact] 275 [TestMethod]
275 public void CanBuildUsingWixUIMondoLocalized() 276 public void CanBuildUsingWixUIMondoLocalized()
276 { 277 {
277 var folder = TestData.Get(@"TestData", "WixUI_Mondo"); 278 var folder = TestData.Get(@"TestData", "WixUI_Mondo");
@@ -285,7 +286,7 @@ namespace WixToolsetTest.UI
285 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray()); 286 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray());
286 } 287 }
287 288
288 [Fact] 289 [TestMethod]
289 public void CanBuildWithInstallDirAndRemovedDialog() 290 public void CanBuildWithInstallDirAndRemovedDialog()
290 { 291 {
291 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense"); 292 var folder = TestData.Get(@"TestData", "InstallDir_NoLicense");
@@ -293,7 +294,7 @@ namespace WixToolsetTest.UI
293 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 294 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
294 295
295 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 296 var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
296 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 297 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
297 WixAssert.CompareLineByLine(new[] 298 WixAssert.CompareLineByLine(new[]
298 { 299 {
299 "Binary:WixUI_Bmp_Banner\t[Binary data]", 300 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -318,7 +319,7 @@ namespace WixToolsetTest.UI
318 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\t1\t2", 319 "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\t1\t2",
319 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 320 }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
320 321
321 Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray()); 322 WixAssert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray());
322 323
323 WixAssert.CompareLineByLine(new[] 324 WixAssert.CompareLineByLine(new[]
324 { 325 {
@@ -326,7 +327,7 @@ namespace WixToolsetTest.UI
326 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 327 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
327 } 328 }
328 329
329 [Fact] 330 [TestMethod]
330 public void CanBuildWithInstallDirAndAddedDialog() 331 public void CanBuildWithInstallDirAndAddedDialog()
331 { 332 {
332 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg"); 333 var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg");
@@ -334,7 +335,7 @@ namespace WixToolsetTest.UI
334 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 335 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
335 336
336 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence"); 337 var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent", "InstallUISequence");
337 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t")); 338 WixAssert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
338 WixAssert.CompareLineByLine(new[] 339 WixAssert.CompareLineByLine(new[]
339 { 340 {
340 "Binary:WixUI_Bmp_Banner\t[Binary data]", 341 "Binary:WixUI_Bmp_Banner\t[Binary data]",
@@ -344,23 +345,23 @@ namespace WixToolsetTest.UI
344 "Binary:WixUI_Ico_Exclam\t[Binary data]", 345 "Binary:WixUI_Ico_Exclam\t[Binary data]",
345 "Binary:WixUI_Ico_Info\t[Binary data]", 346 "Binary:WixUI_Ico_Info\t[Binary data]",
346 }, results.Where(r => r.StartsWith("Binary:")).ToArray()); 347 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
347 Assert.Empty(results.Where(r => r.StartsWith("CustomAction:")).ToArray()); 348 WixAssert.Empty(results.Where(r => r.StartsWith("CustomAction:")).ToArray());
348 WixAssert.CompareLineByLine(new[] 349 WixAssert.CompareLineByLine(new[]
349 { 350 {
350 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER", 351 "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
351 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray()); 352 }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray());
352 Assert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray()); 353 WixAssert.Empty(results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
353 WixAssert.CompareLineByLine(new[] 354 WixAssert.CompareLineByLine(new[]
354 { 355 {
355 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297", 356 "InstallUISequence:WelcomeDlg\tNOT Installed OR PATCH\t1297",
356 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray()); 357 }, results.Where(r => r.StartsWith("InstallUISequence:AdvancedWelcome") || r.StartsWith("InstallUISequence:Welcome")).ToArray());
357 358
358 Assert.Equal(10, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count()); 359 Assert.AreEqual(10, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count());
359 Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count()); 360 Assert.AreEqual(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count());
360 Assert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg"))); 361 WixAssert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg")));
361 } 362 }
362 363
363 [Fact] 364 [TestMethod]
364 public void CannotBuildWithV3LikeUIRef() 365 public void CannotBuildWithV3LikeUIRef()
365 { 366 {
366 var folder = TestData.Get(@"TestData", "InvalidUIRef"); 367 var folder = TestData.Get(@"TestData", "InvalidUIRef");
@@ -381,7 +382,7 @@ namespace WixToolsetTest.UI
381 382
382 var results = WixRunner.Execute(args); 383 var results = WixRunner.Execute(args);
383 var message = results.Messages.Single(); 384 var message = results.Messages.Single();
384 Assert.Equal("The identifier 'WixUI:WixUI_Mondo' is inaccessible due to its protection level.", message.ToString()); 385 Assert.AreEqual("The identifier 'WixUI:WixUI_Mondo' is inaccessible due to its protection level.", message.ToString());
385 } 386 }
386 } 387 }
387 388
diff --git a/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj b/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
index 675f14f8..132920c5 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
+++ b/src/ext/UI/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- 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<!-- 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. -->
3 3
4<Project Sdk="Microsoft.NET.Sdk"> 4<Project Sdk="MSTest.Sdk">
5 <PropertyGroup> 5 <PropertyGroup>
6 <TargetFramework>net6.0</TargetFramework> 6 <TargetFramework>net6.0</TargetFramework>
7 <IsWixTestProject>true</IsWixTestProject> 7 <IsWixMSTestProject>true</IsWixMSTestProject>
8 </PropertyGroup> 8 </PropertyGroup>
9 9
10 <ItemGroup> 10 <ItemGroup>
@@ -16,6 +16,7 @@
16 </ItemGroup> 16 </ItemGroup>
17 17
18 <ItemGroup> 18 <ItemGroup>
19 <PackageReference Include="WixInternal.Core.TestPackage" /> 19 <PackageReference Include="WixInternal.MSTestSupport" />
20 <PackageReference Include="WixInternal.Core.MSTestPackage" />
20 </ItemGroup> 21 </ItemGroup>
21</Project> 22</Project>
diff --git a/src/ext/UI/ui.cmd b/src/ext/UI/ui.cmd
deleted file mode 100644
index a990db91..00000000
--- a/src/ext/UI/ui.cmd
+++ /dev/null
@@ -1,42 +0,0 @@
1@setlocal
2@pushd %~dp0
3
4@set _C=Debug
5@set _L=%~dp0..\..\..\build\logs
6
7:parse_args
8@if /i "%1"=="release" set _C=Release
9@if /i "%1"=="inc" set _INC=1
10@if /i "%1"=="clean" set _CLEAN=1
11@if not "%1"=="" shift & goto parse_args
12
13@set _B=%~dp0..\..\..\build\UI.wixext\%_C%
14
15:: Clean
16
17@if "%_INC%"=="" call :clean
18@if NOT "%_CLEAN%"=="" goto :end
19
20@echo UI.wixext build %_C%
21
22:: Build
23msbuild -Restore -p:Configuration=%_C% -tl -nologo -warnaserror -bl:%_L%\ext_ui_build.binlog || exit /b
24
25:: Test
26dotnet test -c %_C% --no-build test\WixToolsetTest.UI || exit /b
27
28:: Pack
29msbuild -t:Pack -p:Configuration=%_C% -tl -nologo -warnaserror -p:NoBuild=true wixext\WixToolset.UI.wixext.csproj || exit /b
30
31@goto :end
32
33:clean
34@rd /s/q "..\..\..\build\UI.wixext" 2> nul
35@del "..\..\..\build\artifacts\WixToolset.UI.wixext.*.nupkg" 2> nul
36@del "%_L%\ext_ui_build.binlog" 2> nul
37@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.ui.wixext" 2> nul
38@exit /b
39
40:end
41@popd
42@endlocal
diff --git a/src/ext/UI/ui_t.proj b/src/ext/UI/ui_t.proj
new file mode 100644
index 00000000..0a989b6f
--- /dev/null
+++ b/src/ext/UI/ui_t.proj
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- 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. -->
3
4<Project Sdk="Microsoft.Build.Traversal">
5 <ItemGroup>
6 <ProjectReference Include="test\WixToolsetTest.UI\WixToolsetTest.UI.csproj" />
7 <ProjectReference Include="wixext\WixToolset.UI.wixext.csproj" Targets="Pack" Properties="NoBuild=true" />
8 </ItemGroup>
9
10 <Target Name="WixClean" BeforeTargets="Restore" Condition="'$(SuppressWixClean)' != 'true'">
11 <RemoveDir Directories="$(RootBuildFolder)UI.wixext" />
12 <RemoveDir Directories="$(USERPROFILE)\.nuget\packages\wixtoolset.UI.wixext" Condition="'$(NUGET_PACKAGES)' == ''" />
13 <RemoveDir Directories="$(NUGET_PACKAGES)\wixtoolset.UI.wixext" Condition="'$(NUGET_PACKAGES)' != ''" />
14
15 <Delete Files="$(ArtifactsFolder)WixToolset.UI.wixext.*.nupkg" />
16 </Target>
17</Project>