diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2019-02-02 15:13:20 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2019-02-02 15:13:20 -0600 |
commit | d694ea725efa855edfca0863cf462b1c0f26c156 (patch) | |
tree | 0bebe8437550f6b6176683f9abdca8278eb0d1f2 | |
parent | 88ddf1293d0cc37474606fa191c3cf916e0f83e3 (diff) | |
download | wix-d694ea725efa855edfca0863cf462b1c0f26c156.tar.gz wix-d694ea725efa855edfca0863cf462b1c0f26c156.tar.bz2 wix-d694ea725efa855edfca0863cf462b1c0f26c156.zip |
Import code from old v4 repo
-rw-r--r-- | src/wixext/DifxAppCompiler.cs | 148 | ||||
-rw-r--r-- | src/wixext/DifxAppDecompiler.cs | 96 | ||||
-rw-r--r-- | src/wixext/DifxAppExtensionData.cs | 43 | ||||
-rw-r--r-- | src/wixext/WixDifxAppExtension.csproj | 47 | ||||
-rw-r--r-- | src/wixext/difxapp.xsd | 108 | ||||
-rw-r--r-- | src/wixext/tables.xml | 14 | ||||
-rw-r--r-- | src/wixlib/DIFxAppExtension.wixproj | 30 | ||||
-rw-r--r-- | src/wixlib/DIFxAppExtension.wxs | 21 | ||||
-rw-r--r-- | src/wixlib/x64/DIFxApp.dll | bin | 0 -> 153080 bytes | |||
-rw-r--r-- | src/wixlib/x64/DIFxAppA.dll | bin | 0 -> 707464 bytes | |||
-rw-r--r-- | src/wixlib/x86/DIFxApp.dll | bin | 0 -> 122248 bytes | |||
-rw-r--r-- | src/wixlib/x86/DIFxAppA.dll | bin | 0 -> 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 | |||
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 | } | ||
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 | |||
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 | } | ||
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 | |||
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 | } | ||
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 > 400</Custom> | ||
9 | <Custom Action='MsiCleanupOnSuccess' After='InstallFinalize'>VersionNT > 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 | |||