aboutsummaryrefslogtreecommitdiff
path: root/src/ext/UI/test/WixToolsetTest.UI
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2022-01-29 23:44:11 -0500
committerBob Arnson <github@bobs.org>2022-01-30 13:02:05 -0500
commit7ce477c6863c74ef0a50d117d8c28b2f19971b42 (patch)
treeb953aae25a04d9ffbf0bd4609055087d96e760dc /src/ext/UI/test/WixToolsetTest.UI
parent3c1b81ff55975adffdc76f1a184b0f264bd97cd6 (diff)
downloadwix-7ce477c6863c74ef0a50d117d8c28b2f19971b42.tar.gz
wix-7ce477c6863c74ef0a50d117d8c28b2f19971b42.tar.bz2
wix-7ce477c6863c74ef0a50d117d8c28b2f19971b42.zip
Add compiler extension to handle platforms.
Custom actions to print EULA and validate install directories are defined in WixUIExtension compiler extension, to handle platform-specific custom actions referred to from `DoAction` control events. This is the least-worst solution, given the `DoAction` approach used in the WixUI authoring and anyone customizing a WixUI set.
Diffstat (limited to 'src/ext/UI/test/WixToolsetTest.UI')
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Advanced/Package.wxs6
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs4
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs4
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs4
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs4
-rw-r--r--src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs99
6 files changed, 79 insertions, 42 deletions
diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Advanced/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Advanced/Package.wxs
index 5ce4b00f..c22328e6 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Advanced/Package.wxs
+++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Advanced/Package.wxs
@@ -1,5 +1,5 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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"> 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." /> 3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 4
5 <Feature Id="ProductFeature" Title="MsiPackage"> 5 <Feature Id="ProductFeature" Title="MsiPackage">
@@ -12,7 +12,7 @@
12 </Component> 12 </Component>
13 </ComponentGroup> 13 </ComponentGroup>
14 14
15 <UIRef Id="WixUI_Advanced" /> 15 <ui:WixUI Id="WixUI_Advanced" />
16 <Property Id="ApplicationFolderName" Value="MyProgram" /> 16 <Property Id="ApplicationFolderName" Value="MyProgram" />
17 <Property Id="WixAppFolder" Value="WixPerMachineFolder" /> 17 <Property Id="WixAppFolder" Value="WixPerMachineFolder" />
18 </Package> 18 </Package>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs
index aff1c077..7c4db223 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs
+++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_FeatureTree/Package.wxs
@@ -1,4 +1,4 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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"> 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." /> 3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 4
@@ -12,7 +12,7 @@
12 </Component> 12 </Component>
13 </ComponentGroup> 13 </ComponentGroup>
14 14
15 <UIRef Id="WixUI_FeatureTree" /> 15 <ui:WixUI Id="WixUI_FeatureTree" />
16 </Package> 16 </Package>
17 17
18 <Fragment> 18 <Fragment>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs
index 7c2ceae0..b6f2344a 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs
+++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_InstallDir/Package.wxs
@@ -1,4 +1,4 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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"> 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." /> 3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 4
@@ -12,7 +12,7 @@
12 </Component> 12 </Component>
13 </ComponentGroup> 13 </ComponentGroup>
14 14
15 <UIRef Id="WixUI_InstallDir" /> 15 <ui:WixUI Id="WixUI_InstallDir" />
16 </Package> 16 </Package>
17 17
18 <Fragment> 18 <Fragment>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs
index d2ff256c..962be579 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs
+++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs
@@ -1,4 +1,4 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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"> 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." /> 3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 4
@@ -12,7 +12,7 @@
12 </Component> 12 </Component>
13 </ComponentGroup> 13 </ComponentGroup>
14 14
15 <UIRef Id="WixUI_Minimal" /> 15 <ui:WixUI Id="WixUI_Minimal" />
16 </Package> 16 </Package>
17 17
18 <Fragment> 18 <Fragment>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs
index 8d5a856a..9eca9790 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs
+++ b/src/ext/UI/test/WixToolsetTest.UI/TestData/WixUI_Mondo/Package.wxs
@@ -1,4 +1,4 @@
1<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 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"> 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." /> 3 <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
4 4
@@ -12,7 +12,7 @@
12 </Component> 12 </Component>
13 </ComponentGroup> 13 </ComponentGroup>
14 14
15 <UIRef Id="WixUI_Mondo" /> 15 <ui:WixUI Id="WixUI_Mondo" />
16 </Package> 16 </Package>
17 17
18 <Fragment> 18 <Fragment>
diff --git a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
index 778bfb64..4ab7ec3f 100644
--- a/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
+++ b/src/ext/UI/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -7,8 +7,6 @@ namespace WixToolsetTest.UI
7 using System.Linq; 7 using System.Linq;
8 using WixBuildTools.TestSupport; 8 using WixBuildTools.TestSupport;
9 using WixToolset.Core.TestPackage; 9 using WixToolset.Core.TestPackage;
10 using WixToolset.Data;
11 using WixToolset.Data.Symbols;
12 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
13 using WixToolset.UI; 11 using WixToolset.UI;
14 using Xunit; 12 using Xunit;
@@ -22,11 +20,48 @@ namespace WixToolsetTest.UI
22 var bindFolder = TestData.Get(@"TestData\data"); 20 var bindFolder = TestData.Get(@"TestData\data");
23 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 21 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
24 22
25 var results = build.BuildAndQuery(Build, "Property"); 23 var results = build.BuildAndQuery(Build, "Dialog", "CustomAction");
26 WixAssert.CompareLineByLine(new[] 24 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
27 { 25 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerMachineFolder\t"));
28 "Property:WixUI_Mode\tAdvanced", 26 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerUserFolder\t"));
29 }, results.Where(s => s.StartsWith("Property:WixUI_Mode")).ToArray()); 27 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerMachineFolder\t"));
28 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerUserFolder\t"));
29 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIPrintEula\t65\tWixUiCa_X86\t"));
30 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIValidatePath\t65\tWixUiCa_X86\t"));
31 }
32
33 [Fact]
34 public void CanBuildUsingWixUIAdvancedX64()
35 {
36 var folder = TestData.Get(@"TestData\WixUI_Advanced");
37 var bindFolder = TestData.Get(@"TestData\data");
38 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
39
40 var results = build.BuildAndQuery(BuildX64, "Dialog", "CustomAction");
41 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
42 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerMachineFolder\t"));
43 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerUserFolder\t"));
44 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerMachineFolder\t"));
45 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerUserFolder\t"));
46 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIPrintEula\t65\tWixUiCa_X64\t"));
47 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIValidatePath\t65\tWixUiCa_X64\t"));
48 }
49
50 [Fact]
51 public void CanBuildUsingWixUIAdvancedARM64()
52 {
53 var folder = TestData.Get(@"TestData\WixUI_Advanced");
54 var bindFolder = TestData.Get(@"TestData\data");
55 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
56
57 var results = build.BuildAndQuery(BuildARM64, "Dialog", "CustomAction");
58 Assert.Single(results, result => result.StartsWith("Dialog:AdvancedWelcomeEulaDlg\t"));
59 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerMachineFolder\t"));
60 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetDefaultPerUserFolder\t"));
61 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerMachineFolder\t"));
62 Assert.Single(results, result => result.StartsWith("CustomAction:WixSetPerUserFolder\t"));
63 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIPrintEula\t65\tWixUiCa_A64\t"));
64 Assert.Single(results, result => result.StartsWith("CustomAction:WixUIValidatePath\t65\tWixUiCa_A64\t"));
30 } 65 }
31 66
32 [Fact] 67 [Fact]
@@ -36,11 +71,10 @@ namespace WixToolsetTest.UI
36 var bindFolder = TestData.Get(@"TestData\data"); 71 var bindFolder = TestData.Get(@"TestData\data");
37 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 72 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
38 73
39 var results = build.BuildAndQuery(Build, "Property"); 74 var results = build.BuildAndQuery(Build, "Dialog", "CustomAction");
40 WixAssert.CompareLineByLine(new[] 75 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
41 { 76 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
42 "Property:WixUI_Mode\tFeatureTree", 77 Assert.Empty(results.Where(result => result.StartsWith("Dialog:SetupTypeDlg\t")));
43 }, results.Where(s => s.StartsWith("Property:WixUI_Mode")).ToArray());
44 } 78 }
45 79
46 [Fact] 80 [Fact]
@@ -50,11 +84,8 @@ namespace WixToolsetTest.UI
50 var bindFolder = TestData.Get(@"TestData\data"); 84 var bindFolder = TestData.Get(@"TestData\data");
51 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 85 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
52 86
53 var results = build.BuildAndQuery(Build, "Property"); 87 var results = build.BuildAndQuery(Build, "Dialog", "CustomAction");
54 WixAssert.CompareLineByLine(new[] 88 Assert.Single(results, result => result.StartsWith("Dialog:InstallDirDlg\t"));
55 {
56 "Property:WixUI_Mode\tInstallDir",
57 }, results.Where(s => s.StartsWith("Property:WixUI_Mode")).ToArray());
58 } 89 }
59 90
60 [Fact] 91 [Fact]
@@ -64,11 +95,8 @@ namespace WixToolsetTest.UI
64 var bindFolder = TestData.Get(@"TestData\data"); 95 var bindFolder = TestData.Get(@"TestData\data");
65 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 96 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
66 97
67 var results = build.BuildAndQuery(Build, "Property"); 98 var results = build.BuildAndQuery(Build, "Dialog", "CustomAction");
68 WixAssert.CompareLineByLine(new[] 99 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeEulaDlg\t"));
69 {
70 "Property:WixUI_Mode\tMinimal",
71 }, results.Where(s => s.StartsWith("Property:WixUI_Mode")).ToArray());
72 } 100 }
73 101
74 [Fact] 102 [Fact]
@@ -92,10 +120,8 @@ namespace WixToolsetTest.UI
92 }); 120 });
93 121
94 var wid = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); 122 var wid = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"));
95 var propertyTable = wid.Tables["Property"]; 123 var dialogTable = wid.Tables["Dialog"];
96 124 var dialogRow = dialogTable.Rows.Single(r => r.GetPrimaryKey() == "WelcomeEulaDlg");
97 var propertyRow = propertyTable.Rows.Single(r => r.GetPrimaryKey() == "WixUI_Mode");
98 WixAssert.StringEqual("Minimal", propertyRow.FieldAsString(1));
99 } 125 }
100 } 126 }
101 127
@@ -106,11 +132,10 @@ namespace WixToolsetTest.UI
106 var bindFolder = TestData.Get(@"TestData\data"); 132 var bindFolder = TestData.Get(@"TestData\data");
107 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder }); 133 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { bindFolder });
108 134
109 var results = build.BuildAndQuery(Build, "Property"); 135 var results = build.BuildAndQuery(Build, "Dialog", "CustomAction");
110 WixAssert.CompareLineByLine(new[] 136 Assert.Single(results, result => result.StartsWith("Dialog:WelcomeDlg\t"));
111 { 137 Assert.Single(results, result => result.StartsWith("Dialog:CustomizeDlg\t"));
112 "Property:WixUI_Mode\tMondo", 138 Assert.Single(results, result => result.StartsWith("Dialog:SetupTypeDlg\t"));
113 }, results.Where(s => s.StartsWith("Property:WixUI_Mode")).ToArray());
114 } 139 }
115 140
116 [Fact] 141 [Fact]
@@ -133,6 +158,18 @@ namespace WixToolsetTest.UI
133 .AssertSuccess(); 158 .AssertSuccess();
134 } 159 }
135 160
161 private static void BuildX64(string[] args)
162 {
163 var result = WixRunner.Execute(args.Concat(new[] { "-arch", "x64" }).ToArray())
164 .AssertSuccess();
165 }
166
167 private static void BuildARM64(string[] args)
168 {
169 var result = WixRunner.Execute(args.Concat(new[] { "-arch", "arm64" }).ToArray())
170 .AssertSuccess();
171 }
172
136 private static void BuildInGerman(string[] args) 173 private static void BuildInGerman(string[] args)
137 { 174 {
138 var localizedArgs = args.Append("-culture").Append("de-DE").ToArray(); 175 var localizedArgs = args.Append("-culture").Append("de-DE").ToArray();