@joebigelow / wix-1 / commits / a34b060e

Add elements to reference platform-specific extension custom actions.

Bob Arnson committed Jul 12, 2020 at 22:40 UTC a34b060e7b1375be7c8c557a985b484155ff2702
10 files changed +323 -258
src/test/WixToolsetTest.Util/TestData/Queries/Package.en-us.wxl new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +
3 +<!--
4 +This file contains the declaration of all the localizable strings.
5 +-->
6 +<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7 +
8 + <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
9 + <String Id="FeatureTitle">MsiPackage</String>
10 +
11 +</WixLocalization>
src/test/WixToolsetTest.Util/TestData/Queries/Package.wxs new
+26
@@ -0,0 +1,26 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
2 + <Product Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
3 + <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
4 +
5 + <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
6 +
7 + <util:BroadcastEnvironmentChange />
8 + <util:CheckRebootRequired />
9 + <util:QueryWindowsDriverInfo />
10 + <util:QueryWindowsSuiteInfo />
11 +
12 + <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
13 + <ComponentGroupRef Id="ProductComponents" />
14 + </Feature>
15 + </Product>
16 +
17 + <Fragment>
18 + <util:BroadcastSettingChange />
19 +
20 + <Directory Id="TARGETDIR" Name="SourceDir">
21 + <Directory Id="ProgramFilesFolder">
22 + <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
23 + </Directory>
24 + </Directory>
25 + </Fragment>
26 +</Wix>
src/test/WixToolsetTest.Util/TestData/Queries/PackageComponents.wxs new
+9
@@ -0,0 +1,9 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
2 + <Fragment>
3 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
4 + <Component>
5 + <File Source="example.txt" />
6 + </Component>
7 + </ComponentGroup>
8 + </Fragment>
9 +</Wix>
src/test/WixToolsetTest.Util/TestData/Queries/example.txt new
+1
@@ -0,0 +1 @@
1 +This is example.txt.
\ No newline at end of file
src/test/WixToolsetTest.Util/UtilExtensionFixture.cs
+18
@@ -132,6 +132,24 @@ namespace WixToolsetTest.Util
132 }, results.OrderBy(s => s).ToArray());
133 }
134
135 + [Fact]
136 + public void CanBuildWithQueries()
137 + {
138 + var folder = TestData.Get(@"TestData\Queries");
139 + var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder });
140 +
141 + var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction");
142 + Assert.Equal(new[]
143 + {
144 + "Binary:Wix4UtilCA_A64\t[Binary data]",
145 + "CustomAction:Wix4BroadcastEnvironmentChange_A64\t65\tWix4UtilCA_A64\tWixBroadcastEnvironmentChange\t",
146 + "CustomAction:Wix4BroadcastSettingChange_A64\t65\tWix4UtilCA_A64\tWixBroadcastSettingChange\t",
147 + "CustomAction:Wix4CheckRebootRequired_A64\t65\tWix4UtilCA_A64\tWixCheckRebootRequired\t",
148 + "CustomAction:Wix4QueryOsDriverInfo_A64\t257\tWix4UtilCA_A64\tWixQueryOsDriverInfo\t",
149 + "CustomAction:Wix4QueryOsInfo_A64\t257\tWix4UtilCA_A64\tWixQueryOsInfo\t",
150 + }, results.OrderBy(s => s).ToArray());
151 + }
152 +
153 [Fact]
154 public void CanBuildBundleWithSearches()
155 {
src/test/WixToolsetTest.Util/WixToolsetTest.Util.csproj
+4
@@ -39,6 +39,10 @@
39 <Content Include="TestData\EventManifest\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
40 <Content Include="TestData\EventManifest\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
41 <Content Include="TestData\EventManifest\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
42 + <Content Include="TestData\Queries\example.txt" CopyToOutputDirectory="PreserveNewest" />
43 + <Content Include="TestData\Queries\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
44 + <Content Include="TestData\Queries\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
45 + <Content Include="TestData\Queries\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
46 </ItemGroup>
47
48 <ItemGroup>
src/wixext/UtilCompiler.cs
+85
@@ -233,6 +233,19 @@ namespace WixToolset.Util
233 case "User":
234 this.ParseUserElement(intermediate, section, element, null);
235 break;
236 + case "BroadcastEnvironmentChange":
237 + case "BroadcastSettingChange":
238 + case "CheckRebootRequired":
239 + case "ExitEarlyWithSuccess":
240 + case "FailWhenDeferred":
241 + case "QueryWindowsDirectories":
242 + case "QueryWindowsDriverInfo":
243 + case "QueryWindowsSuiteInfo":
244 + case "QueryWindowsWellKnownSIDs":
245 + case "WaitForEvent":
246 + case "WaitForEventDeferred":
247 + this.AddCustomActionReference(intermediate, section, element, parentElement);
248 + break;
249 case "ComponentSearch":
250 case "ComponentSearchRef":
251 case "DirectorySearch":
@@ -340,6 +353,24 @@ namespace WixToolset.Util
353 break;
354 }
355 break;
356 + case "UI":
357 + switch (element.Name.LocalName)
358 + {
359 + case "BroadcastEnvironmentChange":
360 + case "BroadcastSettingChange":
361 + case "CheckRebootRequired":
362 + case "ExitEarlyWithSuccess":
363 + case "FailWhenDeferred":
364 + case "QueryWindowsDirectories":
365 + case "QueryWindowsDriverInfo":
366 + case "QueryWindowsSuiteInfo":
367 + case "QueryWindowsWellKnownSIDs":
368 + case "WaitForEvent":
369 + case "WaitForEventDeferred":
370 + this.AddCustomActionReference(intermediate, section, element, parentElement);
371 + break;
372 + }
373 + break;
374 default:
375 this.ParseHelper.UnexpectedElement(parentElement, element);
376 break;
@@ -348,6 +379,60 @@ namespace WixToolset.Util
379 return possibleKeyPath;
380 }
381
382 + private void AddCustomActionReference(Intermediate intermediate, IntermediateSection section, XElement element, XElement parentElement)
383 + {
384 + // These elements are not supported for bundles.
385 + if (parentElement.Name.LocalName == "Bundle")
386 + {
387 + this.ParseHelper.UnexpectedElement(parentElement, element);
388 + return;
389 + }
390 +
391 + var customAction = element.Name.LocalName;
392 + switch (element.Name.LocalName)
393 + {
394 + case "BroadcastEnvironmentChange":
395 + case "BroadcastSettingChange":
396 + case "CheckRebootRequired":
397 + case "ExitEarlyWithSuccess":
398 + case "FailWhenDeferred":
399 + case "WaitForEvent":
400 + case "WaitForEventDeferred":
401 + //default: customAction = element.Name.LocalName;
402 + break;
403 + case "QueryWindowsDirectories":
404 + customAction = "QueryOsDirs";
405 + break;
406 + case "QueryWindowsDriverInfo":
407 + customAction = "QueryOsDriverInfo";
408 + break;
409 + case "QueryWindowsSuiteInfo":
410 + customAction = "QueryOsInfo";
411 + break;
412 + case "QueryWindowsWellKnownSIDs":
413 + customAction = "QueryOsWellKnownSID";
414 + break;
415 + }
416 +
417 + foreach (var attrib in element.Attributes())
418 + {
419 + if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
420 + {
421 + // no attributes today
422 + }
423 + else
424 + {
425 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib);
426 + }
427 + }
428 +
429 + var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
430 +
431 + this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
432 +
433 + this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, customAction, this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
434 + }
435 +
436 /// <summary>
437 /// Parses the common search attributes shared across all searches.
438 /// </summary>
src/wixext/util.xsd
+121
@@ -1586,6 +1586,127 @@
1586 </xs:attribute>
1587 </xs:complexType>
1588 </xs:element>
1589 + <xs:element name="BroadcastEnvironmentChange">
1590 + <xs:annotation>
1591 + <xs:documentation>Schedules the BroadcastEnvironmentChange custom action for the current platform.</xs:documentation>
1592 + <xs:appinfo>
1593 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1594 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1595 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1596 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1597 + </xs:appinfo>
1598 + </xs:annotation>
1599 + </xs:element>
1600 + <xs:element name="BroadcastSettingChange">
1601 + <xs:annotation>
1602 + <xs:documentation>Schedules the BroadcastSettingChange custom action for the current platform.</xs:documentation>
1603 + <xs:appinfo>
1604 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1605 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1606 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1607 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1608 + </xs:appinfo>
1609 + </xs:annotation>
1610 + </xs:element>
1611 + <xs:element name="CheckRebootRequired">
1612 + <xs:annotation>
1613 + <xs:documentation>Schedules the CheckRebootRequired custom action for the current platform.</xs:documentation>
1614 + <xs:appinfo>
1615 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1616 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1617 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1618 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1619 + </xs:appinfo>
1620 + </xs:annotation>
1621 + </xs:element>
1622 + <xs:element name="ExitEarlyWithSuccess">
1623 + <xs:annotation>
1624 + <xs:documentation>Schedules the ExitEarlyWithSuccess custom action for the current platform.</xs:documentation>
1625 + <xs:appinfo>
1626 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1627 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1628 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1629 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1630 + </xs:appinfo>
1631 + </xs:annotation>
1632 + </xs:element>
1633 + <xs:element name="FailWhenDeferred">
1634 + <xs:annotation>
1635 + <xs:documentation>Schedules the FailWhenDeferred custom action for the current platform.</xs:documentation>
1636 + <xs:appinfo>
1637 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1638 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1639 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1640 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1641 + </xs:appinfo>
1642 + </xs:annotation>
1643 + <xs:element name="WaitForEvent">
1644 + <xs:annotation>
1645 + <xs:documentation>Schedules the WaitForEvent custom action for the current platform.</xs:documentation>
1646 + <xs:appinfo>
1647 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1648 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1649 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1650 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1651 + </xs:appinfo>
1652 + </xs:annotation>
1653 + </xs:element>
1654 + <xs:element name="WaitForEventDeferred">
1655 + <xs:annotation>
1656 + <xs:documentation>Schedules the WaitForEventDeferred custom action for the current platform.</xs:documentation>
1657 + <xs:appinfo>
1658 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1659 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1660 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1661 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1662 + </xs:appinfo>
1663 + </xs:annotation>
1664 + </xs:element>
1665 + <xs:element name="QueryWindowsDirectories">
1666 + <xs:annotation>
1667 + <xs:documentation>Schedules the QueryOsDirs custom action for the current platform.</xs:documentation>
1668 + <xs:appinfo>
1669 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1670 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1671 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1672 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1673 + </xs:appinfo>
1674 + </xs:annotation>
1675 + </xs:element>
1676 + <xs:element name="QueryWindowsDriverInfo">
1677 + <xs:annotation>
1678 + <xs:documentation>Schedules the QueryOsDriverInfo custom action for the current platform.</xs:documentation>
1679 + <xs:appinfo>
1680 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1681 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1682 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1683 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1684 + </xs:appinfo>
1685 + </xs:annotation>
1686 + </xs:element>
1687 + <xs:element name="QueryWindowsSuiteInfo">
1688 + <xs:annotation>
1689 + <xs:documentation>Schedules the QueryOsInfo custom action for the current platform.</xs:documentation>
1690 + <xs:appinfo>
1691 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1692 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1693 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1694 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1695 + </xs:appinfo>
1696 + </xs:annotation>
1697 + </xs:element>
1698 + <xs:element name="QueryWindowsWellKnownSIDs">
1699 + <xs:annotation>
1700 + <xs:documentation>Schedules the QueryOsWellKnownSID custom action for the current platform.</xs:documentation>
1701 + <xs:appinfo>
1702 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
1703 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
1704 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1705 + <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UI" />
1706 + </xs:appinfo>
1707 + </xs:annotation>
1708 + </xs:element>
1709 +
1710 <xs:attributeGroup name="SearchCommonAttributes">
1711 <xs:attribute name="Id" type="xs:string">
1712 <xs:annotation>
src/wixlib/UtilExtension.wxs
-258
@@ -62,264 +62,6 @@
62 </UI>
63 </Fragment>
64
65 - <!-- WiX OS-detection properties and custom action -->
66 - <Fragment>
67 - <CustomAction Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
68 - <InstallExecuteSequence>
69 - <Custom Action="$(var.Prefix)QueryOsInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
70 - </InstallExecuteSequence>
71 - <InstallUISequence>
72 - <Custom Action="$(var.Prefix)QueryOsInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
73 - </InstallUISequence>
74 - </Fragment>
75 -
76 - <Fragment>
77 - <Property Id="WIX_SUITE_BACKOFFICE" Secure="yes" />
78 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
79 - </Fragment>
80 - <Fragment>
81 - <Property Id="WIX_SUITE_BLADE" Secure="yes" />
82 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
83 - </Fragment>
84 - <Fragment>
85 - <Property Id="WIX_SUITE_COMMUNICATIONS" Secure="yes" />
86 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
87 - </Fragment>
88 - <Fragment>
89 - <Property Id="WIX_SUITE_COMPUTE_SERVER" Secure="yes" />
90 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
91 - </Fragment>
92 - <Fragment>
93 - <Property Id="WIX_SUITE_DATACENTER" Secure="yes" />
94 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
95 - </Fragment>
96 - <Fragment>
97 - <Property Id="WIX_SUITE_EMBEDDED_RESTRICTED" Secure="yes" />
98 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
99 - </Fragment>
100 - <Fragment>
101 - <Property Id="WIX_SUITE_EMBEDDEDNT" Secure="yes" />
102 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
103 - </Fragment>
104 - <Fragment>
105 - <Property Id="WIX_SUITE_ENTERPRISE" Secure="yes" />
106 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
107 - </Fragment>
108 - <Fragment>
109 - <Property Id="WIX_SUITE_MEDIACENTER" Secure="yes" />
110 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
111 - </Fragment>
112 - <Fragment>
113 - <Property Id="WIX_SUITE_PERSONAL" Secure="yes" />
114 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
115 - </Fragment>
116 - <Fragment>
117 - <Property Id="WIX_SUITE_SECURITY_APPLIANCE" Secure="yes" />
118 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
119 - </Fragment>
120 - <Fragment>
121 - <Property Id="WIX_SUITE_SERVERR2" Secure="yes" />
122 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
123 - </Fragment>
124 - <Fragment>
125 - <Property Id="WIX_SUITE_SINGLEUSERTS" Secure="yes" />
126 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
127 - </Fragment>
128 - <Fragment>
129 - <Property Id="WIX_SUITE_SMALLBUSINESS" Secure="yes" />
130 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
131 - </Fragment>
132 - <Fragment>
133 - <Property Id="WIX_SUITE_SMALLBUSINESS_RESTRICTED" Secure="yes" />
134 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
135 - </Fragment>
136 - <Fragment>
137 - <Property Id="WIX_SUITE_STARTER" Secure="yes" />
138 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
139 - </Fragment>
140 - <Fragment>
141 - <Property Id="WIX_SUITE_STORAGE_SERVER" Secure="yes" />
142 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
143 - </Fragment>
144 - <Fragment>
145 - <Property Id="WIX_SUITE_TABLETPC" Secure="yes" />
146 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
147 - </Fragment>
148 - <Fragment>
149 - <Property Id="WIX_SUITE_TERMINAL" Secure="yes" />
150 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
151 - </Fragment>
152 - <Fragment>
153 - <Property Id="WIX_SUITE_WH_SERVER" Secure="yes" />
154 - <CustomActionRef Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" />
155 - </Fragment>
156 -
157 - <Fragment>
158 - <CustomAction Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsDirs" Execute="firstSequence" Return="check" SuppressModularization="yes" />
159 - <InstallExecuteSequence>
160 - <Custom Action="$(var.Prefix)QueryOsDirs$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
161 - </InstallExecuteSequence>
162 - <InstallUISequence>
163 - <Custom Action="$(var.Prefix)QueryOsDirs$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
164 - </InstallUISequence>
165 - </Fragment>
166 -
167 - <Fragment>
168 - <Property Id="WIX_DIR_ADMINTOOLS" Secure="yes" />
169 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
170 - </Fragment>
171 - <Fragment>
172 - <Property Id="WIX_DIR_ALTSTARTUP" Secure="yes" />
173 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
174 - </Fragment>
175 - <Fragment>
176 - <Property Id="WIX_DIR_CDBURN_AREA" Secure="yes" />
177 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
178 - </Fragment>
179 - <Fragment>
180 - <Property Id="WIX_DIR_COMMON_ADMINTOOLS" Secure="yes" />
181 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
182 - </Fragment>
183 - <Fragment>
184 - <Property Id="WIX_DIR_COMMON_ALTSTARTUP" Secure="yes" />
185 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
186 - </Fragment>
187 - <Fragment>
188 - <Property Id="WIX_DIR_COMMON_DOCUMENTS" Secure="yes" />
189 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
190 - </Fragment>
191 - <Fragment>
192 - <Property Id="WIX_DIR_COMMON_FAVORITES" Secure="yes" />
193 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
194 - </Fragment>
195 - <Fragment>
196 - <Property Id="WIX_DIR_COMMON_MUSIC" Secure="yes" />
197 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
198 - </Fragment>
199 - <Fragment>
200 - <Property Id="WIX_DIR_COMMON_PICTURES" Secure="yes" />
201 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
202 - </Fragment>
203 - <Fragment>
204 - <Property Id="WIX_DIR_COMMON_VIDEO" Secure="yes" />
205 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
206 - </Fragment>
207 - <Fragment>
208 - <Property Id="WIX_DIR_COOKIES" Secure="yes" />
209 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
210 - </Fragment>
211 - <Fragment>
212 - <Property Id="WIX_DIR_DESKTOP" Secure="yes" />
213 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
214 - </Fragment>
215 - <Fragment>
216 - <Property Id="WIX_DIR_HISTORY" Secure="yes" />
217 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
218 - </Fragment>
219 - <Fragment>
220 - <Property Id="WIX_DIR_INTERNET_CACHE" Secure="yes" />
221 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
222 - </Fragment>
223 - <Fragment>
224 - <Property Id="WIX_DIR_MYMUSIC" Secure="yes" />
225 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
226 - </Fragment>
227 - <Fragment>
228 - <Property Id="WIX_DIR_MYPICTURES" Secure="yes" />
229 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
230 - </Fragment>
231 - <Fragment>
232 - <Property Id="WIX_DIR_MYVIDEO" Secure="yes" />
233 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
234 - </Fragment>
235 - <Fragment>
236 - <Property Id="WIX_DIR_NETHOOD" Secure="yes" />
237 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
238 - </Fragment>
239 - <Fragment>
240 - <Property Id="WIX_DIR_PERSONAL" Secure="yes" />
241 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
242 - </Fragment>
243 - <Fragment>
244 - <Property Id="WIX_DIR_PRINTHOOD" Secure="yes" />
245 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
246 - </Fragment>
247 - <Fragment>
248 - <Property Id="WIX_DIR_PROFILE" Secure="yes" />
249 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
250 - </Fragment>
251 - <Fragment>
252 - <Property Id="WIX_DIR_RECENT" Secure="yes" />
253 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
254 - </Fragment>
255 - <Fragment>
256 - <Property Id="WIX_DIR_RESOURCES" Secure="yes" />
257 - <CustomActionRef Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" />
258 - </Fragment>
259 -
260 - <Fragment>
261 - <CustomAction Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsWellKnownSID" Execute="firstSequence" Return="check" SuppressModularization="yes" />
262 -
263 - <InstallExecuteSequence>
264 - <Custom Action="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
265 - </InstallExecuteSequence>
266 -
267 - <InstallUISequence>
268 - <Custom Action="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
269 - </InstallUISequence>
270 - </Fragment>
271 - <Fragment>
272 - <Property Id="WIX_ACCOUNT_LOCALSYSTEM" Secure="yes" />
273 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
274 - </Fragment>
275 - <Fragment>
276 - <Property Id="WIX_ACCOUNT_LOCALSERVICE" Secure="yes" />
277 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
278 - </Fragment>
279 - <Fragment>
280 - <Property Id="WIX_ACCOUNT_NETWORKSERVICE" Secure="yes" />
281 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
282 - </Fragment>
283 - <Fragment>
284 - <Property Id="WIX_ACCOUNT_ADMINISTRATORS" Secure="yes" />
285 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
286 - </Fragment>
287 - <Fragment>
288 - <Property Id="WIX_ACCOUNT_USERS" Secure="yes" />
289 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
290 - </Fragment>
291 - <Fragment>
292 - <Property Id="WIX_ACCOUNT_GUESTS" Secure="yes" />
293 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
294 - </Fragment>
295 - <Fragment>
296 - <Property Id="WIX_ACCOUNT_PERFLOGUSERS" Secure="yes" />
297 - <Property Id="WIX_ACCOUNT_PERFLOGUSERS_NODOMAIN" Secure="yes" />
298 - <CustomActionRef Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" />
299 - </Fragment>
300 -
301 - <Fragment>
302 - <CustomAction Id="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsDriverInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
303 -
304 - <InstallExecuteSequence>
305 - <Custom Action="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
306 - </InstallExecuteSequence>
307 -
308 - <InstallUISequence>
309 - <Custom Action="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
310 - </InstallUISequence>
311 - </Fragment>
312 -
313 - <Fragment>
314 - <Property Id="WIX_WDDM_DRIVER_PRESENT" Secure="yes" />
315 - <CustomActionRef Id="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" />
316 - </Fragment>
317 -
318 - <Fragment>
319 - <Property Id="WIX_DWM_COMPOSITION_ENABLED" Secure="yes" />
320 - <CustomActionRef Id="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" />
321 - </Fragment>
322 -
65 <Fragment>
66 <BundleExtension Id="WixUtilBundleExtension" SourceFile="utilbe.dll" Name="WixUtilBundleExtension\utilbe.dll" />
67 </Fragment>
src/wixlib/UtilExtension_Platform.wxi
+48
@@ -299,6 +299,54 @@
299 </InstallExecuteSequence>
300 </Fragment>
301
302 + <Fragment>
303 + <CustomAction Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
304 +
305 + <InstallExecuteSequence>
306 + <Custom Action="$(var.Prefix)QueryOsInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
307 + </InstallExecuteSequence>
308 +
309 + <InstallUISequence>
310 + <Custom Action="$(var.Prefix)QueryOsInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
311 + </InstallUISequence>
312 + </Fragment>
313 +
314 + <Fragment>
315 + <CustomAction Id="$(var.Prefix)QueryOsDirs$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsDirs" Execute="firstSequence" Return="check" SuppressModularization="yes" />
316 +
317 + <InstallExecuteSequence>
318 + <Custom Action="$(var.Prefix)QueryOsDirs$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
319 + </InstallExecuteSequence>
320 +
321 + <InstallUISequence>
322 + <Custom Action="$(var.Prefix)QueryOsDirs$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
323 + </InstallUISequence>
324 + </Fragment>
325 +
326 + <Fragment>
327 + <CustomAction Id="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsWellKnownSID" Execute="firstSequence" Return="check" SuppressModularization="yes" />
328 +
329 + <InstallExecuteSequence>
330 + <Custom Action="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
331 + </InstallExecuteSequence>
332 +
333 + <InstallUISequence>
334 + <Custom Action="$(var.Prefix)QueryOsWellKnownSID$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
335 + </InstallUISequence>
336 + </Fragment>
337 +
338 + <Fragment>
339 + <CustomAction Id="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsDriverInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
340 +
341 + <InstallExecuteSequence>
342 + <Custom Action="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
343 + </InstallExecuteSequence>
344 +
345 + <InstallUISequence>
346 + <Custom Action="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" After="AppSearch" Overridable="yes" Condition="VersionNT &gt; 400 OR (VersionNT = 400 AND ServicePackLevel &gt; 3)" />
347 + </InstallUISequence>
348 + </Fragment>
349 +
350 <Fragment>
351 <Binary Id="$(var.Prefix)UtilCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilca.dll" />
352 </Fragment>