aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-02-02 15:13:20 -0600
committerSean Hall <r.sean.hall@gmail.com>2019-02-02 15:13:20 -0600
commitd694ea725efa855edfca0863cf462b1c0f26c156 (patch)
tree0bebe8437550f6b6176683f9abdca8278eb0d1f2
parent88ddf1293d0cc37474606fa191c3cf916e0f83e3 (diff)
downloadwix-d694ea725efa855edfca0863cf462b1c0f26c156.tar.gz
wix-d694ea725efa855edfca0863cf462b1c0f26c156.tar.bz2
wix-d694ea725efa855edfca0863cf462b1c0f26c156.zip
Import code from old v4 repo
-rw-r--r--src/wixext/DifxAppCompiler.cs148
-rw-r--r--src/wixext/DifxAppDecompiler.cs96
-rw-r--r--src/wixext/DifxAppExtensionData.cs43
-rw-r--r--src/wixext/WixDifxAppExtension.csproj47
-rw-r--r--src/wixext/difxapp.xsd108
-rw-r--r--src/wixext/tables.xml14
-rw-r--r--src/wixlib/DIFxAppExtension.wixproj30
-rw-r--r--src/wixlib/DIFxAppExtension.wxs21
-rw-r--r--src/wixlib/x64/DIFxApp.dllbin0 -> 153080 bytes
-rw-r--r--src/wixlib/x64/DIFxAppA.dllbin0 -> 707464 bytes
-rw-r--r--src/wixlib/x86/DIFxApp.dllbin0 -> 122248 bytes
-rw-r--r--src/wixlib/x86/DIFxAppA.dllbin0 -> 364424 bytes
12 files changed, 507 insertions, 0 deletions
diff --git a/src/wixext/DifxAppCompiler.cs b/src/wixext/DifxAppCompiler.cs
new file mode 100644
index 00000000..63396932
--- /dev/null
+++ b/src/wixext/DifxAppCompiler.cs
@@ -0,0 +1,148 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Extensions
4{
5 using System;
6 using System.Collections.Generic;
7 using System.Xml.Linq;
8 using WixToolset.Data;
9 using WixToolset.Extensibility;
10
11 /// <summary>
12 /// The compiler for the WiX Toolset Driver Install Frameworks for Applications Extension.
13 /// </summary>
14 public sealed class DifxAppCompiler : CompilerExtension
15 {
16 private HashSet<string> components;
17
18 /// <summary>
19 /// Instantiate a new DifxAppCompiler.
20 /// </summary>
21 public DifxAppCompiler()
22 {
23 this.Namespace = "http://wixtoolset.org/schemas/v4/wxs/difxapp";
24 this.components = new HashSet<string>();
25 }
26
27 /// <summary>
28 /// Processes an element for the Compiler.
29 /// </summary>
30 /// <param name="sourceLineNumbers">Source line number for the parent element.</param>
31 /// <param name="parentElement">Parent element of element to process.</param>
32 /// <param name="element">Element to process.</param>
33 /// <param name="contextValues">Extra information about the context in which this element is being parsed.</param>
34 public override void ParseElement(XElement parentElement, XElement element, IDictionary<string, string> context)
35 {
36 switch (parentElement.Name.LocalName)
37 {
38 case "Component":
39 string componentId = context["ComponentId"];
40 string directoryId = context["DirectoryId"];
41
42 switch (element.Name.LocalName)
43 {
44 case "Driver":
45 this.ParseDriverElement(element, componentId);
46 break;
47 default:
48 this.Core.UnexpectedElement(parentElement, element);
49 break;
50 }
51 break;
52 default:
53 this.Core.UnexpectedElement(parentElement, element);
54 break;
55 }
56 }
57
58 /// <summary>
59 /// Parses a Driver element.
60 /// </summary>
61 /// <param name="node">Element to parse.</param>
62 /// <param name="componentId">Identifier for parent component.</param>
63 private void ParseDriverElement(XElement node, string componentId)
64 {
65 SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
66 int attributes = 0;
67 int sequence = CompilerConstants.IntegerNotSet;
68
69 // check the number of times a Driver element has been nested under this Component element
70 if (null != componentId)
71 {
72 if (this.components.Contains(componentId))
73 {
74 this.Core.OnMessage(WixErrors.TooManyElements(sourceLineNumbers, "Component", node.Name.LocalName, 1));
75 }
76 else
77 {
78 this.components.Add(componentId);
79 }
80 }
81
82 foreach (XAttribute attrib in node.Attributes())
83 {
84 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
85 {
86 switch (attrib.Name.LocalName)
87 {
88 case "AddRemovePrograms":
89 if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
90 {
91 attributes |= 0x4;
92 }
93 break;
94 case "DeleteFiles":
95 if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
96 {
97 attributes |= 0x10;
98 }
99 break;
100 case "ForceInstall":
101 if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
102 {
103 attributes |= 0x1;
104 }
105 break;
106 case "Legacy":
107 if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
108 {
109 attributes |= 0x8;
110 }
111 break;
112 case "PlugAndPlayPrompt":
113 if (YesNoType.No == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
114 {
115 attributes |= 0x2;
116 }
117 break;
118 case "Sequence":
119 sequence = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, int.MaxValue);
120 break;
121 default:
122 this.Core.UnexpectedAttribute(node, attrib);
123 break;
124 }
125 }
126 else
127 {
128 this.Core.ParseExtensionAttribute(node, attrib);
129 }
130 }
131
132 this.Core.ParseForExtensionElements(node);
133
134 if (!this.Core.EncounteredError)
135 {
136 Row row = this.Core.CreateRow(sourceLineNumbers, "MsiDriverPackages");
137 row[0] = componentId;
138 row[1] = attributes;
139 if (CompilerConstants.IntegerNotSet != sequence)
140 {
141 row[2] = sequence;
142 }
143
144 this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "MsiProcessDrivers");
145 }
146 }
147 }
148}
diff --git a/src/wixext/DifxAppDecompiler.cs b/src/wixext/DifxAppDecompiler.cs
new file mode 100644
index 00000000..db42b3d0
--- /dev/null
+++ b/src/wixext/DifxAppDecompiler.cs
@@ -0,0 +1,96 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Extensions
4{
5 using System;
6 using System.Collections;
7 using System.Globalization;
8 using WixToolset.Data;
9 using WixToolset.Extensibility;
10 using DifxApp = WixToolset.Extensions.Serialize.DifxApp;
11 using Wix = WixToolset.Data.Serialize;
12
13 /// <summary>
14 /// The decompiler for the WiX Toolset Driver Install Frameworks for Applications Extension.
15 /// </summary>
16 public sealed class DifxAppDecompiler : DecompilerExtension
17 {
18 /// <summary>
19 /// Creates a decompiler for Gaming Extension.
20 /// </summary>
21 public DifxAppDecompiler()
22 {
23 this.TableDefinitions = DifxAppExtensionData.GetExtensionTableDefinitions();
24 }
25
26 /// <summary>
27 /// Decompiles an extension table.
28 /// </summary>
29 /// <param name="table">The table to decompile.</param>
30 public override void DecompileTable(Table table)
31 {
32 switch (table.Name)
33 {
34 case "MsiDriverPackages":
35 this.DecompileMsiDriverPackagesTable(table);
36 break;
37 default:
38 base.DecompileTable(table);
39 break;
40 }
41 }
42
43 /// <summary>
44 /// Decompile the MsiDriverPackages table.
45 /// </summary>
46 /// <param name="table">The table to decompile.</param>
47 private void DecompileMsiDriverPackagesTable(Table table)
48 {
49 foreach (Row row in table.Rows)
50 {
51 DifxApp.Driver driver = new DifxApp.Driver();
52
53 int attributes = (int)row[1];
54 if (0x1 == (attributes & 0x1))
55 {
56 driver.ForceInstall = DifxApp.YesNoType.yes;
57 }
58
59 if (0x2 == (attributes & 0x2))
60 {
61 driver.PlugAndPlayPrompt = DifxApp.YesNoType.no;
62 }
63
64 if (0x4 == (attributes & 0x4))
65 {
66 driver.AddRemovePrograms = DifxApp.YesNoType.no;
67 }
68
69 if (0x8 == (attributes & 0x8))
70 {
71 driver.Legacy = DifxApp.YesNoType.yes;
72 }
73
74 if (0x10 == (attributes & 0x10))
75 {
76 driver.DeleteFiles = DifxApp.YesNoType.yes;
77 }
78
79 if (null != row[2])
80 {
81 driver.Sequence = (int)row[2];
82 }
83
84 Wix.Component component = (Wix.Component)this.Core.GetIndexedElement("Component", (string)row[0]);
85 if (null != component)
86 {
87 component.AddChild(driver);
88 }
89 else
90 {
91 this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "Component", (string)row[0], "Component"));
92 }
93 }
94 }
95 }
96}
diff --git a/src/wixext/DifxAppExtensionData.cs b/src/wixext/DifxAppExtensionData.cs
new file mode 100644
index 00000000..266f5ee4
--- /dev/null
+++ b/src/wixext/DifxAppExtensionData.cs
@@ -0,0 +1,43 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Extensions
4{
5 using System;
6 using System.Reflection;
7 using WixToolset.Data;
8 using WixToolset.Extensibility;
9
10 /// <summary>
11 /// The WiX Toolset Driver Install Frameworks for Applications Extension.
12 /// </summary>
13 public sealed class DifxAppExtensionData : ExtensionData
14 {
15 private static TableDefinitionCollection tableDefinitions;
16
17 /// <summary>
18 /// Gets the optional table definitions for this extension.
19 /// </summary>
20 /// <value>The optional table definitions for this extension.</value>
21 public override TableDefinitionCollection TableDefinitions
22 {
23 get
24 {
25 return DifxAppExtensionData.GetExtensionTableDefinitions();
26 }
27 }
28
29 /// <summary>
30 /// Internal mechanism to access the extension's table definitions.
31 /// </summary>
32 /// <returns>Extension's table definitions.</returns>
33 internal static TableDefinitionCollection GetExtensionTableDefinitions()
34 {
35 if (null == DifxAppExtensionData.tableDefinitions)
36 {
37 DifxAppExtensionData.tableDefinitions = ExtensionData.LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.tables.xml");
38 }
39
40 return DifxAppExtensionData.tableDefinitions;
41 }
42 }
43}
diff --git a/src/wixext/WixDifxAppExtension.csproj b/src/wixext/WixDifxAppExtension.csproj
new file mode 100644
index 00000000..5e85c675
--- /dev/null
+++ b/src/wixext/WixDifxAppExtension.csproj
@@ -0,0 +1,47 @@
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
5<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
6 <PropertyGroup>
7 <ProjectGuid>{2256EFD7-E678-4485-818D-986D590068BE}</ProjectGuid>
8 <AssemblyName>WixDifxAppExtension</AssemblyName>
9 <OutputType>Library</OutputType>
10 <RootNamespace>WixToolset.Extensions</RootNamespace>
11 </PropertyGroup>
12 <ItemGroup>
13 <Compile Include="AssemblyInfo.cs" />
14 <Compile Include="DifxAppCompiler.cs" />
15 <Compile Include="DifxAppDecompiler.cs" />
16 <Compile Include="DifxAppExtensionData.cs" />
17 <EmbeddedFlattenedResource Include="Data\tables.xml">
18 <LogicalName>$(RootNamespace).Data.tables.xml</LogicalName>
19 </EmbeddedFlattenedResource>
20 <EmbeddedFlattenedResource Include="Xsd\difxapp.xsd">
21 <LogicalName>$(RootNamespace).Xsd.difxapp.xsd</LogicalName>
22 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
23 </EmbeddedFlattenedResource>
24 <XsdGenSource Include="Xsd\difxapp.xsd">
25 <SubType>Designer</SubType>
26 <CommonNamespace>WixToolset.Data.Serialize</CommonNamespace>
27 <Namespace>WixToolset.Extensions.Serialize.DifxApp</Namespace>
28 </XsdGenSource>
29 </ItemGroup>
30 <ItemGroup>
31 <Reference Include="System" />
32 <Reference Include="System.Xml" />
33 <Reference Include="System.Xml.Linq" />
34 <ProjectReference Include="..\..\..\libs\WixToolset.Data\WixToolset.Data.csproj" />
35 <ProjectReference Include="..\..\..\libs\WixToolset.Extensibility\WixToolset.Extensibility.csproj" />
36 <ProjectReference Include="..\..\..\tools\wix\Wix.csproj" />
37 <ProjectReference Include="..\wixlib\DIFxAppExtension.wixproj">
38 <Properties>Platform=x86</Properties>
39 <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
40 </ProjectReference>
41 <ProjectReference Include="..\wixlib\DIFxAppExtension.wixproj">
42 <Properties>Platform=x64</Properties>
43 <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
44 </ProjectReference>
45 </ItemGroup>
46 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />
47</Project>
diff --git a/src/wixext/difxapp.xsd b/src/wixext/difxapp.xsd
new file mode 100644
index 00000000..e665d034
--- /dev/null
+++ b/src/wixext/difxapp.xsd
@@ -0,0 +1,108 @@
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
5<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
6 xmlns:wix="http://wixtoolset.org/schemas/v4/wxs"
7 xmlns:xs="http://www.w3.org/2001/XMLSchema"
8 xmlns:xse=" http://wixtoolset.org/schemas/XmlSchemaExtension"
9 targetNamespace="http://wixtoolset.org/schemas/v4/wxs/difxapp"
10 xmlns="http://wixtoolset.org/schemas/v4/wxs/difxapp">
11 <xs:annotation>
12 <xs:documentation>
13 The source code schema for the WiX Toolset Driver Install Frameworks for Applications Extension.
14 </xs:documentation>
15 </xs:annotation>
16
17 <xs:import namespace="http://wixtoolset.org/schemas/v4/wxs" />
18
19 <xs:element name="Driver">
20 <xs:annotation>
21 <xs:appinfo>
22 <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
23 </xs:appinfo>
24 <xs:documentation>
25 Installs a driver. To use this element, you need to reference the WixDifxAppExtension extension and add the
26 .wixlib appropriate for the target platform (difxapp_x86.wixlib or difxapp_x64.wixlib)
27 to your project.
28 </xs:documentation>
29 </xs:annotation>
30 <xs:complexType>
31 <xs:attribute name="AddRemovePrograms" type="YesNoType">
32 <xs:annotation>
33 <xs:documentation>
34 Specifies that the DIFxApp CustomActions should add an entry in the Add/Remove Programs Control
35 Panel applet. The default is 'yes'.
36 </xs:documentation>
37 </xs:annotation>
38 </xs:attribute>
39 <xs:attribute name="DeleteFiles" type="YesNoType">
40 <xs:annotation>
41 <xs:documentation>
42 If set to "yes", configures DIFxApp to delete binary files that were copied to the system from the driver
43 store when a driver package was installed. If this attribute is set to "no" or not present, DIFxApp does not
44 remove these files from a system. Note that configuring DIFxApp to delete these files is controlled by the
45 Flags entry value of the component that represents the driver package in the MsiDriverPackages custom table.
46 Setting DeleteFiles to "yes" sets the corresponding bit in the Flags entry value. Setting DeleteFiles to "no"
47 clears the corresponding bit in the Flags entry value. If this attribute is not present, DIFxApp uses a
48 default value of "no".
49 </xs:documentation>
50 </xs:annotation>
51 </xs:attribute>
52 <xs:attribute name="ForceInstall" type="YesNoType">
53 <xs:annotation>
54 <xs:documentation>
55 Specifies that the DIFxApp CustomActions should force the installation of a new Plug and Play driver
56 on a device, even if the currently installed driver on the device is a better match than the new driver.
57 Specifying 'no' is an excellent way to ensure the DIFxApp CustomActions recognize the Component contains
58 a driver for installation. The default is null which means the Component does not install a driver via
59 DIFxApp CustomActions. See <html:a href='http://www.microsoft.com/whdc/driver/install/difxtools.mspx'>http://www.microsoft.com/whdc/driver/install/difxtools.mspx</html:a>
60 for more information.
61 </xs:documentation>
62 </xs:annotation>
63 </xs:attribute>
64 <xs:attribute name="Legacy" type="YesNoType">
65 <xs:annotation>
66 <xs:documentation>
67 If set to "yes", configures DIFxApp to install unsigned driver packages and driver packages with missing
68 files. For more information, see "Installing Unsigned Driver Packages in Legacy Mode" earlier in this paper.
69 If this attribute is set to "no" or not present, DIFxApp will install only signed driver packages. Note
70 that configuring DIFxApp to install unsigned drivers is controlled by the Flags entry value of the component
71 that represents the driver package in the MsiDriverPackages custom table. Setting Legacy to "yes" sets
72 the corresponding bit in the Flags entry value. Setting Legacy to "no" clears the bit in the Flags
73 entry value that configures DIFxApp to install unsigned driver packages. If this attribute is not present,
74 DIFxApp uses a default value of "no".
75 </xs:documentation>
76 </xs:annotation>
77 </xs:attribute>
78 <xs:attribute name="PlugAndPlayPrompt" type="YesNoType">
79 <xs:annotation>
80 <xs:documentation>
81 Specifies that the DIFxApp CustomActions should prompt the user to connect the Plug and Play
82 device if it is not connected. The default is 'yes'.
83 </xs:documentation>
84 </xs:annotation>
85 </xs:attribute>
86 <xs:attribute name="Sequence" type="xs:integer">
87 <xs:annotation>
88 <xs:documentation>
89 Specifies an optional installation sequence number. DIFxApp CustomActions install the driver packages in
90 an installation package in the order of increasing sequence numbers. The same sequence number can be used
91 for more than one driver; however, the order in which packages with the same sequence number are actually
92 installed cannot be determined.
93 </xs:documentation>
94 </xs:annotation>
95 </xs:attribute>
96 </xs:complexType>
97 </xs:element>
98
99 <xs:simpleType name="YesNoType">
100 <xs:annotation>
101 <xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
102 </xs:annotation>
103 <xs:restriction base='xs:NMTOKEN'>
104 <xs:enumeration value="no"/>
105 <xs:enumeration value="yes"/>
106 </xs:restriction>
107 </xs:simpleType>
108</xs:schema>
diff --git a/src/wixext/tables.xml b/src/wixext/tables.xml
new file mode 100644
index 00000000..c328f875
--- /dev/null
+++ b/src/wixext/tables.xml
@@ -0,0 +1,14 @@
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
5<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
6 <tableDefinition name="MsiDriverPackages">
7 <columnDefinition name="Component" type="string" length="72" primaryKey="yes" modularize="column"
8 keyTable="Component" keyColumn="1" category="identifier" description="Name of the component that represents the driver package"/>
9 <columnDefinition name="Flags" type="number" length="4"
10 minValue="0" maxValue="31" description="Flags for installing and uninstalling driver packages"/>
11 <columnDefinition name="Sequence" type="number" length="4" nullable="yes"
12 minValue="0" description="Order in which the driver packages are processed"/>
13 </tableDefinition>
14</tableDefinitions>
diff --git a/src/wixlib/DIFxAppExtension.wixproj b/src/wixlib/DIFxAppExtension.wixproj
new file mode 100644
index 00000000..f4a7eb74
--- /dev/null
+++ b/src/wixlib/DIFxAppExtension.wixproj
@@ -0,0 +1,30 @@
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
5<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
6 <PropertyGroup>
7 <ProjectGuid>{5066EB93-D8F7-4FAE-B687-024D7A81BD95}</ProjectGuid>
8 <OutputName>difxapp_$(Platform)</OutputName>
9 <OutputType>Library</OutputType>
10 <BindFiles>true</BindFiles>
11 <Pedantic>true</Pedantic>
12 <Cultures>en-us</Cultures>
13 </PropertyGroup>
14
15 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.props" />
16
17 <PropertyGroup>
18 <DefineConstants>
19 $(DefineConstants);
20 DIFxAppDll=$(ProjectDir)$(Platform)\DIFxApp.dll;
21 DIFxAppADll=$(ProjectDir)$(Platform)\DIFxAppA.dll;
22 </DefineConstants>
23 </PropertyGroup>
24
25 <ItemGroup>
26 <Compile Include="DIFxAppExtension.wxs" />
27 </ItemGroup>
28
29 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />
30</Project>
diff --git a/src/wixlib/DIFxAppExtension.wxs b/src/wixlib/DIFxAppExtension.wxs
new file mode 100644
index 00000000..44b0ce2c
--- /dev/null
+++ b/src/wixlib/DIFxAppExtension.wxs
@@ -0,0 +1,21 @@
1<?xml version='1.0'?>
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
5<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>
6 <Fragment Id='DIFxAppCustomActions'>
7 <InstallExecuteSequence>
8 <Custom Action='MsiProcessDrivers' After='InstallFiles'>VersionNT &gt; 400</Custom>
9 <Custom Action='MsiCleanupOnSuccess' After='InstallFinalize'>VersionNT &gt; 400</Custom>
10 </InstallExecuteSequence>
11
12 <Binary Id='DIFxApp.dll' SourceFile='$(var.DIFxAppDll)'/>
13 <Binary Id='DIFxAppA.dll' SourceFile='$(var.DIFxAppADll)'/>
14
15 <CustomAction Id='MsiProcessDrivers' BinaryKey='DIFxApp.dll' DllEntry='ProcessDriverPackages' SuppressModularization='yes' Execute='immediate' />
16 <CustomAction Id='MsiInstallDrivers' BinaryKey='DIFxAppA.dll' DllEntry='InstallDriverPackages' SuppressModularization='yes' Execute='deferred' Impersonate='no' />
17 <CustomAction Id='MsiUninstallDrivers' BinaryKey='DIFxAppA.dll' DllEntry='UninstallDriverPackages' SuppressModularization='yes' Execute='deferred' Impersonate='no' />
18 <CustomAction Id='MsiRollbackInstall' BinaryKey='DIFxAppA.dll' DllEntry='RollbackInstall' SuppressModularization='yes' Execute='rollback' Impersonate='no' />
19 <CustomAction Id='MsiCleanupOnSuccess' BinaryKey='DIFxApp.dll' DllEntry='CleanupOnSuccess' SuppressModularization='yes' Execute='immediate' />
20 </Fragment>
21</Wix>
diff --git a/src/wixlib/x64/DIFxApp.dll b/src/wixlib/x64/DIFxApp.dll
new file mode 100644
index 00000000..69a44cc8
--- /dev/null
+++ b/src/wixlib/x64/DIFxApp.dll
Binary files differ
diff --git a/src/wixlib/x64/DIFxAppA.dll b/src/wixlib/x64/DIFxAppA.dll
new file mode 100644
index 00000000..99458040
--- /dev/null
+++ b/src/wixlib/x64/DIFxAppA.dll
Binary files differ
diff --git a/src/wixlib/x86/DIFxApp.dll b/src/wixlib/x86/DIFxApp.dll
new file mode 100644
index 00000000..678a9d95
--- /dev/null
+++ b/src/wixlib/x86/DIFxApp.dll
Binary files differ
diff --git a/src/wixlib/x86/DIFxAppA.dll b/src/wixlib/x86/DIFxAppA.dll
new file mode 100644
index 00000000..3ac0838d
--- /dev/null
+++ b/src/wixlib/x86/DIFxAppA.dll
Binary files differ