@joebigelow / wix / commits / 68ea7b2f

Add tests for custom WixUI sets.

Bob Arnson committed Mar 13, 2023 at 21:20 UTC 68ea7b2f8dccb48d69e8aeb960ce8cb29790e8c4
8 files changed +285 -4
src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_NoLicense/Package.wxs new
+82
@@ -0,0 +1,82 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
2 + <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" InstallerVersion="200">
3 + <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 +
5 + <Feature Id="ProductFeature" Title="MsiPackage">
6 + <ComponentGroupRef Id="ProductComponents" />
7 + </Feature>
8 +
9 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
10 + <Component>
11 + <File Source="example.txt" />
12 + </Component>
13 + </ComponentGroup>
14 +
15 + <ui:WixUI Id="InstallDir_NoLicense" InstallDirectory="INSTALLFOLDER" />
16 + </Package>
17 +
18 + <Fragment>
19 + <StandardDirectory Id="ProgramFilesFolder">
20 + <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
21 + </StandardDirectory>
22 + </Fragment>
23 +
24 + <?foreach WIXUIARCH in X86;X64;A64 ?>
25 + <Fragment>
26 + <UI Id="InstallDir_NoLicense_$(WIXUIARCH)">
27 + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH" />
28 + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
29 + </UI>
30 +
31 + <UIRef Id="InstallDir_NoLicense" />
32 + </Fragment>
33 + <?endforeach?>
34 +
35 + <Fragment>
36 + <UI Id="file InstallDir_NoLicense">
37 + <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
38 + <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
39 + <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
40 +
41 + <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
42 +
43 + <DialogRef Id="BrowseDlg" />
44 + <DialogRef Id="DiskCostDlg" />
45 + <DialogRef Id="ErrorDlg" />
46 + <DialogRef Id="FatalError" />
47 + <DialogRef Id="FilesInUse" />
48 + <DialogRef Id="MsiRMFilesInUse" />
49 + <DialogRef Id="PrepareDlg" />
50 + <DialogRef Id="ProgressDlg" />
51 + <DialogRef Id="ResumeDlg" />
52 + <DialogRef Id="UserExit" />
53 +
54 + <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
55 +
56 + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
57 +
58 + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Condition="NOT Installed" />
59 + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Condition="Installed AND PATCH" />
60 +
61 + <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" />
62 + <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" />
63 + <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
64 + <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&quot;1&quot;" />
65 + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
66 + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2" />
67 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="1" Condition="NOT Installed" />
68 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2" Condition="Installed AND NOT PATCH" />
69 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2" Condition="Installed AND PATCH" />
70 +
71 + <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg" />
72 +
73 + <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg" />
74 + <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg" />
75 + <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg" />
76 +
77 + <Property Id="ARPNOMODIFY" Value="1" />
78 + </UI>
79 +
80 + <UIRef Id="WixUI_Common" />
81 + </Fragment>
82 +</Wix>
src/ext/UI/test/WixToolsetTest.UI/TestData/InstallDir_SpecialDlg/Package.wxs new
+106
@@ -0,0 +1,106 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
2 + <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
3 + <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 +
5 + <Feature Id="ProductFeature" Title="MsiPackage">
6 + <ComponentGroupRef Id="ProductComponents" />
7 + </Feature>
8 +
9 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
10 + <Component>
11 + <File Source="example.txt" />
12 + </Component>
13 + </ComponentGroup>
14 +
15 + <ui:WixUI Id="InstallDir_SpecialDlg" InstallDirectory="INSTALLFOLDER" />
16 + </Package>
17 +
18 + <Fragment>
19 + <StandardDirectory Id="ProgramFilesFolder">
20 + <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
21 + </StandardDirectory>
22 + </Fragment>
23 +
24 + <Fragment>
25 + <UI>
26 + <Dialog Id="SpecialDlg" Width="370" Height="270" Title="My Special Dialog">
27 + <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
28 + <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="!(loc.WixUINext)" />
29 + <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
30 + <Publish Event="SpawnDialog" Value="CancelDlg" />
31 + </Control>
32 + <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
33 + <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
34 + <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
35 + <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="My Special Dialog" />
36 + <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="A dialog where special stuff happens" />
37 + </Dialog>
38 + </UI>
39 + </Fragment>
40 +
41 + <?foreach WIXUIARCH in X86;X64;A64 ?>
42 + <Fragment>
43 + <UI Id="InstallDir_SpecialDlg_$(WIXUIARCH)">
44 + <Publish Dialog="LicenseAgreementDlg" Control="Print" Event="DoAction" Value="WixUIPrintEula_$(WIXUIARCH)" />
45 + <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH" />
46 + <Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath_$(WIXUIARCH)" Order="2" Condition="NOT WIXUI_DONTVALIDATEPATH" />
47 + </UI>
48 +
49 + <UIRef Id="InstallDir_SpecialDlg" />
50 + </Fragment>
51 + <?endforeach?>
52 +
53 + <Fragment>
54 + <UI Id="file InstallDir_SpecialDlg">
55 + <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
56 + <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
57 + <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
58 +
59 + <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
60 +
61 + <DialogRef Id="BrowseDlg" />
62 + <DialogRef Id="DiskCostDlg" />
63 + <DialogRef Id="ErrorDlg" />
64 + <DialogRef Id="FatalError" />
65 + <DialogRef Id="FilesInUse" />
66 + <DialogRef Id="MsiRMFilesInUse" />
67 + <DialogRef Id="PrepareDlg" />
68 + <DialogRef Id="ProgressDlg" />
69 + <DialogRef Id="ResumeDlg" />
70 + <DialogRef Id="UserExit" />
71 +
72 + <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
73 +
74 + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999" />
75 +
76 + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SpecialDlg" />
77 + <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Condition="Installed AND PATCH" />
78 +
79 + <Publish Dialog="SpecialDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" />
80 + <Publish Dialog="SpecialDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg" />
81 +
82 + <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="SpecialDlg" />
83 + <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Condition="LicenseAccepted = &quot;1&quot;" />
84 +
85 + <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" />
86 + <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1" />
87 + <Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3" Condition="NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID&lt;&gt;&quot;1&quot;" />
88 + <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4" Condition="WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=&quot;1&quot;" />
89 + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1" />
90 + <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2" />
91 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="1" Condition="NOT Installed" />
92 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2" Condition="Installed AND NOT PATCH" />
93 + <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2" Condition="Installed AND PATCH" />
94 +
95 + <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg" />
96 +
97 + <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg" />
98 + <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg" />
99 + <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg" />
100 +
101 + <Property Id="ARPNOMODIFY" Value="1" />
102 + </UI>
103 +
104 + <UIRef Id="WixUI_Common" />
105 + </Fragment>
106 +</Wix>
src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs
+10 -1
@@ -1,4 +1,4 @@
1 -<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
2 <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" InstallerVersion="200">
3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4
@@ -13,6 +13,15 @@
13 </ComponentGroup>
14
15 <ui:WixUI Id="WixUI_FeatureTree" />
16 + <WixVariable Id="WixUIDialogBmp" Value="WixUIDialogBmp.png" />
17 + <WixVariable Id="WixUIBannerBmp" Value="WixUIBannerBmp.png" />
18 +
19 + <SetProperty
20 + Id="WIXUI_EXITDIALOGOPTIONALTEXT"
21 + Value="Thank you for installing [ProductName]."
22 + After="FindRelatedProducts"
23 + Sequence="ui"
24 + />
25 </Package>
26
27 <Fragment>
src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs
+2 -1
@@ -1,4 +1,4 @@
1 -<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
2 <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" InstallerVersion="200">
3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4
@@ -13,6 +13,7 @@
13 </ComponentGroup>
14
15 <ui:WixUI Id="WixUI_Mondo" />
16 + <WixVariable Id="WixUILicenseRtf" Value="bpl.rtf" />
17 </Package>
18
19 <Fragment>
src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png
Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIBannerBmp.png differ
src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png
Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/WixUIDialogBmp.png differ
src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf
Binary files /dev/null and b/src/ext/UI/test/WixToolsetTest.UI/TestData/data/bpl.rtf differ
src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+85 -2
@@ -143,6 +143,7 @@ namespace WixToolsetTest.UI
143 }, results.Where(r => r.StartsWith("Binary:")).ToArray());
144 WixAssert.CompareLineByLine(new[]
145 {
146 + "CustomAction:SetWIXUI_EXITDIALOGOPTIONALTEXT\t51\tWIXUI_EXITDIALOGOPTIONALTEXT\tThank you for installing [ProductName].\t",
147 "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
148 }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
149 WixAssert.CompareLineByLine(new[]
@@ -152,13 +153,13 @@ namespace WixToolsetTest.UI
153 }
154
155 [Fact]
155 - public void CanBuildUsingWixUIInstallDir()
156 + public void CanBuildUsingWixUIInstallDirWithCustomizedEula()
157 {
158 var folder = TestData.Get(@"TestData", "WixUI_InstallDir");
159 var bindFolder = TestData.Get(@"TestData", "data");
160 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
161
161 - var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent");
162 + var results = build.BuildAndQuery(BuildEula, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent");
163 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
164 WixAssert.CompareLineByLine(new[]
165 {
@@ -302,6 +303,82 @@ namespace WixToolsetTest.UI
303 }, results.Where(s => s.StartsWith("Control:ErrorDlg\tY")).Select(s => s.Split('\t')[9]).ToArray());
304 }
305
306 + [Fact]
307 + public void CanBuildUsingWithInstallDirAndRemovedDialog()
308 + {
309 + var folder = TestData.Get(@"TestData", "InstallDir_NoLicense");
310 + var bindFolder = TestData.Get(@"TestData", "data");
311 + var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
312 +
313 + var results = build.BuildAndQuery(Build, "Binary", "Dialog", "CustomAction", "Property", "ControlEvent");
314 + Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
315 + WixAssert.CompareLineByLine(new[]
316 + {
317 + "Binary:WixUI_Bmp_Banner\t[Binary data]",
318 + "Binary:WixUI_Bmp_Dialog\t[Binary data]",
319 + "Binary:WixUI_Bmp_New\t[Binary data]",
320 + "Binary:WixUI_Bmp_Up\t[Binary data]",
321 + "Binary:WixUI_Ico_Exclam\t[Binary data]",
322 + "Binary:WixUI_Ico_Info\t[Binary data]",
323 + "Binary:WixUiCa_X86\t[Binary data]",
324 + }, results.Where(r => r.StartsWith("Binary:")).ToArray());
325 + WixAssert.CompareLineByLine(new[]
326 + {
327 + "CustomAction:WixUIValidatePath_X86\t65\tWixUiCa_X86\tValidatePath\t",
328 + }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
329 + WixAssert.CompareLineByLine(new[]
330 + {
331 + "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
332 + }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray());
333 + WixAssert.CompareLineByLine(new[]
334 + {
335 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t3",
336 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X86\tNOT WIXUI_DONTVALIDATEPATH\t2",
337 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
338 +
339 + Assert.Empty(results.Where(result => result.Contains("LicenseAgreementDlg")).ToArray());
340 + }
341 +
342 + [Fact]
343 + public void CanBuildUsingWithInstallDirAndAddedDialog()
344 + {
345 + var folder = TestData.Get(@"TestData", "InstallDir_SpecialDlg");
346 + var bindFolder = TestData.Get(@"TestData", "data");
347 + var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
348 +
349 + var results = build.BuildAndQuery(BuildX64, "Binary", "Control", "Dialog", "CustomAction", "Property", "ControlEvent");
350 + Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
351 + WixAssert.CompareLineByLine(new[]
352 + {
353 + "Binary:WixUI_Bmp_Banner\t[Binary data]",
354 + "Binary:WixUI_Bmp_Dialog\t[Binary data]",
355 + "Binary:WixUI_Bmp_New\t[Binary data]",
356 + "Binary:WixUI_Bmp_Up\t[Binary data]",
357 + "Binary:WixUI_Ico_Exclam\t[Binary data]",
358 + "Binary:WixUI_Ico_Info\t[Binary data]",
359 + "Binary:WixUiCa_X64\t[Binary data]",
360 + }, results.Where(r => r.StartsWith("Binary:")).ToArray());
361 + WixAssert.CompareLineByLine(new[]
362 + {
363 + "CustomAction:WixUIPrintEula_X64\t65\tWixUiCa_X64\tPrintEula\t",
364 + "CustomAction:WixUIValidatePath_X64\t65\tWixUiCa_X64\tValidatePath\t",
365 + }, results.Where(r => r.StartsWith("CustomAction:")).ToArray());
366 + WixAssert.CompareLineByLine(new[]
367 + {
368 + "Property:WIXUI_INSTALLDIR\tINSTALLFOLDER",
369 + }, results.Where(r => r.StartsWith("Property:WIXUI")).ToArray());
370 + WixAssert.CompareLineByLine(new[]
371 + {
372 + "ControlEvent:BrowseDlg\tOK\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t3",
373 + "ControlEvent:InstallDirDlg\tNext\tDoAction\tWixUIValidatePath_X64\tNOT WIXUI_DONTVALIDATEPATH\t2",
374 + "ControlEvent:LicenseAgreementDlg\tPrint\tDoAction\tWixUIPrintEula_X64\t1\t1",
375 + }, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("DoAction")).OrderBy(s => s).ToArray());
376 +
377 + Assert.Equal(8, results.Where(result => result.StartsWith("Control:") && result.Contains("SpecialDlg")).Count());
378 + Assert.Equal(5, results.Where(result => result.StartsWith("ControlEvent:") && result.Contains("SpecialDlg")).Count());
379 + Assert.Single(results.Where(result => result.StartsWith("Dialog:") && result.Contains("SpecialDlg")));
380 + }
381 +
382 [Fact]
383 public void CannotBuildWithV3LikeUIRef()
384 {
@@ -345,6 +422,12 @@ namespace WixToolsetTest.UI
422 .AssertSuccess();
423 }
424
425 + private static void BuildEula(string[] args)
426 + {
427 + var result = WixRunner.Execute(args.Concat(new[] { "-bv", "WixUILicenseRtf=bpl.rtf" }).ToArray())
428 + .AssertSuccess();
429 + }
430 +
431 private static void BuildInGerman(string[] args)
432 {
433 var localizedArgs = args.Append("-culture").Append("de-DE").ToArray();