@joebigelow / wix-1 / commits / d694ea72

Import code from old v4 repo

Sean Hall committed Feb 2, 2019 at 15:13 UTC d694ea725efa855edfca0863cf462b1c0f26c156
12 files changed +507
src/wixext/DifxAppCompiler.cs new
+148
@@ -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 +
3 +namespace 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 +}
src/wixext/DifxAppDecompiler.cs new
+96
@@ -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 +
3 +namespace 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 +}
src/wixext/DifxAppExtensionData.cs new
+43
@@ -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 +
3 +namespace 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 +}
src/wixext/WixDifxAppExtension.csproj new
+47
@@ -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>
src/wixext/difxapp.xsd new
+108
@@ -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>
src/wixext/tables.xml new
+14
@@ -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>
src/wixlib/DIFxAppExtension.wixproj new
+30
@@ -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>
src/wixlib/DIFxAppExtension.wxs new
+21
@@ -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>
src/wixlib/x64/DIFxApp.dll
Binary files /dev/null and b/src/wixlib/x64/DIFxApp.dll differ
src/wixlib/x64/DIFxAppA.dll
Binary files /dev/null and b/src/wixlib/x64/DIFxAppA.dll differ
src/wixlib/x86/DIFxApp.dll
Binary files /dev/null and b/src/wixlib/x86/DIFxApp.dll differ
src/wixlib/x86/DIFxAppA.dll
Binary files /dev/null and b/src/wixlib/x86/DIFxAppA.dll differ