style(design): apply Minimal Dark Mode design system\n\n- Switched to complete Dark Mode (OLED-friendly)\n- Established standard color palette matching modern technical aesthetics\n- Changed font to Plus Jakarta Sans for increased legibility\n- Enforced dark mode as default in App.tsx\n- Fixed several React cascading render (setState in useEffect) warnings

This commit is contained in:
Gemini Nexus Bot committed 2026-04-28 03:49:34 -03:00
1 parent b80531f8a8
commit bac7b5591e
738 files changed
+138513 -138123

No files matched your search

+28 -28
View File
@@ -1,28 +1,28 @@
Copyright (c) .NET Foundation and contributors.
This software is released under the Microsoft Reciprocal License (MS-RL) (the "License"); you may not use the software except in compliance with the License.
The text of the Microsoft Reciprocal License (MS-RL) can be found online at:
http://opensource.org/licenses/ms-rl
Microsoft Reciprocal License (MS-RL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
Copyright (c) .NET Foundation and contributors.
This software is released under the Microsoft Reciprocal License (MS-RL) (the "License"); you may not use the software except in compliance with the License.
The text of the Microsoft Reciprocal License (MS-RL) can be found online at:
http://opensource.org/licenses/ms-rl
Microsoft Reciprocal License (MS-RL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+12 -12
View File
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixDifxAppExtension;WixDependencyExtension;WixDirectXExtension;WixFirewallExtension;WixGamingExtension;WixHttpExtension;WixIIsExtension;WixNetFxExtension;WixSqlExtension;WixUIExtension;WixUtilExtension;WixVSExtension" />
</appSettings>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixDifxAppExtension;WixDependencyExtension;WixDirectXExtension;WixFirewallExtension;WixGamingExtension;WixHttpExtension;WixIIsExtension;WixNetFxExtension;WixSqlExtension;WixUIExtension;WixUtilExtension;WixVSExtension" />
</appSettings>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+221 -221
View File
@@ -1,221 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension" targetNamespace="http://schemas.microsoft.com/wix/DependencyExtension" xmlns="http://schemas.microsoft.com/wix/DependencyExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Dependency Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="Provides">
<xs:annotation>
<xs:documentation>
Describes the information for this product or feature that serves as a dependency of other products or features.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ExePackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsiPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MspPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsuPackage" />
<xse:remarks>
<html:p>
This element is required for any product, feature, or bundle that will use the Dependency feature to properly reference count
other products or features. It should be authored into a component that is always installed and removed with the
product or features that contain it. This guarantees that product dependencies are not removed before those products that
depend on them.
</html:p>
<html:p>
The @Key attribute should identify a version range for your product that you guarantee will be backward compatible.
This key is designed to persist throughout compatible upgrades so that dependent products do not have to be reinstalled
and will not prevent your product from being upgraded. If this attribute is not authored, the value is the ProductCode
and will not automatically support upgrades.
</html:p>
<html:p>
By default this uses the Product/@Id attribute value, which may be automatically generated.
</html:p>
</xse:remarks>
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Requires" />
<xs:element ref="RequiresRef" />
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Dependency provider identity. If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Key" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional unique registry key name that identifies a product version range on which other products can depend.
This attribute is required in package authoring, but optional for components.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Version" type="VersionType">
<xs:annotation>
<xs:documentation>
The version of the package. For MSI packages, the ProductVersion will be used by default
and this attribute should not be specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisplayName" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional display name of the package. For MSI packages, the ProductName will be used by default.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Requires">
<xs:annotation>
<xs:documentation>
Describes a dependency on a provider for the current component or package.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
<xse:remarks>
<html:p>
This element declares a dependency on any product that uses the Provides element. If that product is uninstalled
before a product that requires it, the uninstall will err or warn the user that other products are installed
which depend on that product. This behavior can be modified by changing the attribute values on the Requires element.
</html:p>
<html:p>
If you do not nest this element under a Provides element, you must specify the @Id attribute
so that it can be referenced by a RequiresRef element nested under a Provides element.
</html:p>
</xse:remarks>
<xse:seeAlso ref="RequiresRef" />
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Dependency requirement identity. If this attribute is not specified, an identifier will be generated automatically.
If this element is not authored under a Provides element, this attribute is required.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ProviderKey" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The unique registry key name for the dependency provider to require during installation of this product.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Minimum" type="VersionType">
<xs:annotation>
<xs:documentation>
The minimum version of the dependency provider required to be installed. The default is unbound.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Maximum" type="VersionType">
<xs:annotation>
<xs:documentation>
The maximum version of the dependency provider required to be installed. The default is unbound.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeMinimum" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to make the range of dependency provider versions required include the value specified in Minimum.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeMaximum" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to make the range of dependency provider versions required include the value specified in Maximum.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="RequiresRef">
<xs:annotation>
<xs:documentation>
References existing authoring for a dependency on a provider for the current component or package.
</xs:documentation>
<xs:appinfo>
<xse:remarks>
<html:p>
This element references a dependency on any product that uses the Provides element. If that product is uninstalled
before a product that requires it, the uninstall will err or warn the user that other products are installed
which depend on that product. This behavior can be modified by changing the attribute values on the Requires element.
</html:p>
</xse:remarks>
<xse:seeAlso ref="Requires" />
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier of the Requires element to reference.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="ProviderKey" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional attribute to explicitly author the provider key for the entire bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:remarks>
<html:p>
This provider key is designed to persist throughout compatible upgrades so that dependent bundles do not have to be reinstalled
and will not prevent your product from being upgraded. If this attribute is not authored, the value is the
automatically-generated bundle ID and will not automatically support upgrades.
</html:p>
<html:p>
Only a single provider key is supported for bundles. To author that your bundle provides additional features via
packages, author different provider keys for your packages.
</html:p>
</xse:remarks>
<xse:seeAlso ref="Provides" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:simpleType name="VersionType">
<xs:annotation>
<xs:documentation>
Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.
This can also be a preprocessor, binder, or WiX variable.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\d{1,5}\.){3}\d{1,5}|[!$]\((var|bind|wix)\.[_A-Za-z][\w\.]*\)" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>
Values of this type will either be "yes" or "no".
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension" targetNamespace="http://schemas.microsoft.com/wix/DependencyExtension" xmlns="http://schemas.microsoft.com/wix/DependencyExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Dependency Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="Provides">
<xs:annotation>
<xs:documentation>
Describes the information for this product or feature that serves as a dependency of other products or features.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ExePackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsiPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MspPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsuPackage" />
<xse:remarks>
<html:p>
This element is required for any product, feature, or bundle that will use the Dependency feature to properly reference count
other products or features. It should be authored into a component that is always installed and removed with the
product or features that contain it. This guarantees that product dependencies are not removed before those products that
depend on them.
</html:p>
<html:p>
The @Key attribute should identify a version range for your product that you guarantee will be backward compatible.
This key is designed to persist throughout compatible upgrades so that dependent products do not have to be reinstalled
and will not prevent your product from being upgraded. If this attribute is not authored, the value is the ProductCode
and will not automatically support upgrades.
</html:p>
<html:p>
By default this uses the Product/@Id attribute value, which may be automatically generated.
</html:p>
</xse:remarks>
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Requires" />
<xs:element ref="RequiresRef" />
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Dependency provider identity. If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Key" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional unique registry key name that identifies a product version range on which other products can depend.
This attribute is required in package authoring, but optional for components.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Version" type="VersionType">
<xs:annotation>
<xs:documentation>
The version of the package. For MSI packages, the ProductVersion will be used by default
and this attribute should not be specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisplayName" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional display name of the package. For MSI packages, the ProductName will be used by default.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Requires">
<xs:annotation>
<xs:documentation>
Describes a dependency on a provider for the current component or package.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
<xse:remarks>
<html:p>
This element declares a dependency on any product that uses the Provides element. If that product is uninstalled
before a product that requires it, the uninstall will err or warn the user that other products are installed
which depend on that product. This behavior can be modified by changing the attribute values on the Requires element.
</html:p>
<html:p>
If you do not nest this element under a Provides element, you must specify the @Id attribute
so that it can be referenced by a RequiresRef element nested under a Provides element.
</html:p>
</xse:remarks>
<xse:seeAlso ref="RequiresRef" />
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Dependency requirement identity. If this attribute is not specified, an identifier will be generated automatically.
If this element is not authored under a Provides element, this attribute is required.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ProviderKey" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The unique registry key name for the dependency provider to require during installation of this product.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Minimum" type="VersionType">
<xs:annotation>
<xs:documentation>
The minimum version of the dependency provider required to be installed. The default is unbound.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Maximum" type="VersionType">
<xs:annotation>
<xs:documentation>
The maximum version of the dependency provider required to be installed. The default is unbound.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeMinimum" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to make the range of dependency provider versions required include the value specified in Minimum.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeMaximum" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to make the range of dependency provider versions required include the value specified in Maximum.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="RequiresRef">
<xs:annotation>
<xs:documentation>
References existing authoring for a dependency on a provider for the current component or package.
</xs:documentation>
<xs:appinfo>
<xse:remarks>
<html:p>
This element references a dependency on any product that uses the Provides element. If that product is uninstalled
before a product that requires it, the uninstall will err or warn the user that other products are installed
which depend on that product. This behavior can be modified by changing the attribute values on the Requires element.
</html:p>
</xse:remarks>
<xse:seeAlso ref="Requires" />
<xse:howtoRef href="author_product_dependencies.html">How To: Author product dependencies</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier of the Requires element to reference.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="ProviderKey" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional attribute to explicitly author the provider key for the entire bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:remarks>
<html:p>
This provider key is designed to persist throughout compatible upgrades so that dependent bundles do not have to be reinstalled
and will not prevent your product from being upgraded. If this attribute is not authored, the value is the
automatically-generated bundle ID and will not automatically support upgrades.
</html:p>
<html:p>
Only a single provider key is supported for bundles. To author that your bundle provides additional features via
packages, author different provider keys for your packages.
</html:p>
</xse:remarks>
<xse:seeAlso ref="Provides" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:simpleType name="VersionType">
<xs:annotation>
<xs:documentation>
Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.
This can also be a preprocessor, binder, or WiX variable.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\d{1,5}\.){3}\d{1,5}|[!$]\((var|bind|wix)\.[_A-Za-z][\w\.]*\)" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>
Values of this type will either be "yes" or "no".
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
+262 -262
View File
@@ -1,262 +1,262 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/BalExtension"
xmlns="http://schemas.microsoft.com/wix/BalExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Burn User Experience Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a bundle. The condition is specified in the inner text of the element.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:annotation>
<xs:documentation>
The condition that must evaluate to true for the installation to continue.
</xs:documentation>
</xs:annotation>
<xs:attribute name="Message" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Set the value to the text to display when the condition fails and the installation must be terminated.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="WixStandardBootstrapperApplication">
<xs:annotation>
<xs:documentation>
Configures WixStandardBootstrapperApplication for a Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="LaunchTarget" type="xs:string">
<xs:annotation>
<xs:documentation>
If set, the success page will show a Launch button the user can use to launch the application being installed.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchTargetElevatedId" type="xs:string">
<xs:annotation>
<xs:documentation>
Id of the target ApprovedExeForElevation element.
If set with LaunchTarget, WixStdBA will launch the application through the Engine's LaunchApprovedExe method instead of through ShellExecute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchArguments" type="xs:string">
<xs:annotation>
<xs:documentation>
If set, WixStdBA will supply these arguments when launching the application specified by the LaunchTarget attribute.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchHidden" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", WixStdBA will launch the application specified by the LaunchTarget attribute with the SW_HIDE flag.
This attribute is ignored when the LaunchTargetElevatedId attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchWorkingFolder" type="xs:string">
<xs:annotation>
<xs:documentation>
WixStdBA will use this working folder when launching the specified application.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
This attribute is ignored when the LaunchTargetElevatedId attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseUrl" type="xs:string">
<xs:annotation>
<xs:documentation>URL target of the license link. Cannot be used simultaneously with LicenseFile. This attribute can be empty to hide the license link completely.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoSideFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the side logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ThemeFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme XML.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LocalizationFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme localization .wxl file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressOptionsUI" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Options button will not be shown and the user will not be able to choose an installation directory.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressDowngradeFailure" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", attempting to installer a downgraded version of a bundle will be treated as a successful do-nothing operation.
The default behavior (or when explicitly set to "no") is to treat downgrade attempts as failures. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressRepair" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Repair button will not be shown in the maintenance-mode UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ShowVersion" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the application version will be displayed on the UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SupportCacheOnly" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the bundle can be pre-cached using the /cache command line argument.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ShowFilesInUse" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", WixStdBA will show a page allowing the user to restart applications when files are in use.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="PrereqSupportPackage" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", the Prereq BA will plan the package to be installed if its InstallCondition is "true" or empty.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ExePackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsiPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MspPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsuPackage" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Overridable" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", lets the user override the variable's default value by specifying another value on the command line,
in the form Variable=Value. Otherwise, WixStdBA won't overwrite the default value and will log
"Ignoring attempt to set non-overridable variable: 'BAR'."
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Variable" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseUILanguages" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", causes WixStdBA/Prereq BA to use the user's control panel language settings. Otherwise, the previous API (which uses locale instead of language) is used to maintain compatiblity with previous versions of WiX.
On Vista and newer platforms, this value set to "yes" will search all specified user languages, including fallback languages, in order.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplication" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:element name="WixManagedBootstrapperApplicationHost">
<xs:annotation>
<xs:documentation>
Configures the ManagedBootstrapperApplicationHost for a Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="LicenseFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseUrl" type="xs:string">
<xs:annotation>
<xs:documentation>URL target of the license link. Cannot be used simultaneously with LicenseFile.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ThemeFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme XML.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LocalizationFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme localization .wxl file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NetFxPackageId" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the bundle package that contains the .NET Framework. ManagedBootstrapperApplicationHost uses
this identifier to determine whether .NET needs to be installed before the managed bootstrapper application
can be launched.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/BalExtension"
xmlns="http://schemas.microsoft.com/wix/BalExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Burn User Experience Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a bundle. The condition is specified in the inner text of the element.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:annotation>
<xs:documentation>
The condition that must evaluate to true for the installation to continue.
</xs:documentation>
</xs:annotation>
<xs:attribute name="Message" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Set the value to the text to display when the condition fails and the installation must be terminated.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="WixStandardBootstrapperApplication">
<xs:annotation>
<xs:documentation>
Configures WixStandardBootstrapperApplication for a Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="LaunchTarget" type="xs:string">
<xs:annotation>
<xs:documentation>
If set, the success page will show a Launch button the user can use to launch the application being installed.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchTargetElevatedId" type="xs:string">
<xs:annotation>
<xs:documentation>
Id of the target ApprovedExeForElevation element.
If set with LaunchTarget, WixStdBA will launch the application through the Engine's LaunchApprovedExe method instead of through ShellExecute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchArguments" type="xs:string">
<xs:annotation>
<xs:documentation>
If set, WixStdBA will supply these arguments when launching the application specified by the LaunchTarget attribute.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchHidden" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", WixStdBA will launch the application specified by the LaunchTarget attribute with the SW_HIDE flag.
This attribute is ignored when the LaunchTargetElevatedId attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchWorkingFolder" type="xs:string">
<xs:annotation>
<xs:documentation>
WixStdBA will use this working folder when launching the specified application.
The string value can be formatted using Burn variables enclosed in brackets,
to refer to installation directories and so forth.
This attribute is ignored when the LaunchTargetElevatedId attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseUrl" type="xs:string">
<xs:annotation>
<xs:documentation>URL target of the license link. Cannot be used simultaneously with LicenseFile. This attribute can be empty to hide the license link completely.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoSideFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the side logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ThemeFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme XML.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LocalizationFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme localization .wxl file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressOptionsUI" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Options button will not be shown and the user will not be able to choose an installation directory.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressDowngradeFailure" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", attempting to installer a downgraded version of a bundle will be treated as a successful do-nothing operation.
The default behavior (or when explicitly set to "no") is to treat downgrade attempts as failures. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressRepair" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Repair button will not be shown in the maintenance-mode UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ShowVersion" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the application version will be displayed on the UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SupportCacheOnly" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the bundle can be pre-cached using the /cache command line argument.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ShowFilesInUse" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", WixStdBA will show a page allowing the user to restart applications when files are in use.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="PrereqSupportPackage" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", the Prereq BA will plan the package to be installed if its InstallCondition is "true" or empty.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ExePackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsiPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MspPackage" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsuPackage" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Overridable" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", lets the user override the variable's default value by specifying another value on the command line,
in the form Variable=Value. Otherwise, WixStdBA won't overwrite the default value and will log
"Ignoring attempt to set non-overridable variable: 'BAR'."
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Variable" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseUILanguages" type="YesNoType">
<xs:annotation>
<xs:documentation>
When set to "yes", causes WixStdBA/Prereq BA to use the user's control panel language settings. Otherwise, the previous API (which uses locale instead of language) is used to maintain compatiblity with previous versions of WiX.
On Vista and newer platforms, this value set to "yes" will search all specified user languages, including fallback languages, in order.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplication" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:element name="WixManagedBootstrapperApplicationHost">
<xs:annotation>
<xs:documentation>
Configures the ManagedBootstrapperApplicationHost for a Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="LicenseFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseUrl" type="xs:string">
<xs:annotation>
<xs:documentation>URL target of the license link. Cannot be used simultaneously with LicenseFile.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ThemeFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme XML.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LocalizationFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme localization .wxl file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NetFxPackageId" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the bundle package that contains the .NET Framework. ManagedBootstrapperApplicationHost uses
this identifier to determine whether .NET needs to be installed before the managed bootstrapper application
can be launched.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
File diff suppressed because it is too large. Load diff
+108 -108
View File
@@ -1,108 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/DifxAppExtension"
xmlns="http://schemas.microsoft.com/wix/DifxAppExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Driver Install Frameworks for Applications Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Driver">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>
Installs a driver. To use this element, you need to reference the WixDifxAppExtension extension and add the
.wixlib appropriate for the target platform (difxapp_x86.wixlib or difxapp_x64.wixlib)
to your project.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="AddRemovePrograms" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should add an entry in the Add/Remove Programs Control
Panel applet. The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DeleteFiles" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", configures DIFxApp to delete binary files that were copied to the system from the driver
store when a driver package was installed. If this attribute is set to "no" or not present, DIFxApp does not
remove these files from a system. Note that configuring DIFxApp to delete these files is controlled by the
Flags entry value of the component that represents the driver package in the MsiDriverPackages custom table.
Setting DeleteFiles to "yes" sets the corresponding bit in the Flags entry value. Setting DeleteFiles to "no"
clears the corresponding bit in the Flags entry value. If this attribute is not present, DIFxApp uses a
default value of "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ForceInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should force the installation of a new Plug and Play driver
on a device, even if the currently installed driver on the device is a better match than the new driver.
Specifying 'no' is an excellent way to ensure the DIFxApp CustomActions recognize the Component contains
a driver for installation. The default is null which means the Component does not install a driver via
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>
for more information.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Legacy" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", configures DIFxApp to install unsigned driver packages and driver packages with missing
files. For more information, see "Installing Unsigned Driver Packages in Legacy Mode" earlier in this paper.
If this attribute is set to "no" or not present, DIFxApp will install only signed driver packages. Note
that configuring DIFxApp to install unsigned drivers is controlled by the Flags entry value of the component
that represents the driver package in the MsiDriverPackages custom table. Setting Legacy to "yes" sets
the corresponding bit in the Flags entry value. Setting Legacy to "no" clears the bit in the Flags
entry value that configures DIFxApp to install unsigned driver packages. If this attribute is not present,
DIFxApp uses a default value of "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PlugAndPlayPrompt" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should prompt the user to connect the Plug and Play
device if it is not connected. The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>
Specifies an optional installation sequence number. DIFxApp CustomActions install the driver packages in
an installation package in the order of increasing sequence numbers. The same sequence number can be used
for more than one driver; however, the order in which packages with the same sequence number are actually
installed cannot be determined.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/DifxAppExtension"
xmlns="http://schemas.microsoft.com/wix/DifxAppExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Driver Install Frameworks for Applications Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Driver">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>
Installs a driver. To use this element, you need to reference the WixDifxAppExtension extension and add the
.wixlib appropriate for the target platform (difxapp_x86.wixlib or difxapp_x64.wixlib)
to your project.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="AddRemovePrograms" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should add an entry in the Add/Remove Programs Control
Panel applet. The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DeleteFiles" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", configures DIFxApp to delete binary files that were copied to the system from the driver
store when a driver package was installed. If this attribute is set to "no" or not present, DIFxApp does not
remove these files from a system. Note that configuring DIFxApp to delete these files is controlled by the
Flags entry value of the component that represents the driver package in the MsiDriverPackages custom table.
Setting DeleteFiles to "yes" sets the corresponding bit in the Flags entry value. Setting DeleteFiles to "no"
clears the corresponding bit in the Flags entry value. If this attribute is not present, DIFxApp uses a
default value of "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ForceInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should force the installation of a new Plug and Play driver
on a device, even if the currently installed driver on the device is a better match than the new driver.
Specifying 'no' is an excellent way to ensure the DIFxApp CustomActions recognize the Component contains
a driver for installation. The default is null which means the Component does not install a driver via
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>
for more information.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Legacy" type="YesNoType">
<xs:annotation>
<xs:documentation>
If set to "yes", configures DIFxApp to install unsigned driver packages and driver packages with missing
files. For more information, see "Installing Unsigned Driver Packages in Legacy Mode" earlier in this paper.
If this attribute is set to "no" or not present, DIFxApp will install only signed driver packages. Note
that configuring DIFxApp to install unsigned drivers is controlled by the Flags entry value of the component
that represents the driver package in the MsiDriverPackages custom table. Setting Legacy to "yes" sets
the corresponding bit in the Flags entry value. Setting Legacy to "no" clears the bit in the Flags
entry value that configures DIFxApp to install unsigned driver packages. If this attribute is not present,
DIFxApp uses a default value of "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PlugAndPlayPrompt" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies that the DIFxApp CustomActions should prompt the user to connect the Plug and Play
device if it is not connected. The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>
Specifies an optional installation sequence number. DIFxApp CustomActions install the driver packages in
an installation package in the order of increasing sequence numbers. The same sequence number can be used
for more than one driver; however, the order in which packages with the same sequence number are actually
installed cannot be determined.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+211 -211
View File
@@ -1,211 +1,211 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/FirewallExtension"
xmlns="http://schemas.microsoft.com/wix/FirewallExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Firewall Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="FirewallException">
<xs:annotation>
<xs:documentation>
Registers an exception for a program or a specific port and protocol in the Windows Firewall
on Windows XP SP2, Windows Server 2003 SP1, and later. For more information about the Windows
Firewall, see <html:a href="http://msdn.microsoft.com/en-us/library/aa364679.aspx">
About Windows Firewall API</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Explicitly-listed remote addresses that this exception allows through the
firewall.
</xs:documentation>
</xs:annotation>
<xs:element ref="RemoteAddress" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Unique ID of this firewall exception.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of this firewall exception, visible to the user in the firewall
control panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Scope">
<xs:annotation>
<xs:documentation>
The scope of this firewall exception, which indicates whether incoming
connections can come from any computer including those on the Internet
or only those on the local network subnet. To more precisely specify
allowed remote address, specify a custom scope using RemoteAddress
child elements.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="any" />
<xs:enumeration value="localSubnet" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Port" type="xs:string">
<xs:annotation>
<xs:documentation>
Port to allow through the firewall for this exception.
If you use Port and also File or Program in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Protocol">
<xs:annotation>
<xs:documentation>
IP protocol used for this firewall exception. If Port is defined,
"tcp" is assumed if the protocol is not specified.
If you use Protocol and also File or Program in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="tcp" />
<xs:enumeration value="udp" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="File" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of a file to be granted access to all incoming ports and
protocols. If you use File, you cannot also use Program.
If you use File and also Port or Protocol in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Program" type="xs:string">
<xs:annotation>
<xs:documentation>
Path to a target program to be granted access to all incoming ports and
protocols. Note that this is a formatted field, so you can use [#fileId]
syntax to refer to a file being installed. If you use Program, you cannot
also use File.
If you use Program and also Port or Protocol in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IgnoreFailure" type="YesNoType">
<xs:annotation>
<xs:documentation>
If "yes," failures to register this firewall exception will be silently
ignored. If "no" (the default), failures will cause rollback.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Profile">
<xs:annotation>
<xs:documentation>
Profile type for this firewall exception. Default is "all".
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="domain" />
<xs:enumeration value="private" />
<xs:enumeration value="public" />
<xs:enumeration value="all" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation>
<xs:documentation>
Description for this firewall rule displayed in Windows Firewall manager in
Windows Vista and later.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="RemoteAddress">
<xs:annotation>
<xs:documentation>
A remote address to which the port or program can listen. Address formats vary
based on the version of Windows and Windows Firewall the program is being installed
on. For Windows XP SP2 and Windows Server 2003 SP1, see
<html:a href="http://msdn.microsoft.com/en-us/library/aa365270.aspx">
RemoteAddresses Property</html:a>.
For Windows Vista and Windows Server 2008, see
<html:a href="http://msdn.microsoft.com/en-us/library/aa365366.aspx">
RemoteAddresses Property</html:a>.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:annotation>
<xs:documentation>
A remote address.
</xs:documentation>
</xs:annotation>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/FirewallExtension"
xmlns="http://schemas.microsoft.com/wix/FirewallExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Firewall Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="FirewallException">
<xs:annotation>
<xs:documentation>
Registers an exception for a program or a specific port and protocol in the Windows Firewall
on Windows XP SP2, Windows Server 2003 SP1, and later. For more information about the Windows
Firewall, see <html:a href="http://msdn.microsoft.com/en-us/library/aa364679.aspx">
About Windows Firewall API</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Explicitly-listed remote addresses that this exception allows through the
firewall.
</xs:documentation>
</xs:annotation>
<xs:element ref="RemoteAddress" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Unique ID of this firewall exception.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of this firewall exception, visible to the user in the firewall
control panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Scope">
<xs:annotation>
<xs:documentation>
The scope of this firewall exception, which indicates whether incoming
connections can come from any computer including those on the Internet
or only those on the local network subnet. To more precisely specify
allowed remote address, specify a custom scope using RemoteAddress
child elements.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="any" />
<xs:enumeration value="localSubnet" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Port" type="xs:string">
<xs:annotation>
<xs:documentation>
Port to allow through the firewall for this exception.
If you use Port and also File or Program in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Protocol">
<xs:annotation>
<xs:documentation>
IP protocol used for this firewall exception. If Port is defined,
"tcp" is assumed if the protocol is not specified.
If you use Protocol and also File or Program in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="tcp" />
<xs:enumeration value="udp" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="File" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of a file to be granted access to all incoming ports and
protocols. If you use File, you cannot also use Program.
If you use File and also Port or Protocol in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Program" type="xs:string">
<xs:annotation>
<xs:documentation>
Path to a target program to be granted access to all incoming ports and
protocols. Note that this is a formatted field, so you can use [#fileId]
syntax to refer to a file being installed. If you use Program, you cannot
also use File.
If you use Program and also Port or Protocol in the same
FirewallException element, the exception will fail to install on
Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
ignore the resulting failure, but the exception will not be added.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IgnoreFailure" type="YesNoType">
<xs:annotation>
<xs:documentation>
If "yes," failures to register this firewall exception will be silently
ignored. If "no" (the default), failures will cause rollback.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Profile">
<xs:annotation>
<xs:documentation>
Profile type for this firewall exception. Default is "all".
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="domain" />
<xs:enumeration value="private" />
<xs:enumeration value="public" />
<xs:enumeration value="all" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation>
<xs:documentation>
Description for this firewall rule displayed in Windows Firewall manager in
Windows Vista and later.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="RemoteAddress">
<xs:annotation>
<xs:documentation>
A remote address to which the port or program can listen. Address formats vary
based on the version of Windows and Windows Firewall the program is being installed
on. For Windows XP SP2 and Windows Server 2003 SP1, see
<html:a href="http://msdn.microsoft.com/en-us/library/aa365270.aspx">
RemoteAddresses Property</html:a>.
For Windows Vista and Windows Server 2008, see
<html:a href="http://msdn.microsoft.com/en-us/library/aa365366.aspx">
RemoteAddresses Property</html:a>.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:annotation>
<xs:documentation>
A remote address.
</xs:documentation>
</xs:annotation>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+127 -127
View File
@@ -1,127 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/GamingExtension"
xmlns="http://schemas.microsoft.com/wix/GamingExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Gaming Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:attribute name="IsRichSavedGame">
<xs:annotation>
<xs:documentation>
Registers this extension for the
<html:a href="http://msdn.microsoft.com/library/bb173448.aspx" target="_blank">rich saved games</html:a>
property handler on Windows Vista and later.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Extension" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:element name="Game">
<xs:annotation>
<xs:documentation>
Registers a game in Game Explorer on Windows Vista and later. The executable must have an
embedded Game Definition File. For more information about Game Explorer and GDFs, see
<html:a href="http://msdn.microsoft.com/library/bb173432.aspx" target="_blank">The Windows Vista Game Explorer</html:a>.
This registration is accomplished via custom action.
On Windows XP, this element instead records the same information in the registry so that
later upgrades to Windows Vista register the game in Game Explorer.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each game can support multiple play and support tasks that are shown in the Game Explorer context menu. PlayTask and SupportTask are not needed when using when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7. At least one play task should be created using either PlayTask or the ExtendedProperties\GameTasks\Play in the GDF.</xs:documentation>
</xs:annotation>
<xs:element ref="PlayTask"/>
<xs:element ref="SupportTask"/>
</xs:choice>
<xs:attribute name="Id" type="Guid" use="required">
<xs:annotation>
<xs:documentation>The game's instance ID.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GdfResourceFile" type="xs:string">
<xs:annotation>
<xs:documentation>Identifier of the file that contains the game's GDF resource, if it doesn't exist in the parent file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecutableFile" type="xs:string">
<xs:annotation>
<xs:documentation>Identifier of the file that is the game's executable, if it isn't the parent file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="PlayTask">
<xs:annotation>
<xs:documentation>
Creates a shortcut to the parent File and registers it as a "play task" in Game Explorer. For more information, see
<html:a href="http://msdn.microsoft.com/library/bb173450.aspx" target="_blank">
Game Explorer Tasks
</html:a>. PlayTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>User-visible task name Game Explorer shows on its context menu. Note that the first task is named "Play" regardless of the name you provide.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Arguments" type="xs:string">
<xs:annotation>
<xs:documentation>Command-line arguments to be passed to the game executable for this task.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SupportTask">
<xs:annotation>
<xs:documentation>
Creates an Internet shortcut and registers it as a "support task" in Game Explorer. For more information, see
<html:a href="http://msdn.microsoft.com/library/bb173450.aspx" target="_blank">
Game Explorer Tasks
</html:a>. SupportTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>User-visible task name Game Explorer shows on its context menu. Note that the first task is named "Play" regardless of the name you provide.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Address" type="xs:string">
<xs:annotation>
<xs:documentation>URI for this task.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="Guid">
<xs:annotation>
<xs:documentation>Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}". Also allows "PUT-GUID-HERE" for use in examples.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?|PUT\-GUID\-HERE|([!$])\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)|!\(wix\.[_A-Za-z][0-9A-Za-z_.]*\)"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/GamingExtension"
xmlns="http://schemas.microsoft.com/wix/GamingExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Gaming Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:attribute name="IsRichSavedGame">
<xs:annotation>
<xs:documentation>
Registers this extension for the
<html:a href="http://msdn.microsoft.com/library/bb173448.aspx" target="_blank">rich saved games</html:a>
property handler on Windows Vista and later.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Extension" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:element name="Game">
<xs:annotation>
<xs:documentation>
Registers a game in Game Explorer on Windows Vista and later. The executable must have an
embedded Game Definition File. For more information about Game Explorer and GDFs, see
<html:a href="http://msdn.microsoft.com/library/bb173432.aspx" target="_blank">The Windows Vista Game Explorer</html:a>.
This registration is accomplished via custom action.
On Windows XP, this element instead records the same information in the registry so that
later upgrades to Windows Vista register the game in Game Explorer.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Each game can support multiple play and support tasks that are shown in the Game Explorer context menu. PlayTask and SupportTask are not needed when using when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7. At least one play task should be created using either PlayTask or the ExtendedProperties\GameTasks\Play in the GDF.</xs:documentation>
</xs:annotation>
<xs:element ref="PlayTask"/>
<xs:element ref="SupportTask"/>
</xs:choice>
<xs:attribute name="Id" type="Guid" use="required">
<xs:annotation>
<xs:documentation>The game's instance ID.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GdfResourceFile" type="xs:string">
<xs:annotation>
<xs:documentation>Identifier of the file that contains the game's GDF resource, if it doesn't exist in the parent file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecutableFile" type="xs:string">
<xs:annotation>
<xs:documentation>Identifier of the file that is the game's executable, if it isn't the parent file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="PlayTask">
<xs:annotation>
<xs:documentation>
Creates a shortcut to the parent File and registers it as a "play task" in Game Explorer. For more information, see
<html:a href="http://msdn.microsoft.com/library/bb173450.aspx" target="_blank">
Game Explorer Tasks
</html:a>. PlayTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>User-visible task name Game Explorer shows on its context menu. Note that the first task is named "Play" regardless of the name you provide.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Arguments" type="xs:string">
<xs:annotation>
<xs:documentation>Command-line arguments to be passed to the game executable for this task.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SupportTask">
<xs:annotation>
<xs:documentation>
Creates an Internet shortcut and registers it as a "support task" in Game Explorer. For more information, see
<html:a href="http://msdn.microsoft.com/library/bb173450.aspx" target="_blank">
Game Explorer Tasks
</html:a>. SupportTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>User-visible task name Game Explorer shows on its context menu. Note that the first task is named "Play" regardless of the name you provide.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Address" type="xs:string">
<xs:annotation>
<xs:documentation>URI for this task.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="Guid">
<xs:annotation>
<xs:documentation>Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}". Also allows "PUT-GUID-HERE" for use in examples.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[{(]?[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}[})]?|PUT\-GUID\-HERE|([!$])\(loc\.[_A-Za-z][0-9A-Za-z_.]*\)|!\(wix\.[_A-Za-z][0-9A-Za-z_.]*\)"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+148 -148
View File
@@ -1,148 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/HttpExtension"
xmlns="http://schemas.microsoft.com/wix/HttpExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Http Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="UrlReservation">
<xs:annotation>
<xs:documentation>
Makes a reservation record for the HTTP Server API configuration store on Windows XP SP2,
Windows Server 2003, and later. For more information about the HTTP Server API, see
<html:a href="http://msdn.microsoft.com/library/windows/desktop/aa364510.aspx">
HTTP Server API
</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ServiceInstall" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The access control entries for the access control list.
</xs:documentation>
</xs:annotation>
<xs:element ref="UrlAce" />
</xs:choice>
<xs:attribute name="HandleExisting">
<xs:annotation>
<xs:documentation>
Specifies the behavior when trying to install a URL reservation and it already exists.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="replace">
<xs:annotation>
<xs:documentation>
Replaces the existing URL reservation (the default).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="ignore">
<xs:annotation>
<xs:documentation>
Keeps the existing URL reservation.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="fail">
<xs:annotation>
<xs:documentation>
The installation fails.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Unique ID of this URL reservation.
If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sddl" type="xs:string">
<xs:annotation>
<xs:documentation>
Security descriptor to apply to the URL reservation.
Can't be specified when using children UrlAce elements.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Url" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The <html:a href="http://msdn.microsoft.com/library/windows/desktop/aa364698.aspx">UrlPrefix</html:a>
string that defines the portion of the URL namespace to which this reservation pertains.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UrlAce">
<xs:annotation>
<xs:documentation>
The security principal and which rights to assign to them for the URL reservation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Unique ID of this URL ACE.
If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SecurityPrincipal" type="xs:string">
<xs:annotation>
<xs:documentation>
The security principal for this ACE. When the UrlReservation is under a ServiceInstall element, this defaults to
"NT SERVICE\ServiceInstallName". This may be either a SID or an account name in a format that
<html:a href="http://msdn.microsoft.com/library/windows/desktop/aa379159.aspx">LookupAccountName</html:a>
supports. When using a SID, an asterisk must be prepended. For example, "*S-1-5-18".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Rights">
<xs:annotation>
<xs:documentation>
Rights for this ACE. Default is "all".
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="register" />
<xs:enumeration value="delegate" />
<xs:enumeration value="all" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/HttpExtension"
xmlns="http://schemas.microsoft.com/wix/HttpExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Http Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="UrlReservation">
<xs:annotation>
<xs:documentation>
Makes a reservation record for the HTTP Server API configuration store on Windows XP SP2,
Windows Server 2003, and later. For more information about the HTTP Server API, see
<html:a href="http://msdn.microsoft.com/library/windows/desktop/aa364510.aspx">
HTTP Server API
</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ServiceInstall" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The access control entries for the access control list.
</xs:documentation>
</xs:annotation>
<xs:element ref="UrlAce" />
</xs:choice>
<xs:attribute name="HandleExisting">
<xs:annotation>
<xs:documentation>
Specifies the behavior when trying to install a URL reservation and it already exists.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="replace">
<xs:annotation>
<xs:documentation>
Replaces the existing URL reservation (the default).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="ignore">
<xs:annotation>
<xs:documentation>
Keeps the existing URL reservation.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="fail">
<xs:annotation>
<xs:documentation>
The installation fails.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Unique ID of this URL reservation.
If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sddl" type="xs:string">
<xs:annotation>
<xs:documentation>
Security descriptor to apply to the URL reservation.
Can't be specified when using children UrlAce elements.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Url" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The <html:a href="http://msdn.microsoft.com/library/windows/desktop/aa364698.aspx">UrlPrefix</html:a>
string that defines the portion of the URL namespace to which this reservation pertains.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UrlAce">
<xs:annotation>
<xs:documentation>
The security principal and which rights to assign to them for the URL reservation.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Unique ID of this URL ACE.
If this attribute is not specified, an identifier will be generated automatically.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SecurityPrincipal" type="xs:string">
<xs:annotation>
<xs:documentation>
The security principal for this ACE. When the UrlReservation is under a ServiceInstall element, this defaults to
"NT SERVICE\ServiceInstallName". This may be either a SID or an account name in a format that
<html:a href="http://msdn.microsoft.com/library/windows/desktop/aa379159.aspx">LookupAccountName</html:a>
supports. When using a SID, an asterisk must be prepended. For example, "*S-1-5-18".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Rights">
<xs:annotation>
<xs:documentation>
Rights for this ACE. Default is "all".
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="register" />
<xs:enumeration value="delegate" />
<xs:enumeration value="all" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
+1104 -1104
View File
File diff suppressed because it is too large. Load diff
+221 -221
View File
@@ -1,221 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/2009/Lux"
xmlns="http://schemas.microsoft.com/wix/2009/Lux">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Lux Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Mutation">
<xs:annotation>
<xs:documentation>
Test mutations let you author unit tests with different expected results. The mutation
id is passed as the value of the WIXLUX_RUNNING_MUTATION property. Your custom action,
typically in an '#ifdef DEBUG' block, can retrieve the WIXLUX_RUNNING_MUTATION property
and hard-code different behavior based on the mutation. To author test mutations, use
the Mutation element with UnitTest elements as children.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are validated when the parent mutation is being executed.
</xs:documentation>
</xs:annotation>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Value of the WIXLUX_RUNNING_MUTATION property set by the mutation.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UnitTest">
<xs:annotation>
<xs:documentation>
Describes a unit test to be executed against a particular custom action, resulting in a
particular property value. Single-value properties, multi-value properties, and
name/value-pair properties can all be tested declaratively.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2009/Lux" ref="Mutation" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are used to test multi-value properties. Note that Property
and ValueDelimiter or NameValueDelimiter must be specified in the parent element.
</xs:documentation>
</xs:annotation>
<xs:element ref="Condition"/>
<xs:element ref="Expression"/>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test. If you omit this attribute, a stable identifier is generated for you.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CustomAction" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the custom action to be tested.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Property" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the property set by the custom action.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Operator" default="equal">
<xs:annotation>
<xs:documentation>
The operator to apply to the property and value. Default is "equal."
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="equal">
<xs:annotation>
<xs:documentation>
(Default) Compares Property to Value and succeeds if they are equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="notEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveNotEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Value" type="xs:string">
<xs:annotation>
<xs:documentation>
The value to compare to the property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NameValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Index" type="xs:string">
<xs:annotation>
<xs:documentation>
A formatted string that evaluates to either an integer index into a multi-value property or a string name of a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a unit test.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Expression">
<xs:annotation>
<xs:documentation>
An expression that must evaluate to true to succeed. Cannot be specified if Property is specified.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitTestRef">
<xs:annotation>
<xs:documentation>
Identifies a unit test to be linked into a project.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test to be included.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/2009/Lux"
xmlns="http://schemas.microsoft.com/wix/2009/Lux">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Lux Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Mutation">
<xs:annotation>
<xs:documentation>
Test mutations let you author unit tests with different expected results. The mutation
id is passed as the value of the WIXLUX_RUNNING_MUTATION property. Your custom action,
typically in an '#ifdef DEBUG' block, can retrieve the WIXLUX_RUNNING_MUTATION property
and hard-code different behavior based on the mutation. To author test mutations, use
the Mutation element with UnitTest elements as children.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are validated when the parent mutation is being executed.
</xs:documentation>
</xs:annotation>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Value of the WIXLUX_RUNNING_MUTATION property set by the mutation.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UnitTest">
<xs:annotation>
<xs:documentation>
Describes a unit test to be executed against a particular custom action, resulting in a
particular property value. Single-value properties, multi-value properties, and
name/value-pair properties can all be tested declaratively.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2009/Lux" ref="Mutation" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Child UnitTest elements are used to test multi-value properties. Note that Property
and ValueDelimiter or NameValueDelimiter must be specified in the parent element.
</xs:documentation>
</xs:annotation>
<xs:element ref="Condition"/>
<xs:element ref="Expression"/>
<xs:element ref="UnitTest"/>
</xs:choice>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test. If you omit this attribute, a stable identifier is generated for you.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CustomAction" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the custom action to be tested.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Property" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the property set by the custom action.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Operator" default="equal">
<xs:annotation>
<xs:documentation>
The operator to apply to the property and value. Default is "equal."
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="equal">
<xs:annotation>
<xs:documentation>
(Default) Compares Property to Value and succeeds if they are equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="notEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="caseInsensitiveNotEqual">
<xs:annotation>
<xs:documentation>
Compares Property to Value and succeeds if they are NOT equal (ignoring case).
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Value" type="xs:string">
<xs:annotation>
<xs:documentation>
The value to compare to the property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NameValueSeparator" type="xs:string">
<xs:annotation>
<xs:documentation>
One character that is used to separate values in a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Index" type="xs:string">
<xs:annotation>
<xs:documentation>
A formatted string that evaluates to either an integer index into a multi-value property or a string name of a name/value-pair multi-value property.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a unit test.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Expression">
<xs:annotation>
<xs:documentation>
An expression that must evaluate to true to succeed. Cannot be specified if Property is specified.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string" />
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="UnitTestRef">
<xs:annotation>
<xs:documentation>
Identifies a unit test to be linked into a project.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>
Identifier of the unit test to be included.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
+121 -121
View File
@@ -1,121 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/MsmqExtension"
xmlns="http://schemas.microsoft.com/wix/MsmqExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset MSMQ Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="MessageQueue">
<xs:annotation><xs:documentation>
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="MessageQueuePermission" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Authenticate" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="BasePriority" use="optional" type="xs:integer" />
<xs:attribute name="Journal" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="JournalQuota" use="optional" type="xs:integer" />
<xs:attribute name="Label" use="required" type="xs:string" />
<xs:attribute name="MulticastAddress" use="optional" type="xs:string" />
<xs:attribute name="PathName" use="required" type="xs:string" />
<xs:attribute name="PrivLevel" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="none" />
<xs:enumeration value="optional" />
<xs:enumeration value="body" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Quota" use="optional" type="xs:integer" />
<xs:attribute name="Transactional" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="ServiceTypeGuid" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="MessageQueuePermission">
<xs:annotation><xs:documentation>
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="MessageQueue" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="User" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Group" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="DeleteMessage" use="optional" type="YesNoType" />
<xs:attribute name="PeekMessage" use="optional" type="YesNoType" />
<xs:attribute name="WriteMessage" use="optional" type="YesNoType" />
<xs:attribute name="DeleteJournalMessage" use="optional" type="YesNoType" />
<xs:attribute name="SetQueueProperties" use="optional" type="YesNoType" />
<xs:attribute name="GetQueueProperties" use="optional" type="YesNoType" />
<xs:attribute name="DeleteQueue" use="optional" type="YesNoType" />
<xs:attribute name="GetQueuePermissions" use="optional" type="YesNoType" />
<xs:attribute name="ChangeQueuePermissions" use="optional" type="YesNoType" />
<xs:attribute name="TakeQueueOwnership" use="optional" type="YesNoType" />
<xs:attribute name="ReceiveMessage" use="optional" type="YesNoType" />
<xs:attribute name="ReceiveJournalMessage" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericRead" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericWrite" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericExecute" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericAll" use="optional" type="YesNoType" />
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/MsmqExtension"
xmlns="http://schemas.microsoft.com/wix/MsmqExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset MSMQ Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="MessageQueue">
<xs:annotation><xs:documentation>
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="MessageQueuePermission" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Authenticate" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="BasePriority" use="optional" type="xs:integer" />
<xs:attribute name="Journal" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="JournalQuota" use="optional" type="xs:integer" />
<xs:attribute name="Label" use="required" type="xs:string" />
<xs:attribute name="MulticastAddress" use="optional" type="xs:string" />
<xs:attribute name="PathName" use="required" type="xs:string" />
<xs:attribute name="PrivLevel" use="optional">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="none" />
<xs:enumeration value="optional" />
<xs:enumeration value="body" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Quota" use="optional" type="xs:integer" />
<xs:attribute name="Transactional" use="optional" type="YesNoType">
<xs:annotation><xs:documentation>
Default: No.
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="ServiceTypeGuid" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="MessageQueuePermission">
<xs:annotation><xs:documentation>
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="MessageQueue" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="User" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Group" use="optional" type="xs:string">
<xs:annotation><xs:documentation>
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="DeleteMessage" use="optional" type="YesNoType" />
<xs:attribute name="PeekMessage" use="optional" type="YesNoType" />
<xs:attribute name="WriteMessage" use="optional" type="YesNoType" />
<xs:attribute name="DeleteJournalMessage" use="optional" type="YesNoType" />
<xs:attribute name="SetQueueProperties" use="optional" type="YesNoType" />
<xs:attribute name="GetQueueProperties" use="optional" type="YesNoType" />
<xs:attribute name="DeleteQueue" use="optional" type="YesNoType" />
<xs:attribute name="GetQueuePermissions" use="optional" type="YesNoType" />
<xs:attribute name="ChangeQueuePermissions" use="optional" type="YesNoType" />
<xs:attribute name="TakeQueueOwnership" use="optional" type="YesNoType" />
<xs:attribute name="ReceiveMessage" use="optional" type="YesNoType" />
<xs:attribute name="ReceiveJournalMessage" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericRead" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericWrite" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericExecute" use="optional" type="YesNoType" />
<xs:attribute name="QueueGenericAll" use="optional" type="YesNoType" />
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
+235 -235
View File
@@ -1,235 +1,235 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns="http://schemas.microsoft.com/wix/NetFxExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset .NET Framework Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="NativeImage">
<xs:annotation>
<xs:documentation>
Improves the performance of managed applications by creating native images.
Requires the .NET Framework 2.0 or newer to be installed on the target machine since
it runs <html:a href="http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx">NGen</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
<html:p>
Native images are files containing compiled processor-specific machine code, which
are installed into the native image cache on the local computer. The runtime
can use native images from the cache instead using the just-in-time (JIT)
compiler to compile the original assembly.
</html:p>
<html:p>
The native image custom actions are configured to ignore failures so that failing
to generate or remove a native image will not cause setup to fail and roll back.
</html:p>
<html:p>
<html:b>Note for patches:</html:b> if you built your target, or baseline, MSI with
previous versions 3.0 or 3.5 of this extension and want to upgrade to formattable
values for @AssemblyApplication or @AppBaseDirectory you must also include a
BinaryRef to "NetFxCA" to pull in necessary changes. If you do use formattable
values and do not include the binary changes ngen.exe will not optimize your
native images for the specified application.
</html:p>
<html:p>
This should be a rare occurrence, however. Because you cannot remove components
in a patch - and pyro does validate you do not - it is not practical to switch
from using identifiers to formattable values in a patch. One practical possibility
is if you wanted to use a different application to optimize your native images
and that application is not already installed with the MSI to be updated.
</html:p>
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier for this NativeImage.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AppBaseDirectory" type="xs:string">
<xs:annotation>
<xs:documentation>
<html:p>
The directory to use for locating dependent assemblies.
For DLL assemblies and assemblies installed to the Global Assembly Cache (GAC),
this attribute should be set to the directory of the application which loads this
assembly. For EXE assemblies, this attribute does not need to be set because NGen
will use the directory of the assembly file by default.
</html:p>
<html:p>
The value can be in the form of a directory identifier, or a formatted string
that resolves to either a directory identifier or a full path to a directory.
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AssemblyApplication" type="xs:string">
<xs:annotation>
<xs:documentation>
<html:p>
The application which will load this assembly.
For DLL assemblies which are loaded via reflection, this attribute should
be set to indicate the application which will load this assembly.
The configuration of the application (usually specified via an exe.config file) will be used
to determine how to resolve dependencies for this assembly.
</html:p>
<html:p>
The value can be in the form of a file identifier, or a formatted string
that resolves to either a file identifier or a full path to a file.
</html:p>
<html:p>
When a shared component is loaded at run time, using the Load method, the
application's configuration file determines the dependencies that are loaded
for the shared component — for example, the version of a dependency that is loaded.
This attribute gives guidance on which dependencies would be loaded at run time in order
to figure out which dependency assemblies will also need to have native images generated
(assuming the Dependency attribute is not set to "no").
</html:p>
<html:p>
This attribute cannot be set if the AssemblyApplication attribute is set on the parent
File element (please note that these attributes both refer to the same application
assembly but do very different things: specifiying File/@AssemblyApplication will force
an assembly to install to a private location next to the indicated application, whereas
this AssemblyApplication attribute will be used to help resolve dependent assemblies
while generating native images for this assembly).
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Debug" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to generate native images that can be used under a debugger.
The default value is "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Dependencies" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "no" to generate the minimum number of native images.
The default value is "yes".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Platform">
<xs:annotation>
<xs:documentation>
Sets the platform(s) for which native images will be generated.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="32bit">
<xs:annotation>
<xs:documentation>
Attempt to generate native images only for the 32-bit version of the .NET Framework
on the target machine. If the 32-bit version of the .NET Framework 2.0 or newer is not
present on the target machine, native image custom actions will not be scheduled.
This is the default value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="64bit">
<xs:annotation>
<xs:documentation>
Attempt to generate native images only for the 64-bit version of the .NET Framework
on the target machine. If a 64-bit version of the .NET Framework 2.0 or newer is not
present on the target machine, native image custom actions will not be scheduled.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="all">
<xs:annotation>
<xs:documentation>
Attempt to generate native images for the 32-bit and 64-bit versions of the .NET Framework
on the target machine. If a version of the .NET Framework 2.0 or newer is not present on the
target machine for a processor architecture, native image custom actions will not be
scheduled for that processor architecture.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Priority">
<xs:annotation>
<xs:documentation>
Sets the priority of generating the native images for this assembly.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>
This is the highest priority, it means that image generation occurs syncronously
during the setup process. This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>
This will queue image generation to the NGen service to occur immediately.
This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>
This will queue image generation to the NGen service to occur after all priority 1
assemblies have completed.
This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>
This is the lowest priority, it will queue image generation to occur when the
machine is idle.
This option should not slow down setup performance.
This is the default value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Profile" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to generate native images that can be used under a profiler.
The default value is "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns="http://schemas.microsoft.com/wix/NetFxExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset .NET Framework Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="NativeImage">
<xs:annotation>
<xs:documentation>
Improves the performance of managed applications by creating native images.
Requires the .NET Framework 2.0 or newer to be installed on the target machine since
it runs <html:a href="http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx">NGen</html:a>.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
<html:p>
Native images are files containing compiled processor-specific machine code, which
are installed into the native image cache on the local computer. The runtime
can use native images from the cache instead using the just-in-time (JIT)
compiler to compile the original assembly.
</html:p>
<html:p>
The native image custom actions are configured to ignore failures so that failing
to generate or remove a native image will not cause setup to fail and roll back.
</html:p>
<html:p>
<html:b>Note for patches:</html:b> if you built your target, or baseline, MSI with
previous versions 3.0 or 3.5 of this extension and want to upgrade to formattable
values for @AssemblyApplication or @AppBaseDirectory you must also include a
BinaryRef to "NetFxCA" to pull in necessary changes. If you do use formattable
values and do not include the binary changes ngen.exe will not optimize your
native images for the specified application.
</html:p>
<html:p>
This should be a rare occurrence, however. Because you cannot remove components
in a patch - and pyro does validate you do not - it is not practical to switch
from using identifiers to formattable values in a patch. One practical possibility
is if you wanted to use a different application to optimize your native images
and that application is not already installed with the MSI to be updated.
</html:p>
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier for this NativeImage.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AppBaseDirectory" type="xs:string">
<xs:annotation>
<xs:documentation>
<html:p>
The directory to use for locating dependent assemblies.
For DLL assemblies and assemblies installed to the Global Assembly Cache (GAC),
this attribute should be set to the directory of the application which loads this
assembly. For EXE assemblies, this attribute does not need to be set because NGen
will use the directory of the assembly file by default.
</html:p>
<html:p>
The value can be in the form of a directory identifier, or a formatted string
that resolves to either a directory identifier or a full path to a directory.
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AssemblyApplication" type="xs:string">
<xs:annotation>
<xs:documentation>
<html:p>
The application which will load this assembly.
For DLL assemblies which are loaded via reflection, this attribute should
be set to indicate the application which will load this assembly.
The configuration of the application (usually specified via an exe.config file) will be used
to determine how to resolve dependencies for this assembly.
</html:p>
<html:p>
The value can be in the form of a file identifier, or a formatted string
that resolves to either a file identifier or a full path to a file.
</html:p>
<html:p>
When a shared component is loaded at run time, using the Load method, the
application's configuration file determines the dependencies that are loaded
for the shared component — for example, the version of a dependency that is loaded.
This attribute gives guidance on which dependencies would be loaded at run time in order
to figure out which dependency assemblies will also need to have native images generated
(assuming the Dependency attribute is not set to "no").
</html:p>
<html:p>
This attribute cannot be set if the AssemblyApplication attribute is set on the parent
File element (please note that these attributes both refer to the same application
assembly but do very different things: specifiying File/@AssemblyApplication will force
an assembly to install to a private location next to the indicated application, whereas
this AssemblyApplication attribute will be used to help resolve dependent assemblies
while generating native images for this assembly).
</html:p>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Debug" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to generate native images that can be used under a debugger.
The default value is "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Dependencies" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "no" to generate the minimum number of native images.
The default value is "yes".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Platform">
<xs:annotation>
<xs:documentation>
Sets the platform(s) for which native images will be generated.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="32bit">
<xs:annotation>
<xs:documentation>
Attempt to generate native images only for the 32-bit version of the .NET Framework
on the target machine. If the 32-bit version of the .NET Framework 2.0 or newer is not
present on the target machine, native image custom actions will not be scheduled.
This is the default value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="64bit">
<xs:annotation>
<xs:documentation>
Attempt to generate native images only for the 64-bit version of the .NET Framework
on the target machine. If a 64-bit version of the .NET Framework 2.0 or newer is not
present on the target machine, native image custom actions will not be scheduled.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="all">
<xs:annotation>
<xs:documentation>
Attempt to generate native images for the 32-bit and 64-bit versions of the .NET Framework
on the target machine. If a version of the .NET Framework 2.0 or newer is not present on the
target machine for a processor architecture, native image custom actions will not be
scheduled for that processor architecture.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Priority">
<xs:annotation>
<xs:documentation>
Sets the priority of generating the native images for this assembly.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>
This is the highest priority, it means that image generation occurs syncronously
during the setup process. This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>
This will queue image generation to the NGen service to occur immediately.
This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>
This will queue image generation to the NGen service to occur after all priority 1
assemblies have completed.
This option will slow down setup performance.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">
<xs:annotation>
<xs:documentation>
This is the lowest priority, it will queue image generation to occur when the
machine is idle.
This option should not slow down setup performance.
This is the default value.
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Profile" type="YesNoType">
<xs:annotation>
<xs:documentation>
Set to "yes" to generate native images that can be used under a profiler.
The default value is "no".
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+201 -201
View File
@@ -1,201 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
targetNamespace="http://schemas.microsoft.com/wix/PSExtension"
xmlns="http://schemas.microsoft.com/wix/PSExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset PowerShell Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="FormatsFile">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a formats XML file for the referenced PowerShell snap-in.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
A formats XML file that defines output formats for objects on the pipeline.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="FileId" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the formats File ID. This is required when nested under the SnapIn element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SnapIn" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the PowerShell snap-in ID for which this formats file is associated. This is required when nested under the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="TypesFile">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a types XML file for the referenced PowerShell snap-in.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
A types XML file used by the extensible type system.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="FileId" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the types File ID. This is required when nested under the SnapIn element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SnapIn" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the PowerShell snap-in ID for which this types file is associated. This is required when nested under the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SnapIn">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a PowerShell snap-in to be registered on the system.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
<html:a href="http://www.microsoft.com/powershell">PowerShell</html:a> snap-ins
allow developers to extend the functionality of of the PowerShell engine.
Add this element to identify the parent File as a PowerShell snap-in that will
get registered on the system.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FormatsFile" />
<xs:element ref="TypesFile" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier for this PowerShell snap-in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AssemblyName" type="xs:string">
<xs:annotation>
<xs:documentation>
The fully-qualified name of the assembly.
</xs:documentation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CustomSnapInType" type="xs:string">
<xs:annotation>
<xs:documentation>
The full type name of a class that is used to register a list of cmdlets and providers.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation>
<xs:documentation>
A brief description of the snap-in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DescriptionIndirect" type="EmbeddedResource">
<xs:annotation>
<xs:documentation>
An embedded resource that contains a brief description of the snap-in.
This resource must be embedded in the current snap-in assembly.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RequiredPowerShellVersion" type="VersionType">
<xs:annotation>
<xs:documentation>
The required version of PowerShell that must be installed and is associated with the
snap-in registration. The default value is "1.0".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Vendor" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the snap-in vendor.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VendorIndirect" type="EmbeddedResource">
<xs:annotation>
<xs:documentation>
An embedded resource that contains the name of the snap-in vendor.
This resource must be embedded in the current snap-in assembly.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Version" type="VersionType">
<xs:annotation>
<xs:documentation>
The version of the snapin. If not specified, this is taken from the assembly name.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="RequiredVersion" type="xs:string">
<xs:annotation>
<xs:documentation>
The version of this extension required to compile the defining source.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Wix" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:simpleType name="EmbeddedResource">
<xs:annotation>
<xs:documentation>
<html:p>
Values should be in the format <html:i>ResourceName,StringName</html:i>, where <html:i>ResourceName</html:i>
is the name of the embedded resource in your assembly sans the ".resources" extension, and <html:i>StringName</html:i>
is the name of the string resource in the embedded resource.
</html:p>
<html:p>
Example: UtilityMshSnapInResources,Description
</html:p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="VersionType">
<xs:annotation>
<xs:documentation>
Values of this type will look like: "x", "x.x", "x.x.x", or "x.x.x.x" where x is an integer from 0 to 65534.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,5}(\.\d{1,5}){0,3}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
targetNamespace="http://schemas.microsoft.com/wix/PSExtension"
xmlns="http://schemas.microsoft.com/wix/PSExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset PowerShell Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="FormatsFile">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a formats XML file for the referenced PowerShell snap-in.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
A formats XML file that defines output formats for objects on the pipeline.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="FileId" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the formats File ID. This is required when nested under the SnapIn element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SnapIn" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the PowerShell snap-in ID for which this formats file is associated. This is required when nested under the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="TypesFile">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a types XML file for the referenced PowerShell snap-in.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
A types XML file used by the extensible type system.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="FileId" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the types File ID. This is required when nested under the SnapIn element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SnapIn" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to the PowerShell snap-in ID for which this types file is associated. This is required when nested under the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SnapIn">
<xs:annotation>
<xs:documentation>
Identifies the parent File as a PowerShell snap-in to be registered on the system.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
<xse:remarks>
<html:a href="http://www.microsoft.com/powershell">PowerShell</html:a> snap-ins
allow developers to extend the functionality of of the PowerShell engine.
Add this element to identify the parent File as a PowerShell snap-in that will
get registered on the system.
</xse:remarks>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="FormatsFile" />
<xs:element ref="TypesFile" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The identifier for this PowerShell snap-in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="AssemblyName" type="xs:string">
<xs:annotation>
<xs:documentation>
The fully-qualified name of the assembly.
</xs:documentation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CustomSnapInType" type="xs:string">
<xs:annotation>
<xs:documentation>
The full type name of a class that is used to register a list of cmdlets and providers.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation>
<xs:documentation>
A brief description of the snap-in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DescriptionIndirect" type="EmbeddedResource">
<xs:annotation>
<xs:documentation>
An embedded resource that contains a brief description of the snap-in.
This resource must be embedded in the current snap-in assembly.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RequiredPowerShellVersion" type="VersionType">
<xs:annotation>
<xs:documentation>
The required version of PowerShell that must be installed and is associated with the
snap-in registration. The default value is "1.0".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Vendor" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the snap-in vendor.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VendorIndirect" type="EmbeddedResource">
<xs:annotation>
<xs:documentation>
An embedded resource that contains the name of the snap-in vendor.
This resource must be embedded in the current snap-in assembly.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Version" type="VersionType">
<xs:annotation>
<xs:documentation>
The version of the snapin. If not specified, this is taken from the assembly name.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="RequiredVersion" type="xs:string">
<xs:annotation>
<xs:documentation>
The version of this extension required to compile the defining source.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Wix" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:simpleType name="EmbeddedResource">
<xs:annotation>
<xs:documentation>
<html:p>
Values should be in the format <html:i>ResourceName,StringName</html:i>, where <html:i>ResourceName</html:i>
is the name of the embedded resource in your assembly sans the ".resources" extension, and <html:i>StringName</html:i>
is the name of the string resource in the embedded resource.
</html:p>
<html:p>
Example: UtilityMshSnapInResources,Description
</html:p>
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="VersionType">
<xs:annotation>
<xs:documentation>
Values of this type will look like: "x", "x.x", "x.x.x", or "x.x.x.x" where x is an integer from 0 to 65534.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="\d{1,5}(\.\d{1,5}){0,3}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+342 -342
View File
@@ -1,342 +1,342 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/SqlExtension"
xmlns="http://schemas.microsoft.com/wix/SqlExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset SQL Server Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="SqlDatabase">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
<xse:remarks>
<html:dl>
<html:dd>Nesting SqlDatabase under a Component element will result in a SqlDatabase being installed to the machine as the package is installed.</html:dd>
<html:dd>
Nesting SqlDatabase under Product, Fragment, or Module
results in a database "locator" record being created in
the SqlDatabase table. This means that the database
itself is neither installed nor uninstalled by the MSI
package. It does make the database available for referencing
from a SqlString or SqlScript record. This allows MSI to install
SqlScripts or SqlStrings to already existing databases on the machine.
The install will fail if the database does not exist in these cases.
</html:dd>
<html:dd>
The User attribute references credentials specified in a User element.
If a user is not specified then Windows Authentication will be used by default
using the credentials of the user performing the install to execute sql
strings, etc.
</html:dd>
</html:dl>
</xse:remarks>
<xse:seeAlso namespace="http://schemas.microsoft.com/wix/UtilExtension" ref="User"/>
</xs:appinfo>
<xs:documentation>SQL Database</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:sequence>
<xs:element ref="SqlFileSpec" minOccurs="0"/>
<xs:element ref="SqlLogFileSpec" minOccurs="0"/>
</xs:sequence>
<xs:element ref="SqlScript"/>
<xs:element ref="SqlString"/>
</xs:choice>
<xs:attribute name="Id" use="required" type="xs:string"/>
<xs:attribute name="Server" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="Instance" type="xs:string">
</xs:attribute>
<xs:attribute name="Database" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the database. The value can be a literal value or derived from a
Property element using the <html:a href='http://msdn.microsoft.com/library/aa368609.aspx' target='_blank'>Formatted</html:a>
syntax.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="CreateOnInstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="CreateOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to create the database when the associated component is reinstalled. Setting CreateOnInstall to yes does <html:b>not</html:b> imply CreateOnReinstall is set to yes. CreateOnReinstall must be set in addition to CreateOnInstall for it to be created during both install and reinstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CreateOnUninstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="DropOnInstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="DropOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to drop the database when the associated component is reinstalled. Setting DropOnInstall to yes does <html:b>not</html:b> imply DropOnReinstall is set to yes. DropOnReinstall must be set in addition to DropOnInstall for it to be dropped during both install and reinstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DropOnUninstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
</xs:attribute>
<xs:attribute name="ConfirmOverwrite" type="YesNoType">
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlFileSpec">
<xs:annotation>
<xs:documentation>File specification for a Sql database.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>ID of the file specification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the logical name for the database file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Filename" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the operating-system file name for the database file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Size" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the size of the database file. The GB, MB and KB suffixes can be used to specify gigabytes,
megabytes or kilobytes. The default is megabytes if no suffix is specified. When a Size is not
supplied for a database file, SQL Server uses the size of the primary file in the model database.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MaxSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the maximum size to which the database file can grow. The GB, MB and KB suffixes can be used to
to specify gigabytes, megabytes or kilobytes. The default is megabytes if no suffix is specified. If
MaxSize is not specified, the file will grow until the disk is full.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GrowthSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the growth increment of the database file. The GB, MB and KB and % suffixes can be used to
specify gigabytes, megabytes, kilobytes or a percentage of the current file size to grow. The default is
megabytes if no suffix is specified. The default value is 10% if GrowthSize is not specified, and the
minimum value is 64 KB. The GrowthSize setting for a file cannot exceed the MaxSize setting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlLogFileSpec">
<xs:annotation>
<xs:documentation>File specification for a Sql database.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>ID of the log file specification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the logical name for the log file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Filename" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the operating-system file name for the log file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Size" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the size of the log file. The GB, MB and KB suffixes can be used to specify gigabytes,
megabytes or kilobytes. The default is megabytes if no suffix is specified. When a Size is not
supplied for a log file, SQL Server makes the file 1 MB.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MaxSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the maximum size to which the log file can grow. The GB, MB and KB suffixes can be used to
to specify gigabytes, megabytes or kilobytes. The default is megabytes if no suffix is specified. If
MaxSize is not specified, the file will grow until the disk is full.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GrowthSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the growth increment of the log file. The GB, MB and KB and % suffixes can be used to
specify gigabytes, megabytes, kilobytes or a percentage of the current file size to grow. The default is
megabytes if no suffix is specified. The default value is 10% if GrowthSize is not specified, and the
minimum value is 64 KB. The GrowthSize setting for a file cannot exceed the MaxSize setting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlScript">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>SQL Script</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string"/>
<xs:attribute name="SqlDb" type="xs:string">
<xs:annotation>
<xs:documentation>required when not child of SqlDatabase</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="BinaryKey" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Reference to Binary stream that contains the SQL script to execute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the script when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script when the associated component is reinstalled. Setting ExecuteOnInstall to yes does <html:b>not</html:b> imply ExecuteOnReinstall is set to yes. ExecuteOnReinstall must be set in addition to ExecuteOnInstall for it to be executed during both install and reinstall. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the script when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to install the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to reinstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to uninstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
<xs:annotation>
<xs:documentation>Continue executing scripts even if this one fails.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>Specifes the order to run the SQL Scripts. It is recommended that rollback scripts be scheduled before their complementary execution script. This order is also relative across the SqlString element.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlString">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>SQL String</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="SQL" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="SqlDb" type="xs:string">
</xs:attribute>
<xs:attribute name="ExecuteOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the string when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to execute the string when the associated component is reinstalled. Setting ExecuteOnInstall to yes does <html:b>not</html:b> imply ExecuteOnReinstall is set to yes. ExecuteOnReinstall must be set in addition to ExecuteOnInstall for it to be executed during both install and reinstall. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the string when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to install the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to reinstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to uninstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
<xs:annotation>
<xs:documentation>Continue executing strings even if this one fails.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>Specifes the order to run the SQL Strings. It is recommended that rollback strings be scheduled before their complementary execution string. This order is also relative across the SqlScript element.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/SqlExtension"
xmlns="http://schemas.microsoft.com/wix/SqlExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset SQL Server Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="SqlDatabase">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
<xse:remarks>
<html:dl>
<html:dd>Nesting SqlDatabase under a Component element will result in a SqlDatabase being installed to the machine as the package is installed.</html:dd>
<html:dd>
Nesting SqlDatabase under Product, Fragment, or Module
results in a database "locator" record being created in
the SqlDatabase table. This means that the database
itself is neither installed nor uninstalled by the MSI
package. It does make the database available for referencing
from a SqlString or SqlScript record. This allows MSI to install
SqlScripts or SqlStrings to already existing databases on the machine.
The install will fail if the database does not exist in these cases.
</html:dd>
<html:dd>
The User attribute references credentials specified in a User element.
If a user is not specified then Windows Authentication will be used by default
using the credentials of the user performing the install to execute sql
strings, etc.
</html:dd>
</html:dl>
</xse:remarks>
<xse:seeAlso namespace="http://schemas.microsoft.com/wix/UtilExtension" ref="User"/>
</xs:appinfo>
<xs:documentation>SQL Database</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:sequence>
<xs:element ref="SqlFileSpec" minOccurs="0"/>
<xs:element ref="SqlLogFileSpec" minOccurs="0"/>
</xs:sequence>
<xs:element ref="SqlScript"/>
<xs:element ref="SqlString"/>
</xs:choice>
<xs:attribute name="Id" use="required" type="xs:string"/>
<xs:attribute name="Server" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="Instance" type="xs:string">
</xs:attribute>
<xs:attribute name="Database" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the database. The value can be a literal value or derived from a
Property element using the <html:a href='http://msdn.microsoft.com/library/aa368609.aspx' target='_blank'>Formatted</html:a>
syntax.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="CreateOnInstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="CreateOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to create the database when the associated component is reinstalled. Setting CreateOnInstall to yes does <html:b>not</html:b> imply CreateOnReinstall is set to yes. CreateOnReinstall must be set in addition to CreateOnInstall for it to be created during both install and reinstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CreateOnUninstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="DropOnInstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="DropOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to drop the database when the associated component is reinstalled. Setting DropOnInstall to yes does <html:b>not</html:b> imply DropOnReinstall is set to yes. DropOnReinstall must be set in addition to DropOnInstall for it to be dropped during both install and reinstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DropOnUninstall" type="YesNoType">
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
</xs:attribute>
<xs:attribute name="ConfirmOverwrite" type="YesNoType">
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlFileSpec">
<xs:annotation>
<xs:documentation>File specification for a Sql database.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>ID of the file specification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the logical name for the database file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Filename" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the operating-system file name for the database file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Size" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the size of the database file. The GB, MB and KB suffixes can be used to specify gigabytes,
megabytes or kilobytes. The default is megabytes if no suffix is specified. When a Size is not
supplied for a database file, SQL Server uses the size of the primary file in the model database.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MaxSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the maximum size to which the database file can grow. The GB, MB and KB suffixes can be used to
to specify gigabytes, megabytes or kilobytes. The default is megabytes if no suffix is specified. If
MaxSize is not specified, the file will grow until the disk is full.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GrowthSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the growth increment of the database file. The GB, MB and KB and % suffixes can be used to
specify gigabytes, megabytes, kilobytes or a percentage of the current file size to grow. The default is
megabytes if no suffix is specified. The default value is 10% if GrowthSize is not specified, and the
minimum value is 64 KB. The GrowthSize setting for a file cannot exceed the MaxSize setting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlLogFileSpec">
<xs:annotation>
<xs:documentation>File specification for a Sql database.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" type="xs:string">
<xs:annotation>
<xs:documentation>ID of the log file specification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the logical name for the log file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Filename" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the operating-system file name for the log file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Size" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the size of the log file. The GB, MB and KB suffixes can be used to specify gigabytes,
megabytes or kilobytes. The default is megabytes if no suffix is specified. When a Size is not
supplied for a log file, SQL Server makes the file 1 MB.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MaxSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the maximum size to which the log file can grow. The GB, MB and KB suffixes can be used to
to specify gigabytes, megabytes or kilobytes. The default is megabytes if no suffix is specified. If
MaxSize is not specified, the file will grow until the disk is full.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GrowthSize" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the growth increment of the log file. The GB, MB and KB and % suffixes can be used to
specify gigabytes, megabytes, kilobytes or a percentage of the current file size to grow. The default is
megabytes if no suffix is specified. The default value is 10% if GrowthSize is not specified, and the
minimum value is 64 KB. The GrowthSize setting for a file cannot exceed the MaxSize setting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlScript">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>SQL Script</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string"/>
<xs:attribute name="SqlDb" type="xs:string">
<xs:annotation>
<xs:documentation>required when not child of SqlDatabase</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="BinaryKey" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Reference to Binary stream that contains the SQL script to execute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the script when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script when the associated component is reinstalled. Setting ExecuteOnInstall to yes does <html:b>not</html:b> imply ExecuteOnReinstall is set to yes. ExecuteOnReinstall must be set in addition to ExecuteOnInstall for it to be executed during both install and reinstall. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the script when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to install the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to reinstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the script on rollback if an attempt is made to uninstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
<xs:annotation>
<xs:documentation>Continue executing scripts even if this one fails.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>Specifes the order to run the SQL Scripts. It is recommended that rollback scripts be scheduled before their complementary execution script. This order is also relative across the SqlString element.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SqlString">
<xs:annotation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
</xs:appinfo>
<xs:documentation>SQL String</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="SQL" use="required" type="xs:string">
</xs:attribute>
<xs:attribute name="User" type="xs:string">
</xs:attribute>
<xs:attribute name="SqlDb" type="xs:string">
</xs:attribute>
<xs:attribute name="ExecuteOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the string when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>
Specifies whether to execute the string when the associated component is reinstalled. Setting ExecuteOnInstall to yes does <html:b>not</html:b> imply ExecuteOnReinstall is set to yes. ExecuteOnReinstall must be set in addition to ExecuteOnInstall for it to be executed during both install and reinstall. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExecuteOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies to execute the string when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnInstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to install the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnReinstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to reinstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RollbackOnUninstall" type="YesNoType">
<xs:annotation>
<xs:documentation>Specifies whether to execute the string on rollback if an attempt is made to uninstall the associated component. This attribute is mutually exclusive with the ExecuteOnInstall, ExecuteOnReinstall and ExecuteOnUninstall attributes.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ContinueOnError" type="YesNoType">
<xs:annotation>
<xs:documentation>Continue executing strings even if this one fails.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sequence" type="xs:integer">
<xs:annotation>
<xs:documentation>Specifes the order to run the SQL Strings. It is recommended that rollback strings be scheduled before their complementary execution string. This order is also relative across the SqlScript element.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+154 -154
View File
@@ -1,154 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/TagExtension"
xmlns="http://schemas.microsoft.com/wix/TagExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the WiX Toolset Software Id Tag Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Tag">
<xs:annotation>
<xs:documentation>
This extension implements the ISO/IEC 19770-2:2015 specification. A SWID tag file
will be generated an inserted into the Product or Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>
Name to use in the filename for the software id tag. By default the filename
uses the Bundle/@Name or Product/@Name. If the bundle name or product name contains
invalid filename characters such as ":" or "?", use this attribute to provide
a valid filename.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Regid" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The regid for the software manufacturer. A regid is a URI simplified for the common
case. Namely, if the scheme is "http://", it can be removed. Additionally, the domain
should be minimized as much as possible (for example, remove "www." prefix if unnecessary).
For example, the WiX toolset regid is "wixtoolset.org".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InstallDirectory" type="xs:string">
<xs:annotation>
<xs:documentation>
A reference to an existing Directory/@Id where the software is installed. The SWID tag file will be installed in a "swidtag" folder
under that directory as per the specification. This attribute is required on a Tag element found under a Product element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InstallPath" type="xs:string">
<xs:annotation>
<xs:documentation>
The path where the software is installed. The SWID tag file will be installed in a "swidtag" folder.
This is a formatted attribute so it is possible to use Variables as the InstallPath by setting
the value to, for example, "[ProgramFilesFolder]CompanyName\Product Name". This attribute is required
on a Tag element found under a Bundle element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Feature" type="xs:string">
<xs:annotation>
<xs:documentation>Optional attribute to explicitly set the Feature when defining the software id tag
in a Product. By default the software id tag will always be installed by a top-level hidden feature.
It is recommended to <html:strong>not</html:strong> set this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Win64" type="YesNoTypeUnion">
<xs:annotation>
<xs:documentation>
This attribute facilitates the installation of packages that install both 32-bit and 64-bit files. Set this attribute to 'no'
to indicate the software id tag is installed to a 32-bit location (such as "ProgramFilesFolder") or 'yes' when the tag is
installed to a 64-bit location (such as "ProgramFiles64Folder"). The default default value is based on the platform set by
the -arch switch to candle.exe or the InstallerPlatform property in a .wixproj MSBuild project:
For x86 and ARM, the default value is 'no'.
For x64 and IA64, the default value is 'yes'.
This attribute is only allowed on a Tag element found under a Product element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Licensed" type="xs:string">
<xs:annotation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Type" type="xs:string">
<xs:annotation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="TagRef">
<xs:annotation>
<xs:documentation>
Allows an ISO/IEC 19770-2:2015 SWID tag file to be referenced in a Patch.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="PatchFamily" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Regid" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The regid for the software manufacturer. A regid is a URI simplified for the common
case. Namely, if the scheme is "http://", it can be removed. Additionally, the domain
should be minimized as much as possible (for example, remove "www." prefix if unnecessary).
For example, the WiX toolset regid is "wixtoolset.org".
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoTypeUnion">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:union memberTypes="YesNoType PreprocessorVariables"/>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PreprocessorVariables">
<xs:annotation>
<xs:documentation>A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\$\(\w+\.(\w|[.])+\))+" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/TagExtension"
xmlns="http://schemas.microsoft.com/wix/TagExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the WiX Toolset Software Id Tag Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Tag">
<xs:annotation>
<xs:documentation>
This extension implements the ISO/IEC 19770-2:2015 specification. A SWID tag file
will be generated an inserted into the Product or Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Name" type="xs:string">
<xs:annotation>
<xs:documentation>
Name to use in the filename for the software id tag. By default the filename
uses the Bundle/@Name or Product/@Name. If the bundle name or product name contains
invalid filename characters such as ":" or "?", use this attribute to provide
a valid filename.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Regid" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The regid for the software manufacturer. A regid is a URI simplified for the common
case. Namely, if the scheme is "http://", it can be removed. Additionally, the domain
should be minimized as much as possible (for example, remove "www." prefix if unnecessary).
For example, the WiX toolset regid is "wixtoolset.org".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InstallDirectory" type="xs:string">
<xs:annotation>
<xs:documentation>
A reference to an existing Directory/@Id where the software is installed. The SWID tag file will be installed in a "swidtag" folder
under that directory as per the specification. This attribute is required on a Tag element found under a Product element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="InstallPath" type="xs:string">
<xs:annotation>
<xs:documentation>
The path where the software is installed. The SWID tag file will be installed in a "swidtag" folder.
This is a formatted attribute so it is possible to use Variables as the InstallPath by setting
the value to, for example, "[ProgramFilesFolder]CompanyName\Product Name". This attribute is required
on a Tag element found under a Bundle element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Feature" type="xs:string">
<xs:annotation>
<xs:documentation>Optional attribute to explicitly set the Feature when defining the software id tag
in a Product. By default the software id tag will always be installed by a top-level hidden feature.
It is recommended to <html:strong>not</html:strong> set this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Win64" type="YesNoTypeUnion">
<xs:annotation>
<xs:documentation>
This attribute facilitates the installation of packages that install both 32-bit and 64-bit files. Set this attribute to 'no'
to indicate the software id tag is installed to a 32-bit location (such as "ProgramFilesFolder") or 'yes' when the tag is
installed to a 64-bit location (such as "ProgramFiles64Folder"). The default default value is based on the platform set by
the -arch switch to candle.exe or the InstallerPlatform property in a .wixproj MSBuild project:
For x86 and ARM, the default value is 'no'.
For x64 and IA64, the default value is 'yes'.
This attribute is only allowed on a Tag element found under a Product element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Licensed" type="xs:string">
<xs:annotation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Type" type="xs:string">
<xs:annotation>
<xs:appinfo>
<xse:deprecated />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="TagRef">
<xs:annotation>
<xs:documentation>
Allows an ISO/IEC 19770-2:2015 SWID tag file to be referenced in a Patch.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="PatchFamily" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Regid" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The regid for the software manufacturer. A regid is a URI simplified for the common
case. Namely, if the scheme is "http://", it can be removed. Additionally, the domain
should be minimized as much as possible (for example, remove "www." prefix if unnecessary).
For example, the WiX toolset regid is "wixtoolset.org".
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="YesNoTypeUnion">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:union memberTypes="YesNoType PreprocessorVariables"/>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PreprocessorVariables">
<xs:annotation>
<xs:documentation>A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run).</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\$\(\w+\.(\w|[.])+\))+" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
File diff suppressed because it is too large. Load diff
+1626 -1626
View File
File diff suppressed because it is too large. Load diff
+292 -292
View File
@@ -1,292 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/VSExtension"
xmlns="http://schemas.microsoft.com/wix/VSExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Visual Studio Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="HelpCollection">
<xs:annotation>
<xs:documentation>
Help Namespace for a help collection. The parent file is the key for the HxC (Collection) file.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="HelpFileRef" />
<xs:element ref="HelpFilterRef" />
<xs:element ref="PlugCollectionInto" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation><xs:documentation>Primary Key for HelpNamespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation><xs:documentation>Friendly name for Namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Internal Microsoft Help ID for this Namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFilter">
<xs:annotation>
<xs:documentation>
Filter for Help Namespace.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="FilterDefinition" type="xs:string">
<xs:annotation><xs:documentation>Query String for Help Filter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Friendly name for Filter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFile">
<xs:annotation>
<xs:documentation>
File for Help Namespace. The parent file is the key for HxS (Title) file.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="AttributeIndex" type="xs:string">
<xs:annotation><xs:documentation>Key for HxR (Attributes) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Index" type="xs:string">
<xs:annotation><xs:documentation>Key for HxI (Index) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Language" use="required" type="xs:integer">
<xs:annotation><xs:documentation>Language ID for content file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Internal Microsoft Help ID for this HelpFile.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SampleLocation" type="xs:string">
<xs:annotation><xs:documentation>Key for a file that is in the "root" of the samples directory for this HelpFile.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Search" type="xs:string">
<xs:annotation><xs:documentation>Key for HxQ (Query) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="PlugCollectionInto">
<xs:annotation><xs:documentation>Plugin for Help Namespace.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Attributes" type="xs:string">
<xs:annotation><xs:documentation>Key for HxA (Attributes) file of child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TableOfContents" type="xs:string">
<xs:annotation><xs:documentation>Key for HxT file of child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetCollection" use="required" type="xs:string">
<xs:annotation><xs:documentation>
Foriegn Key into HelpNamespace table for the parent namespace into which the child will be inserted.
The following special keys can be used to plug into external namespaces defined outside of the installer.
MS_VSIPCC_v80 : Visual Studio 2005
MS.VSIPCC.v90 : Visual Studio 2008
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetTableOfContents" type="xs:string">
<xs:annotation><xs:documentation>Key for HxT file of parent namespace that now includes the new child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetFeature" type="xs:string">
<xs:annotation><xs:documentation>Key for the feature parent of this help collection. Required only when plugging into external namespaces.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressExternalNamespaces" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Visual Studio Help namespaces. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFileRef">
<xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFilterRef">
<xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpCollectionRef">
<xs:annotation>
<xs:documentation>Create a reference to a HelpCollection element in another Fragment.</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="HelpFileRef" />
</xs:choice>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpNamespace Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="VsixPackage">
<xs:annotation>
<xs:documentation>
This element provides the metdata required to install/uninstall a file as
a VSIX Package. The VSIX package file will be installed as part of the MSI
then passed to the VSIX installer to install the VSIX package. To avoid the
duplication, simply use the MSI to install the VSIX package itself.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="File" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to file identifer. This attribute is required when the element is not a
child of a File element and is invalid when the element is a child of the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PackageId" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Identity of the VSIX package per its internal manifest. If this value is not correct
the VSIX package will not correctly uninstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Permanent" type="YesNoType">
<xs:annotation>
<xs:documentation>
Indicates whether the VSIX package is uninstalled when the parent Component is uninstalled.
The default is 'no'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Target" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the SKU of Visual Studio in which to register the extension. If no target
is specified the extension is registered with all installed SKUs. If the Target
attribute is specified the TargetVersion attribute must also be specified. The
following is a list of known Visual Studio targets: integratedShell, professional,
premium, ultimate, vbExpress, vcExpress, vcsExpress, vwdExpress
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TargetVersion" type="VersionType">
<xs:annotation>
<xs:documentation>
Specifies the version of Visual Studio in which to register the extension. This attribute
is required if the Target attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Vital" type="YesNoType">
<xs:annotation>
<xs:documentation>
Indicates whether failure to install the VSIX package causes the installation to rollback.
The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VsixInstallerPathProperty" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional reference to a Property element that contains the path to the VsixInstaller.exe.
By default, the latest VsixInstaller.exe on the machine will be used to install the VSIX
package. It is highly recommended that this attribute is *not* used.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="VersionType">
<xs:annotation><xs:documentation>Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\d{1,5}\.){0,3}\d{1,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
targetNamespace="http://schemas.microsoft.com/wix/VSExtension"
xmlns="http://schemas.microsoft.com/wix/VSExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Visual Studio Extension.
</xs:documentation>
</xs:annotation>
<xs:element name="HelpCollection">
<xs:annotation>
<xs:documentation>
Help Namespace for a help collection. The parent file is the key for the HxC (Collection) file.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="HelpFileRef" />
<xs:element ref="HelpFilterRef" />
<xs:element ref="PlugCollectionInto" />
</xs:choice>
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation><xs:documentation>Primary Key for HelpNamespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Description" type="xs:string">
<xs:annotation><xs:documentation>Friendly name for Namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Internal Microsoft Help ID for this Namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFilter">
<xs:annotation>
<xs:documentation>
Filter for Help Namespace.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="FilterDefinition" type="xs:string">
<xs:annotation><xs:documentation>Query String for Help Filter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Friendly name for Filter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFile">
<xs:annotation>
<xs:documentation>
File for Help Namespace. The parent file is the key for HxS (Title) file.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="AttributeIndex" type="xs:string">
<xs:annotation><xs:documentation>Key for HxR (Attributes) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Index" type="xs:string">
<xs:annotation><xs:documentation>Key for HxI (Index) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Language" use="required" type="xs:integer">
<xs:annotation><xs:documentation>Language ID for content file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Name" use="required" type="xs:string">
<xs:annotation><xs:documentation>Internal Microsoft Help ID for this HelpFile.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SampleLocation" type="xs:string">
<xs:annotation><xs:documentation>Key for a file that is in the "root" of the samples directory for this HelpFile.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="Search" type="xs:string">
<xs:annotation><xs:documentation>Key for HxQ (Query) file.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressCustomActions" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="PlugCollectionInto">
<xs:annotation><xs:documentation>Plugin for Help Namespace.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Attributes" type="xs:string">
<xs:annotation><xs:documentation>Key for HxA (Attributes) file of child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TableOfContents" type="xs:string">
<xs:annotation><xs:documentation>Key for HxT file of child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetCollection" use="required" type="xs:string">
<xs:annotation><xs:documentation>
Foriegn Key into HelpNamespace table for the parent namespace into which the child will be inserted.
The following special keys can be used to plug into external namespaces defined outside of the installer.
MS_VSIPCC_v80 : Visual Studio 2005
MS.VSIPCC.v90 : Visual Studio 2008
</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetTableOfContents" type="xs:string">
<xs:annotation><xs:documentation>Key for HxT file of parent namespace that now includes the new child namespace.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="TargetFeature" type="xs:string">
<xs:annotation><xs:documentation>Key for the feature parent of this help collection. Required only when plugging into external namespaces.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressExternalNamespaces" type="YesNoType">
<xs:annotation><xs:documentation>Suppress linking Visual Studio Help namespaces. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFileRef">
<xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpFilterRef">
<xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
<xs:complexType>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="HelpCollectionRef">
<xs:annotation>
<xs:documentation>Create a reference to a HelpCollection element in another Fragment.</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Module" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Product" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="HelpFileRef" />
</xs:choice>
<xs:attribute name="Id" use="required" type="xs:string">
<xs:annotation><xs:documentation>Primary Key for HelpNamespace Table.</xs:documentation></xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:element name="VsixPackage">
<xs:annotation>
<xs:documentation>
This element provides the metdata required to install/uninstall a file as
a VSIX Package. The VSIX package file will be installed as part of the MSI
then passed to the VSIX installer to install the VSIX package. To avoid the
duplication, simply use the MSI to install the VSIX package itself.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Component" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="File" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="File" type="xs:string">
<xs:annotation>
<xs:documentation>
Reference to file identifer. This attribute is required when the element is not a
child of a File element and is invalid when the element is a child of the File element.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PackageId" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Identity of the VSIX package per its internal manifest. If this value is not correct
the VSIX package will not correctly uninstall.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Permanent" type="YesNoType">
<xs:annotation>
<xs:documentation>
Indicates whether the VSIX package is uninstalled when the parent Component is uninstalled.
The default is 'no'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Target" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the SKU of Visual Studio in which to register the extension. If no target
is specified the extension is registered with all installed SKUs. If the Target
attribute is specified the TargetVersion attribute must also be specified. The
following is a list of known Visual Studio targets: integratedShell, professional,
premium, ultimate, vbExpress, vcExpress, vcsExpress, vwdExpress
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TargetVersion" type="VersionType">
<xs:annotation>
<xs:documentation>
Specifies the version of Visual Studio in which to register the extension. This attribute
is required if the Target attribute is specified.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Vital" type="YesNoType">
<xs:annotation>
<xs:documentation>
Indicates whether failure to install the VSIX package causes the installation to rollback.
The default is 'yes'.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VsixInstallerPathProperty" type="xs:string">
<xs:annotation>
<xs:documentation>
Optional reference to a Property element that contains the path to the VsixInstaller.exe.
By default, the latest VsixInstaller.exe on the machine will be used to install the VSIX
package. It is highly recommended that this attribute is *not* used.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:anyAttribute namespace="##other" processContents="lax">
<xs:annotation><xs:documentation>
Extensibility point in the WiX XML Schema. Schema extensions can register additional
attributes at this point in the schema.
</xs:documentation></xs:annotation>
</xs:anyAttribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="VersionType">
<xs:annotation><xs:documentation>Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.</xs:documentation></xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(\d{1,5}\.){0,3}\d{1,5}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base='xs:NMTOKEN'>
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+13115 -13115
View File
File diff suppressed because it is too large. Load diff
+134 -134
View File
@@ -1,134 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/2006/localization"
xmlns="http://schemas.microsoft.com/wix/2006/localization">
<xs:annotation>
<xs:documentation>
Schema for describing Windows Installer Xml Localization files (.wxl).
</xs:documentation>
</xs:annotation>
<xs:element name="WixLocalization">
<xs:annotation>
<xs:appinfo>
<xse:remarks>
<html:p>You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252 or iso-8859-1. See <a href="~/overview/codepage.html">Code Pages</a> for more information.</html:p>
</xse:remarks>
<xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
<xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="String" />
<xs:element ref="UI" />
</xs:choice>
<xs:attribute name="Codepage" type="xs:string">
<xs:annotation>
<xs:documentation>The code page integer value or web name for the resulting database. You can also specify -1 which will not reset the database code page. See remarks for more information.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Culture" type="xs:string">
<xs:annotation>
<xs:documentation>Culture of the localization strings.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Language" type="xs:integer">
<xs:annotation>
<xs:documentation>The decimal language ID (LCID) for the culture.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="String">
<xs:annotation>
<xs:appinfo>
<xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
<xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Identity of the resource.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Overridable" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Determines if the localized string may be overridden.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Localizable" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Indicates whether the string is localizable text or a non-localizable string that must be unique per locale. No WiX tools are affected by the value of this attribute; it used as documentation for localizers to ignore things like GUIDs or identifiers that look like text.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UI">
<xs:annotation>
<xs:documentation>Allows a localization to override the position, size, and text of dialogs and controls. Override the text by specifying the replacement text in the inner text of the UI element.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="Dialog" type="xs:string">
<xs:annotation>
<xs:documentation>Identifies the dialog to localize or the dialog that a control to localize is in.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Control" type="xs:string">
<xs:annotation>
<xs:documentation>Combined with the Dialog attribute, identifies the control to localize.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="X" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored horizontal centering. For a control, overrides the authored horizontal coordinate of the upper-left corner of the rectangular boundary. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Y" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored vertical centering. For a control, overrides the authored vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Width" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored width in dialog units. For a control, overrides the authored width of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Height" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored height in dialog units. For a control, overrides the authored height of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RightToLeft" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the Control to display from right to left. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RightAligned" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the Control to be right aligned. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LeftScroll" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the scroll bar to display on the left side of the Control. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="LocalizationYesNoType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/2006/localization"
xmlns="http://schemas.microsoft.com/wix/2006/localization">
<xs:annotation>
<xs:documentation>
Schema for describing Windows Installer Xml Localization files (.wxl).
</xs:documentation>
</xs:annotation>
<xs:element name="WixLocalization">
<xs:annotation>
<xs:appinfo>
<xse:remarks>
<html:p>You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252 or iso-8859-1. See <a href="~/overview/codepage.html">Code Pages</a> for more information.</html:p>
</xse:remarks>
<xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
<xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="String" />
<xs:element ref="UI" />
</xs:choice>
<xs:attribute name="Codepage" type="xs:string">
<xs:annotation>
<xs:documentation>The code page integer value or web name for the resulting database. You can also specify -1 which will not reset the database code page. See remarks for more information.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Culture" type="xs:string">
<xs:annotation>
<xs:documentation>Culture of the localization strings.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Language" type="xs:integer">
<xs:annotation>
<xs:documentation>The decimal language ID (LCID) for the culture.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="String">
<xs:annotation>
<xs:appinfo>
<xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
<xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
</xs:appinfo>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="Id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Identity of the resource.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Overridable" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Determines if the localized string may be overridden.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Localizable" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Indicates whether the string is localizable text or a non-localizable string that must be unique per locale. No WiX tools are affected by the value of this attribute; it used as documentation for localizers to ignore things like GUIDs or identifiers that look like text.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="UI">
<xs:annotation>
<xs:documentation>Allows a localization to override the position, size, and text of dialogs and controls. Override the text by specifying the replacement text in the inner text of the UI element.</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:attribute name="Dialog" type="xs:string">
<xs:annotation>
<xs:documentation>Identifies the dialog to localize or the dialog that a control to localize is in.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Control" type="xs:string">
<xs:annotation>
<xs:documentation>Combined with the Dialog attribute, identifies the control to localize.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="X" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored horizontal centering. For a control, overrides the authored horizontal coordinate of the upper-left corner of the rectangular boundary. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Y" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored vertical centering. For a control, overrides the authored vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Width" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored width in dialog units. For a control, overrides the authored width of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Height" type="xs:integer">
<xs:annotation>
<xs:documentation>For a dialog, overrides the authored height in dialog units. For a control, overrides the authored height of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RightToLeft" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the Control to display from right to left. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="RightAligned" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the Control to be right aligned. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LeftScroll" type="LocalizationYesNoType">
<xs:annotation>
<xs:documentation>Set this attribute to "yes" to cause the scroll bar to display on the left side of the Control. Not valid for a dialog.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="LocalizationYesNoType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no" />
<xs:enumeration value="yes" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
+12 -12
View File
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixIIsExtension;WixUtilExtension;WixVSExtension"/>
</appSettings>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixIIsExtension;WixUtilExtension;WixVSExtension"/>
</appSettings>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixDifxAppExtension;WixDirectXExtension;WixFirewallExtension;WixGamingExtension;WixIIsExtension;WixLuxExtension;WixNetFxExtension;WixSqlExtension;WixUIExtension;WixUtilExtension;WixVSExtension" />
</appSettings>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<appSettings>
<add key="extensions" value="WixDifxAppExtension;WixDirectXExtension;WixFirewallExtension;WixGamingExtension;WixIIsExtension;WixLuxExtension;WixNetFxExtension;WixSqlExtension;WixUIExtension;WixUtilExtension;WixVSExtension" />
</appSettings>
</configuration>
+112 -112
View File
@@ -1,112 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
<UsingTask TaskName="GenerateTestConsumer" AssemblyFile="$(LuxTasksPath)" />
<UsingTask TaskName="Nit" AssemblyFile="$(LuxTasksPath)" />
<PropertyGroup>
<BuildTestPackageDependsOn>Compile;_ScanForUnitTests;_GenerateTestConsumer;Link</BuildTestPackageDependsOn>
<TestDependsOn>$(BuildTestPackageDependsOn)</TestDependsOn>
</PropertyGroup>
<ItemGroup>
<GeneratedTestConsumer Include="$(OutputName)_test.wxs" />
</ItemGroup>
<Target
Name="_ScanForUnitTests">
<!--
So the Link target can do proper up-to-date checking, we need to give it the right list of
.wixobj inputs, which we get by scanning for unit tests and not generating a test consumer.
-->
<GenerateTestConsumer
InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
Extensions="@(_ResolvedWixExtensionPaths)">
<Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
</GenerateTestConsumer>
<ItemGroup>
<CompileObjOutput
Remove="@(CompileObjOutput)" />
<CompileObjOutput
Include="
@(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)');
@(FilesThatAreFragments);
" />
</ItemGroup>
<PropertyGroup>
<TargetName>$(OutputName)_test</TargetName>
<SuppressIces>ICE71;$(SuppressIces)</SuppressIces>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
</Target>
<Target
Name="_GenerateTestConsumer"
Inputs="@(Compile);
@(Content);
@(_ResolvedWixExtensionPaths);
@(_ResolvedProjectReferencePaths);
$(MSBuildAllProjects)"
Outputs="@(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)')">
<GenerateTestConsumer
InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
Extensions="@(_ResolvedWixExtensionPaths)"
OutputFile="@(GeneratedTestConsumer)">
<Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
</GenerateTestConsumer>
<Candle
SourceFiles="@(GeneratedTestConsumer)"
AdditionalOptions="$(CompilerAdditionalOptions)"
DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)"
ExtensionDirectory="$(WixExtDir)"
Extensions="@(_ResolvedWixExtensionPaths)"
FipsCompliant="$(FipsCompliant)"
IncludeSearchPaths="$(IncludeSearchPaths)"
InstallerPlatform="$(InstallerPlatform)"
NoLogo="$(CompilerNoLogo)"
OutputFile="$(IntermediateOutputPath)"
Pedantic="$(Pedantic)"
ReferencePaths="$(ReferencePaths)"
RunAsSeparateProcess="$(RunWixToolsOutOfProc)"
ShowSourceTrace="$(ShowSourceTrace)"
SuppressAllWarnings="$(CompilerSuppressAllWarnings)"
SuppressSchemaValidation="$(CompilerSuppressSchemaValidation)"
SuppressSpecificWarnings="$(CompilerSuppressSpecificWarnings)"
ToolPath="$(WixToolPath)"
TreatWarningsAsErrors="$(CompilerTreatWarningsAsErrors)"
TreatSpecificWarningsAsErrors="$(CompilerTreatSpecificWarningsAsErrors)"
VerboseOutput="$(CompilerVerboseOutput)" />
</Target>
<Target
Name="BuildTestPackage"
Inputs="@(CompileObjOutput);
@(WixObject);
@(_ResolvedProjectReferencePaths);
@(_ResolvedWixLibraryPaths);
@(_ResolvedWixExtensionPaths);
$(MSBuildAllProjects)"
Outputs="$(TargetPath)"
DependsOnTargets="$(BuildTestPackageDependsOn)" />
<Target
Name="Test"
DependsOnTargets="$(BuildTestPackageDependsOn)">
<Nit
TestPackages="$(TargetPath)"
ToolPath="$(WixToolPath)" />
</Target>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<!-- 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. -->
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
<UsingTask TaskName="GenerateTestConsumer" AssemblyFile="$(LuxTasksPath)" />
<UsingTask TaskName="Nit" AssemblyFile="$(LuxTasksPath)" />
<PropertyGroup>
<BuildTestPackageDependsOn>Compile;_ScanForUnitTests;_GenerateTestConsumer;Link</BuildTestPackageDependsOn>
<TestDependsOn>$(BuildTestPackageDependsOn)</TestDependsOn>
</PropertyGroup>
<ItemGroup>
<GeneratedTestConsumer Include="$(OutputName)_test.wxs" />
</ItemGroup>
<Target
Name="_ScanForUnitTests">
<!--
So the Link target can do proper up-to-date checking, we need to give it the right list of
.wixobj inputs, which we get by scanning for unit tests and not generating a test consumer.
-->
<GenerateTestConsumer
InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
Extensions="@(_ResolvedWixExtensionPaths)">
<Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
</GenerateTestConsumer>
<ItemGroup>
<CompileObjOutput
Remove="@(CompileObjOutput)" />
<CompileObjOutput
Include="
@(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)');
@(FilesThatAreFragments);
" />
</ItemGroup>
<PropertyGroup>
<TargetName>$(OutputName)_test</TargetName>
<SuppressIces>ICE71;$(SuppressIces)</SuppressIces>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
</Target>
<Target
Name="_GenerateTestConsumer"
Inputs="@(Compile);
@(Content);
@(_ResolvedWixExtensionPaths);
@(_ResolvedProjectReferencePaths);
$(MSBuildAllProjects)"
Outputs="@(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)')">
<GenerateTestConsumer
InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
Extensions="@(_ResolvedWixExtensionPaths)"
OutputFile="@(GeneratedTestConsumer)">
<Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
</GenerateTestConsumer>
<Candle
SourceFiles="@(GeneratedTestConsumer)"
AdditionalOptions="$(CompilerAdditionalOptions)"
DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)"
ExtensionDirectory="$(WixExtDir)"
Extensions="@(_ResolvedWixExtensionPaths)"
FipsCompliant="$(FipsCompliant)"
IncludeSearchPaths="$(IncludeSearchPaths)"
InstallerPlatform="$(InstallerPlatform)"
NoLogo="$(CompilerNoLogo)"
OutputFile="$(IntermediateOutputPath)"
Pedantic="$(Pedantic)"
ReferencePaths="$(ReferencePaths)"
RunAsSeparateProcess="$(RunWixToolsOutOfProc)"
ShowSourceTrace="$(ShowSourceTrace)"
SuppressAllWarnings="$(CompilerSuppressAllWarnings)"
SuppressSchemaValidation="$(CompilerSuppressSchemaValidation)"
SuppressSpecificWarnings="$(CompilerSuppressSpecificWarnings)"
ToolPath="$(WixToolPath)"
TreatWarningsAsErrors="$(CompilerTreatWarningsAsErrors)"
TreatSpecificWarningsAsErrors="$(CompilerTreatSpecificWarningsAsErrors)"
VerboseOutput="$(CompilerVerboseOutput)" />
</Target>
<Target
Name="BuildTestPackage"
Inputs="@(CompileObjOutput);
@(WixObject);
@(_ResolvedProjectReferencePaths);
@(_ResolvedWixLibraryPaths);
@(_ResolvedWixExtensionPaths);
$(MSBuildAllProjects)"
Outputs="$(TargetPath)"
DependsOnTargets="$(BuildTestPackageDependsOn)" />
<Target
Name="Test"
DependsOnTargets="$(BuildTestPackageDependsOn)">
<Nit
TestPackages="$(TargetPath)"
ToolPath="$(WixToolPath)" />
</Target>
</Project>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+9 -9
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>
+26 -26
View File
@@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
<wix.bootstrapper>
<!-- Example only. Use only if the startup/supportedRuntime above cannot discern supported frameworks. -->
<!--
<supportedFramework version="v4\Client" />
<supportedFramework version="v3.5" />
<supportedFramework version="v3.0" />
-->
<!-- Example only. Replace the host/@assemblyName attribute with assembly that implements BootstrapperApplication. -->
<host assemblyName="AssemblyWithClassThatInheritsFromBootstrapperApplication" />
</wix.bootstrapper>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<configSections>
<sectionGroup name="wix.bootstrapper" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section name="host" type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
<wix.bootstrapper>
<!-- Example only. Use only if the startup/supportedRuntime above cannot discern supported frameworks. -->
<!--
<supportedFramework version="v4\Client" />
<supportedFramework version="v3.5" />
<supportedFramework version="v3.0" />
-->
<!-- Example only. Replace the host/@assemblyName attribute with assembly that implements BootstrapperApplication. -->
<host assemblyName="AssemblyWithClassThatInheritsFromBootstrapperApplication" />
</wix.bootstrapper>
</configuration>
File diff suppressed because it is too large. Load diff
+10 -10
View File
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<!-- 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. -->
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
@@ -1,495 +1,495 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Deployment.Compression.Cab</name>
</assembly>
<members>
<member name="M:Microsoft.Deployment.Compression.Cab.CabPacker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabEngine">
<summary>
Engine capable of packing and unpacking archives in the cabinet format.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.#ctor">
<summary>
Creates a new instance of the cabinet engine.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly
or indirectly by a user's code, so managed and unmanaged resources
will be disposed. If false, the method has been called by the runtime
from inside the finalizer, and only unmanaged resources will be
disposed.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Pack(Microsoft.Deployment.Compression.IPackStreamContext,System.Collections.Generic.IEnumerable{System.String},System.Int64)">
<summary>
Creates a cabinet or chain of cabinets.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="files">The paths of the files in the archive (not
external file paths).</param>
<param name="maxArchiveSize">The maximum number of bytes for one
cabinet before the contents are chained to the next cabinet, or zero
for unlimited cabinet size.</param>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet could not be
created.</exception>
<remarks>
The stream context implementation may provide a mapping from the
file paths within the cabinet to the external file paths.
<para>Smaller folder sizes can make it more efficient to extract
individual files out of large cabinet packages.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.IsArchive(System.IO.Stream)">
<summary>
Checks whether a Stream begins with a header that indicates
it is a valid cabinet file.
</summary>
<param name="stream">Stream for reading the cabinet file.</param>
<returns>True if the stream is a valid cabinet file
(with no offset); false otherwise.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.GetFileInfo(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
<summary>
Gets information about files in a cabinet or cabinet chain.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="fileFilter">A predicate that can determine
which files to process, optional.</param>
<returns>Information about files in the cabinet stream.</returns>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet provided
by the stream context is not valid.</exception>
<remarks>
The <paramref name="fileFilter"/> predicate takes an internal file
path and returns true to include the file or false to exclude it.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Unpack(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
<summary>
Extracts files from a cabinet or cabinet chain.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="fileFilter">An optional predicate that can determine
which files to process.</param>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet provided
by the stream context is not valid.</exception>
<remarks>
The <paramref name="fileFilter"/> predicate takes an internal file
path and returns true to include the file or false to exclude it.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabWorker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabException">
<summary>
Exception class for cabinet operations.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.String,System.Exception)">
<summary>
Creates a new CabException with a specified error message and a reference to the
inner exception that is the cause of this exception.
</summary>
<param name="message">The message that describes the error.</param>
<param name="innerException">The exception that is the cause of the current exception. If the
innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
is raised in a catch block that handles the inner exception.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.String)">
<summary>
Creates a new CabException with a specified error message.
</summary>
<param name="message">The message that describes the error.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor">
<summary>
Creates a new CabException.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabException class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabException.Error">
<summary>
Gets the FCI or FDI cabinet engine error number.
</summary>
<value>A cabinet engine error number, or 0 if the exception was
not related to a cabinet engine error number.</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabException.ErrorCode">
<summary>
Gets the Win32 error code.
</summary>
<value>A Win32 error code, or 0 if the exception was
not related to a Win32 error.</value>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Sets the SerializationInfo with information about the exception.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabUnpacker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabFileInfo">
<summary>
Object representing a compressed file within a cabinet package; provides operations for getting
the file properties and extracting the file.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(Microsoft.Deployment.Compression.Cab.CabInfo,System.String)">
<summary>
Creates a new CabinetFileInfo object representing a file within a cabinet in a specified path.
</summary>
<param name="cabinetInfo">An object representing the cabinet containing the file.</param>
<param name="filePath">The path to the file within the cabinet. Usually, this is a simple file
name, but if the cabinet contains a directory structure this may include the directory.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(System.String,System.Int32,System.Int32,System.IO.FileAttributes,System.DateTime,System.Int64)">
<summary>
Creates a new CabinetFileInfo object with all parameters specified,
used internally when reading the metadata out of a cab.
</summary>
<param name="filePath">The internal path and name of the file in the cab.</param>
<param name="cabFolder">The folder number containing the file.</param>
<param name="cabNumber">The cabinet number where the file starts.</param>
<param name="attributes">The stored attributes of the file.</param>
<param name="lastWriteTime">The stored last write time of the file.</param>
<param name="length">The uncompressed size of the file.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabinetFileInfo class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Sets the SerializationInfo with information about the archive.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data.</param>
<param name="context">The StreamingContext that contains contextual information
about the source or destination.</param>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.Cabinet">
<summary>
Gets or sets the cabinet that contains this file.
</summary>
<value>
The CabinetInfo instance that retrieved this file information -- this
may be null if the CabinetFileInfo object was returned directly from a
stream.
</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetName">
<summary>
Gets the full path of the cabinet that contains this file.
</summary>
<value>The full path of the cabinet that contains this file.</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetFolderNumber">
<summary>
Gets the number of the folder containing this file.
</summary>
<value>The number of the cabinet folder containing this file.</value>
<remarks>A single folder or the first folder of a cabinet
(or chain of cabinets) is numbered 0.</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.Refresh(Microsoft.Deployment.Compression.ArchiveFileInfo)">
<summary>
Refreshes the information in this object with new data retrieved
from an archive.
</summary>
<param name="newFileInfo">Fresh instance for the same file just
read from the archive.</param>
<remarks>
This implementation refreshes the <see cref="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetFolderNumber"/>.
</remarks>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabInfo">
<summary>
Object representing a cabinet file on disk; provides access to
file-based operations on the cabinet file.
</summary>
<remarks>
Generally, the methods on this class are much easier to use than the
stream-based interfaces provided by the <see cref="T:Microsoft.Deployment.Compression.Cab.CabEngine"/> class.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.#ctor(System.String)">
<summary>
Creates a new CabinetInfo object representing a cabinet file in a specified path.
</summary>
<param name="path">The path to the cabinet file. When creating a cabinet file, this file does not
necessarily exist yet.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabinetInfo class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.CreateCompressionEngine">
<summary>
Creates a compression engine that does the low-level work for
this object.
</summary>
<returns>A new <see cref="T:Microsoft.Deployment.Compression.Cab.CabEngine"/> instance.</returns>
<remarks>
Each instance will be <see cref="M:Microsoft.Deployment.Compression.CompressionEngine.Dispose"/>d
immediately after use.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.GetFiles">
<summary>
Gets information about the files contained in the archive.
</summary>
<returns>A list of <see cref="T:Microsoft.Deployment.Compression.Cab.CabFileInfo"/> objects, each
containing information about a file in the archive.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.GetFiles(System.String)">
<summary>
Gets information about the certain files contained in the archive file.
</summary>
<param name="searchPattern">The search string, such as
&quot;*.txt&quot;.</param>
<returns>A list of <see cref="T:Microsoft.Deployment.Compression.Cab.CabFileInfo"/> objects, each containing
information about a file in the archive.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.HandleManager`1">
<summary>
Generic class for managing allocations of integer handles
for objects of a certain type.
</summary>
<typeparam name="T">The type of objects the handles refer to.</typeparam>
</member>
<member name="F:Microsoft.Deployment.Compression.Cab.HandleManager`1.handles">
<summary>
Auto-resizing list of objects for which handles have been allocated.
Each handle is just an index into this list. When a handle is freed,
the list item at that index is set to null.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.#ctor">
<summary>
Creates a new HandleManager instance.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.HandleManager`1.Item(System.Int32)">
<summary>
Gets the object of a handle, or null if the handle is invalid.
</summary>
<param name="handle">The integer handle previously allocated
for the desired object.</param>
<returns>The object for which the handle was allocated.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.AllocHandle(`0)">
<summary>
Allocates a new handle for an object.
</summary>
<param name="obj">Object that the handle will refer to.</param>
<returns>New handle that can be later used to retrieve the object.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.FreeHandle(System.Int32)">
<summary>
Frees a handle that was previously allocated. Afterward the handle
will be invalid and the object it referred to can no longer retrieved.
</summary>
<param name="handle">Handle to be freed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods">
<summary>
Native DllImport methods and related structures and constants used for
cabinet creation and extraction via cabinet.dll.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI">
<summary>
A direct import of constants, enums, structures, delegates, and functions from fci.h.
Refer to comments in fci.h for documentation.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.ERROR">
<summary>
Error codes that can be returned by FCI.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.TCOMP">
<summary>
FCI compression algorithm types and parameters.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.STATUS">
<summary>
Reason for FCI status callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.CCAB">
<summary>
Cabinet information structure used for FCI initialization and GetNextCabinet callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle">
<summary>
Ensures that the FCI handle is safely released.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.#ctor">
<summary>
Creates a new unintialized handle. The handle will be initialized
when it is marshalled back from native code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.IsInvalid">
<summary>
Checks if the handle is invalid. An FCI handle is invalid when it is zero.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.ReleaseHandle">
<summary>
Releases the handle by calling FDIDestroy().
</summary>
<returns>True if the release succeeded.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI">
<summary>
A direct import of constants, enums, structures, delegates, and functions from fdi.h.
Refer to comments in fdi.h for documentation.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.ERROR">
<summary>
Error codes that can be returned by FDI.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.NOTIFICATIONTYPE">
<summary>
Type of notification message for the FDI Notify callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.CABINFO">
<summary>
Cabinet information structure filled in by FDI IsCabinet.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.NOTIFICATION">
<summary>
Cabinet notification details passed to the FDI Notify callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle">
<summary>
Ensures that the FDI handle is safely released.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.#ctor">
<summary>
Creates a new unintialized handle. The handle will be initialized
when it is marshalled back from native code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.IsInvalid">
<summary>
Checks if the handle is invalid. An FDI handle is invalid when it is zero.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.ReleaseHandle">
<summary>
Releases the handle by calling FDIDestroy().
</summary>
<returns>True if the release succeeded.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF">
<summary>
Error info structure for FCI and FDI.
</summary>
<remarks>Before being passed to FCI or FDI, this structure is
pinned in memory via a GCHandle. The pinning is necessary
to be able to read the results, since the ERF structure doesn't
get marshalled back out after an error.</remarks>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Oper">
<summary>
Gets or sets the cabinet error code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Type">
<summary>
Gets or sets the Win32 error code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Error">
<summary>
GCHandle doesn't like the bool type, so use an int underneath.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Clear">
<summary>
Clears the error information.
</summary>
</member>
<member name="T:Microsoft.Tools.WindowsInstallerXml.WixDistribution">
<summary>
Distribution specific strings.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.NewsUrl">
<summary>
News URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.ShortProduct">
<summary>
Short product name for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.SupportUrl">
<summary>
Support URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.TelemetryUrlFormat">
<summary>
Telemetry URL format for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.VSExtensionsLandingUrl">
<summary>
VS Extensions Landing page Url for the distribution.
</summary>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Deployment.Compression.Cab</name>
</assembly>
<members>
<member name="M:Microsoft.Deployment.Compression.Cab.CabPacker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabEngine">
<summary>
Engine capable of packing and unpacking archives in the cabinet format.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.#ctor">
<summary>
Creates a new instance of the cabinet engine.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly
or indirectly by a user's code, so managed and unmanaged resources
will be disposed. If false, the method has been called by the runtime
from inside the finalizer, and only unmanaged resources will be
disposed.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Pack(Microsoft.Deployment.Compression.IPackStreamContext,System.Collections.Generic.IEnumerable{System.String},System.Int64)">
<summary>
Creates a cabinet or chain of cabinets.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="files">The paths of the files in the archive (not
external file paths).</param>
<param name="maxArchiveSize">The maximum number of bytes for one
cabinet before the contents are chained to the next cabinet, or zero
for unlimited cabinet size.</param>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet could not be
created.</exception>
<remarks>
The stream context implementation may provide a mapping from the
file paths within the cabinet to the external file paths.
<para>Smaller folder sizes can make it more efficient to extract
individual files out of large cabinet packages.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.IsArchive(System.IO.Stream)">
<summary>
Checks whether a Stream begins with a header that indicates
it is a valid cabinet file.
</summary>
<param name="stream">Stream for reading the cabinet file.</param>
<returns>True if the stream is a valid cabinet file
(with no offset); false otherwise.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.GetFileInfo(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
<summary>
Gets information about files in a cabinet or cabinet chain.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="fileFilter">A predicate that can determine
which files to process, optional.</param>
<returns>Information about files in the cabinet stream.</returns>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet provided
by the stream context is not valid.</exception>
<remarks>
The <paramref name="fileFilter"/> predicate takes an internal file
path and returns true to include the file or false to exclude it.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabEngine.Unpack(Microsoft.Deployment.Compression.IUnpackStreamContext,System.Predicate{System.String})">
<summary>
Extracts files from a cabinet or cabinet chain.
</summary>
<param name="streamContext">A context interface to handle opening
and closing of cabinet and file streams.</param>
<param name="fileFilter">An optional predicate that can determine
which files to process.</param>
<exception cref="T:Microsoft.Deployment.Compression.ArchiveException">The cabinet provided
by the stream context is not valid.</exception>
<remarks>
The <paramref name="fileFilter"/> predicate takes an internal file
path and returns true to include the file or false to exclude it.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabWorker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabException">
<summary>
Exception class for cabinet operations.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.String,System.Exception)">
<summary>
Creates a new CabException with a specified error message and a reference to the
inner exception that is the cause of this exception.
</summary>
<param name="message">The message that describes the error.</param>
<param name="innerException">The exception that is the cause of the current exception. If the
innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
is raised in a catch block that handles the inner exception.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.String)">
<summary>
Creates a new CabException with a specified error message.
</summary>
<param name="message">The message that describes the error.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor">
<summary>
Creates a new CabException.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabException class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabException.Error">
<summary>
Gets the FCI or FDI cabinet engine error number.
</summary>
<value>A cabinet engine error number, or 0 if the exception was
not related to a cabinet engine error number.</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabException.ErrorCode">
<summary>
Gets the Win32 error code.
</summary>
<value>A Win32 error code, or 0 if the exception was
not related to a Win32 error.</value>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Sets the SerializationInfo with information about the exception.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabUnpacker.Dispose(System.Boolean)">
<summary>
Disposes of resources allocated by the cabinet engine.
</summary>
<param name="disposing">If true, the method has been called directly or indirectly by a user's code,
so managed and unmanaged resources will be disposed. If false, the method has been called by the
runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabFileInfo">
<summary>
Object representing a compressed file within a cabinet package; provides operations for getting
the file properties and extracting the file.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(Microsoft.Deployment.Compression.Cab.CabInfo,System.String)">
<summary>
Creates a new CabinetFileInfo object representing a file within a cabinet in a specified path.
</summary>
<param name="cabinetInfo">An object representing the cabinet containing the file.</param>
<param name="filePath">The path to the file within the cabinet. Usually, this is a simple file
name, but if the cabinet contains a directory structure this may include the directory.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(System.String,System.Int32,System.Int32,System.IO.FileAttributes,System.DateTime,System.Int64)">
<summary>
Creates a new CabinetFileInfo object with all parameters specified,
used internally when reading the metadata out of a cab.
</summary>
<param name="filePath">The internal path and name of the file in the cab.</param>
<param name="cabFolder">The folder number containing the file.</param>
<param name="cabNumber">The cabinet number where the file starts.</param>
<param name="attributes">The stored attributes of the file.</param>
<param name="lastWriteTime">The stored last write time of the file.</param>
<param name="length">The uncompressed size of the file.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabinetFileInfo class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Sets the SerializationInfo with information about the archive.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data.</param>
<param name="context">The StreamingContext that contains contextual information
about the source or destination.</param>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.Cabinet">
<summary>
Gets or sets the cabinet that contains this file.
</summary>
<value>
The CabinetInfo instance that retrieved this file information -- this
may be null if the CabinetFileInfo object was returned directly from a
stream.
</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetName">
<summary>
Gets the full path of the cabinet that contains this file.
</summary>
<value>The full path of the cabinet that contains this file.</value>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetFolderNumber">
<summary>
Gets the number of the folder containing this file.
</summary>
<value>The number of the cabinet folder containing this file.</value>
<remarks>A single folder or the first folder of a cabinet
(or chain of cabinets) is numbered 0.</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabFileInfo.Refresh(Microsoft.Deployment.Compression.ArchiveFileInfo)">
<summary>
Refreshes the information in this object with new data retrieved
from an archive.
</summary>
<param name="newFileInfo">Fresh instance for the same file just
read from the archive.</param>
<remarks>
This implementation refreshes the <see cref="P:Microsoft.Deployment.Compression.Cab.CabFileInfo.CabinetFolderNumber"/>.
</remarks>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.CabInfo">
<summary>
Object representing a cabinet file on disk; provides access to
file-based operations on the cabinet file.
</summary>
<remarks>
Generally, the methods on this class are much easier to use than the
stream-based interfaces provided by the <see cref="T:Microsoft.Deployment.Compression.Cab.CabEngine"/> class.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.#ctor(System.String)">
<summary>
Creates a new CabinetInfo object representing a cabinet file in a specified path.
</summary>
<param name="path">The path to the cabinet file. When creating a cabinet file, this file does not
necessarily exist yet.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>
Initializes a new instance of the CabinetInfo class with serialized data.
</summary>
<param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
<param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.CreateCompressionEngine">
<summary>
Creates a compression engine that does the low-level work for
this object.
</summary>
<returns>A new <see cref="T:Microsoft.Deployment.Compression.Cab.CabEngine"/> instance.</returns>
<remarks>
Each instance will be <see cref="M:Microsoft.Deployment.Compression.CompressionEngine.Dispose"/>d
immediately after use.
</remarks>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.GetFiles">
<summary>
Gets information about the files contained in the archive.
</summary>
<returns>A list of <see cref="T:Microsoft.Deployment.Compression.Cab.CabFileInfo"/> objects, each
containing information about a file in the archive.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.CabInfo.GetFiles(System.String)">
<summary>
Gets information about the certain files contained in the archive file.
</summary>
<param name="searchPattern">The search string, such as
&quot;*.txt&quot;.</param>
<returns>A list of <see cref="T:Microsoft.Deployment.Compression.Cab.CabFileInfo"/> objects, each containing
information about a file in the archive.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.HandleManager`1">
<summary>
Generic class for managing allocations of integer handles
for objects of a certain type.
</summary>
<typeparam name="T">The type of objects the handles refer to.</typeparam>
</member>
<member name="F:Microsoft.Deployment.Compression.Cab.HandleManager`1.handles">
<summary>
Auto-resizing list of objects for which handles have been allocated.
Each handle is just an index into this list. When a handle is freed,
the list item at that index is set to null.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.#ctor">
<summary>
Creates a new HandleManager instance.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.HandleManager`1.Item(System.Int32)">
<summary>
Gets the object of a handle, or null if the handle is invalid.
</summary>
<param name="handle">The integer handle previously allocated
for the desired object.</param>
<returns>The object for which the handle was allocated.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.AllocHandle(`0)">
<summary>
Allocates a new handle for an object.
</summary>
<param name="obj">Object that the handle will refer to.</param>
<returns>New handle that can be later used to retrieve the object.</returns>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.HandleManager`1.FreeHandle(System.Int32)">
<summary>
Frees a handle that was previously allocated. Afterward the handle
will be invalid and the object it referred to can no longer retrieved.
</summary>
<param name="handle">Handle to be freed.</param>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods">
<summary>
Native DllImport methods and related structures and constants used for
cabinet creation and extraction via cabinet.dll.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI">
<summary>
A direct import of constants, enums, structures, delegates, and functions from fci.h.
Refer to comments in fci.h for documentation.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.ERROR">
<summary>
Error codes that can be returned by FCI.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.TCOMP">
<summary>
FCI compression algorithm types and parameters.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.STATUS">
<summary>
Reason for FCI status callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.CCAB">
<summary>
Cabinet information structure used for FCI initialization and GetNextCabinet callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle">
<summary>
Ensures that the FCI handle is safely released.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.#ctor">
<summary>
Creates a new unintialized handle. The handle will be initialized
when it is marshalled back from native code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.IsInvalid">
<summary>
Checks if the handle is invalid. An FCI handle is invalid when it is zero.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FCI.Handle.ReleaseHandle">
<summary>
Releases the handle by calling FDIDestroy().
</summary>
<returns>True if the release succeeded.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI">
<summary>
A direct import of constants, enums, structures, delegates, and functions from fdi.h.
Refer to comments in fdi.h for documentation.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.ERROR">
<summary>
Error codes that can be returned by FDI.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.NOTIFICATIONTYPE">
<summary>
Type of notification message for the FDI Notify callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.CABINFO">
<summary>
Cabinet information structure filled in by FDI IsCabinet.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.NOTIFICATION">
<summary>
Cabinet notification details passed to the FDI Notify callback.
</summary>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle">
<summary>
Ensures that the FDI handle is safely released.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.#ctor">
<summary>
Creates a new unintialized handle. The handle will be initialized
when it is marshalled back from native code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.IsInvalid">
<summary>
Checks if the handle is invalid. An FDI handle is invalid when it is zero.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.FDI.Handle.ReleaseHandle">
<summary>
Releases the handle by calling FDIDestroy().
</summary>
<returns>True if the release succeeded.</returns>
</member>
<member name="T:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF">
<summary>
Error info structure for FCI and FDI.
</summary>
<remarks>Before being passed to FCI or FDI, this structure is
pinned in memory via a GCHandle. The pinning is necessary
to be able to read the results, since the ERF structure doesn't
get marshalled back out after an error.</remarks>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Oper">
<summary>
Gets or sets the cabinet error code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Type">
<summary>
Gets or sets the Win32 error code.
</summary>
</member>
<member name="P:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Error">
<summary>
GCHandle doesn't like the bool type, so use an int underneath.
</summary>
</member>
<member name="M:Microsoft.Deployment.Compression.Cab.NativeMethods.ERF.Clear">
<summary>
Clears the error information.
</summary>
</member>
<member name="T:Microsoft.Tools.WindowsInstallerXml.WixDistribution">
<summary>
Distribution specific strings.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.NewsUrl">
<summary>
News URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.ShortProduct">
<summary>
Short product name for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.SupportUrl">
<summary>
Support URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.TelemetryUrlFormat">
<summary>
Telemetry URL format for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.VSExtensionsLandingUrl">
<summary>
VS Extensions Landing page Url for the distribution.
</summary>
</member>
</members>
</doc>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -1,464 +1,464 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Deployment.WindowsInstaller.Linq</name>
</assembly>
<members>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute">
<summary>
Apply to a subclass of QRecord to indicate the name of
the table the record type is to be used with.
</summary>
<remarks>
If this attribute is not used on a record type, the default
table name will be derived from the record type name. (An
optional underscore suffix is stripped.)
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.#ctor(System.String)">
<summary>
Creates a new DatabaseTableAttribute for the specified table.
</summary>
<param name="table">name of the table associated with the record type</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.Table">
<summary>
Gets or sets the table associated with the record type.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute">
<summary>
Apply to a property on a subclass of QRecord to indicate
the name of the column the property is to be associated with.
</summary>
<remarks>
If this attribute is not used on a property, the default
column name will be the same as the property name.
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.#ctor(System.String)">
<summary>
Creates a new DatabaseColumnAttribute which maps a
record property to a column.
</summary>
<param name="column">name of the column associated with the property</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.Column">
<summary>
Gets or sets the column associated with the record property.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Queryable">
<summary>
Allows any Database instance to be converted into a queryable database.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.Queryable.AsQueryable(Microsoft.Deployment.WindowsInstaller.Database)">
<summary>
Converts any Database instance into a queryable database.
</summary>
<param name="db"></param>
<returns>Queryable database instance that operates on the same
MSI handle.</returns>
<remarks>
This extension method is meant for convenient on-the-fly conversion.
If the existing database instance already happens to be a QDatabase,
then it is returned unchanged. Otherwise since the new database
carries the same MSI handle, only one of the instances needs to be
closed, not both.
</remarks>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase">
<summary>
Queryable MSI database - extends the base Database class with
LINQ query functionality along with predefined entity types
for common tables.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String)">
<summary>
Opens an existing database in read-only mode.
</summary>
<param name="filePath">Path to the database file.</param>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
Because this constructor initiates database access, it cannot be used with a
running installation.
<para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,System.String)">
<summary>
Opens an existing database with another database as output.
</summary>
<param name="filePath">Path to the database to be read.</param>
<param name="outputPath">Open mode for the database</param>
<returns>Database object representing the created or opened database</returns>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
When a database is opened as the output of another database, the summary information stream
of the output database is actually a read-only mirror of the original database and thus cannot
be changed. Additionally, it is not persisted with the database. To create or modify the
summary information for the output database it must be closed and re-opened.
<para>The returned Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
<summary>
Opens an existing database or creates a new one.
</summary>
<param name="filePath">Path to the database file. If an empty string
is supplied, a temporary database is created that is not persisted.</param>
<param name="mode">Open mode for the database</param>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
To make and save changes to a database first open the database in transaction,
create or, or direct mode. After making the changes, always call the Commit method
before closing the database handle. The Commit method flushes all buffers.
<para>Always call the Commit method on a database that has been opened in direct
mode before closing the database. Failure to do this may corrupt the database.</para>
<para>Because this constructor initiates database access, it cannot be used with a
running installation.</para>
<para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.IntPtr,System.Boolean,System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
<summary>
Creates a new database from an MSI handle.
</summary>
<param name="handle">Native MSI database handle.</param>
<param name="ownsHandle">True if the handle should be closed
when the database object is disposed</param>
<param name="filePath">Path of the database file, if known</param>
<param name="openMode">Mode the handle was originally opened in</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Log">
<summary>
Gets or sets a log where all MSI SQL queries are written.
</summary>
<remarks>
The log can be useful for debugging, or simply to watch the LINQ magic in action.
</remarks>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Item(System.String)">
<summary>
Gets a queryable table from the datbaase.
</summary>
<param name="table">name of the table</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Components">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CreateFolders">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CustomActions">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Directories">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.DuplicateFiles">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Features">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FeatureComponents">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Files">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FileHashes">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallExecuteSequences">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallUISequences">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.LaunchConditions">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Medias">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Properties">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Registries">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.RemoveFiles">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord">
<summary>
Generic record entity for queryable databases,
and base for strongly-typed entity subclasses.
</summary>
<remarks>
Several predefined specialized subclasses are provided for common
standard tables. Subclasses for additional standard tables
or custom tables are not necessary, but they are easy to create
and make the coding experience much nicer.
<para>When creating subclasses, the following attributes may be
useful: <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute"/>,
<see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute"/></para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.#ctor">
<summary>
Do not call. Use QTable.NewRecord() instead.
</summary>
<remarks>
Subclasses must also provide a public parameterless constructor.
<para>QRecord constructors are only public due to implementation
reasons (to satisfy the new() constraint on the QTable generic
class). They are not intended to be called by user code other than
a subclass constructor. If the constructor is invoked directly,
the record instance will not be properly initialized (associated
with a database table) and calls to methods on the instance
will throw a NullReferenceException.</para>
</remarks>
<seealso cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.FieldCount">
<summary>
Gets the number of fields in the record.
</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.String)">
<summary>
Gets or sets a record field.
</summary>
<param name="field">column name of the field</param>
<remarks>
Setting a field value will automatically update the database.
</remarks>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.Int32)">
<summary>
Gets or sets a record field.
</summary>
<param name="index">zero-based column index of the field</param>
<remarks>
Setting a field value will automatically update the database.
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.I(System.Int32)">
<summary>
Used by subclasses to get a field as an integer.
</summary>
<param name="index">zero-based column index of the field</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.NI(System.Int32)">
<summary>
Used by subclasses to get a field as a nullable integer.
</summary>
<param name="index">zero-based column index of the field</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ToString">
<summary>
Dumps all record fields to a string.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
<summary>
Update multiple fields in the record (and the database).
</summary>
<param name="fields">column names of fields to update</param>
<param name="values">new values for each field being updated</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.Int32},System.Collections.Generic.IList{System.String})">
<summary>
Update multiple fields in the record (and the database).
</summary>
<param name="indexes">column indexes of fields to update</param>
<param name="values">new values for each field being updated</param>
<remarks>
The record (primary keys) must already exist in the table.
<para>Updating primary key fields is not yet implemented; use Delete()
and Insert() instead.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert">
<summary>
Inserts the record in the database.
</summary>
<remarks>
The record (primary keys) may not already exist in the table.
<para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new
record. Prmary keys and all required fields
must be filled in before insertion.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert(System.Boolean)">
<summary>
Inserts the record into the table.
</summary>
<param name="temporary">true if the record is temporarily
inserted, to be visible only as long as the database is open</param>
<remarks>
The record (primary keys) may not already exist in the table.
<para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new
record. Prmary keys and all required fields
must be filled in before insertion.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Delete">
<summary>
Deletes the record from the table if it exists.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Refresh">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Assign">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Merge">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Validate">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateNew">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateFields">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateDelete">
<summary>
Not yet implemented.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1">
<summary>
Represents one table in a LINQ-queryable Database.
</summary>
<typeparam name="TRecord">type that represents one record in the table</typeparam>
<remarks>
This class is the primary gateway to all LINQ to MSI query functionality.
<para>The TRecord generic parameter may be the general <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord" />
class, or a specialized subclass of QRecord.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.InferTableName">
<summary>
Infers the name of the table this instance will be
associated with.
</summary>
<returns>table name</returns>
<remarks>
The table name is retrieved from a DatabaseTableAttribute
on the record type if it exists; otherwise the name is
derived from the name of the record type itself.
(An optional underscore suffix on the record type name is dropped.)
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase)">
<summary>
Creates a new QTable, inferring the table name
from the name of the record type parameter.
</summary>
<param name="db">database that contains the table</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase,System.String)">
<summary>
Creates a new QTable with an explicit table name.
</summary>
<param name="db">database that contains the table</param>
<param name="table">name of the table</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.TableInfo">
<summary>
Gets schema information about the table.
</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.Database">
<summary>
Gets the database this table is associated with.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.GetEnumerator">
<summary>
Enumerates over all records in the table.
</summary>
<returns></returns>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord">
<summary>
Creates a new record that can be inserted into this table.
</summary>
<returns>a record with all fields initialized to null</returns>
<remarks>
Primary keys and required fields must be filled in with
non-null values before the record can be inserted.
<para>The record is tied to this table in this database;
it cannot be inserted into another table or database.</para>
</remarks>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Query`1">
<summary>
Implements the LINQ to MSI query functionality.
</summary>
<typeparam name="T">the result type of the current query --
either some kind of QRecord, or some projection of record data</typeparam>
</member>
<member name="T:Microsoft.Tools.WindowsInstallerXml.WixDistribution">
<summary>
Distribution specific strings.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.NewsUrl">
<summary>
News URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.ShortProduct">
<summary>
Short product name for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.SupportUrl">
<summary>
Support URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.TelemetryUrlFormat">
<summary>
Telemetry URL format for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.VSExtensionsLandingUrl">
<summary>
VS Extensions Landing page Url for the distribution.
</summary>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Deployment.WindowsInstaller.Linq</name>
</assembly>
<members>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute">
<summary>
Apply to a subclass of QRecord to indicate the name of
the table the record type is to be used with.
</summary>
<remarks>
If this attribute is not used on a record type, the default
table name will be derived from the record type name. (An
optional underscore suffix is stripped.)
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.#ctor(System.String)">
<summary>
Creates a new DatabaseTableAttribute for the specified table.
</summary>
<param name="table">name of the table associated with the record type</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.Table">
<summary>
Gets or sets the table associated with the record type.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute">
<summary>
Apply to a property on a subclass of QRecord to indicate
the name of the column the property is to be associated with.
</summary>
<remarks>
If this attribute is not used on a property, the default
column name will be the same as the property name.
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.#ctor(System.String)">
<summary>
Creates a new DatabaseColumnAttribute which maps a
record property to a column.
</summary>
<param name="column">name of the column associated with the property</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.Column">
<summary>
Gets or sets the column associated with the record property.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Queryable">
<summary>
Allows any Database instance to be converted into a queryable database.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.Queryable.AsQueryable(Microsoft.Deployment.WindowsInstaller.Database)">
<summary>
Converts any Database instance into a queryable database.
</summary>
<param name="db"></param>
<returns>Queryable database instance that operates on the same
MSI handle.</returns>
<remarks>
This extension method is meant for convenient on-the-fly conversion.
If the existing database instance already happens to be a QDatabase,
then it is returned unchanged. Otherwise since the new database
carries the same MSI handle, only one of the instances needs to be
closed, not both.
</remarks>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase">
<summary>
Queryable MSI database - extends the base Database class with
LINQ query functionality along with predefined entity types
for common tables.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String)">
<summary>
Opens an existing database in read-only mode.
</summary>
<param name="filePath">Path to the database file.</param>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
Because this constructor initiates database access, it cannot be used with a
running installation.
<para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,System.String)">
<summary>
Opens an existing database with another database as output.
</summary>
<param name="filePath">Path to the database to be read.</param>
<param name="outputPath">Open mode for the database</param>
<returns>Database object representing the created or opened database</returns>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
When a database is opened as the output of another database, the summary information stream
of the output database is actually a read-only mirror of the original database and thus cannot
be changed. Additionally, it is not persisted with the database. To create or modify the
summary information for the output database it must be closed and re-opened.
<para>The returned Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
<summary>
Opens an existing database or creates a new one.
</summary>
<param name="filePath">Path to the database file. If an empty string
is supplied, a temporary database is created that is not persisted.</param>
<param name="mode">Open mode for the database</param>
<exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
<remarks>
To make and save changes to a database first open the database in transaction,
create or, or direct mode. After making the changes, always call the Commit method
before closing the database handle. The Commit method flushes all buffers.
<para>Always call the Commit method on a database that has been opened in direct
mode before closing the database. Failure to do this may corrupt the database.</para>
<para>Because this constructor initiates database access, it cannot be used with a
running installation.</para>
<para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
The finalizer will close the handle if it is still open, however due to the nondeterministic
nature of finalization it is best that the handle be closed manually as soon as it is no
longer needed, as leaving lots of unused handles open can degrade performance.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.IntPtr,System.Boolean,System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
<summary>
Creates a new database from an MSI handle.
</summary>
<param name="handle">Native MSI database handle.</param>
<param name="ownsHandle">True if the handle should be closed
when the database object is disposed</param>
<param name="filePath">Path of the database file, if known</param>
<param name="openMode">Mode the handle was originally opened in</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Log">
<summary>
Gets or sets a log where all MSI SQL queries are written.
</summary>
<remarks>
The log can be useful for debugging, or simply to watch the LINQ magic in action.
</remarks>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Item(System.String)">
<summary>
Gets a queryable table from the datbaase.
</summary>
<param name="table">name of the table</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Components">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CreateFolders">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CustomActions">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Directories">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.DuplicateFiles">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Features">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FeatureComponents">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Files">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FileHashes">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallExecuteSequences">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallUISequences">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.LaunchConditions">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Medias">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Properties">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Registries">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.RemoveFiles">
<summary>Queryable standard table with predefined specialized record type.</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord">
<summary>
Generic record entity for queryable databases,
and base for strongly-typed entity subclasses.
</summary>
<remarks>
Several predefined specialized subclasses are provided for common
standard tables. Subclasses for additional standard tables
or custom tables are not necessary, but they are easy to create
and make the coding experience much nicer.
<para>When creating subclasses, the following attributes may be
useful: <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute"/>,
<see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute"/></para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.#ctor">
<summary>
Do not call. Use QTable.NewRecord() instead.
</summary>
<remarks>
Subclasses must also provide a public parameterless constructor.
<para>QRecord constructors are only public due to implementation
reasons (to satisfy the new() constraint on the QTable generic
class). They are not intended to be called by user code other than
a subclass constructor. If the constructor is invoked directly,
the record instance will not be properly initialized (associated
with a database table) and calls to methods on the instance
will throw a NullReferenceException.</para>
</remarks>
<seealso cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.FieldCount">
<summary>
Gets the number of fields in the record.
</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.String)">
<summary>
Gets or sets a record field.
</summary>
<param name="field">column name of the field</param>
<remarks>
Setting a field value will automatically update the database.
</remarks>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.Int32)">
<summary>
Gets or sets a record field.
</summary>
<param name="index">zero-based column index of the field</param>
<remarks>
Setting a field value will automatically update the database.
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.I(System.Int32)">
<summary>
Used by subclasses to get a field as an integer.
</summary>
<param name="index">zero-based column index of the field</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.NI(System.Int32)">
<summary>
Used by subclasses to get a field as a nullable integer.
</summary>
<param name="index">zero-based column index of the field</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ToString">
<summary>
Dumps all record fields to a string.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
<summary>
Update multiple fields in the record (and the database).
</summary>
<param name="fields">column names of fields to update</param>
<param name="values">new values for each field being updated</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.Int32},System.Collections.Generic.IList{System.String})">
<summary>
Update multiple fields in the record (and the database).
</summary>
<param name="indexes">column indexes of fields to update</param>
<param name="values">new values for each field being updated</param>
<remarks>
The record (primary keys) must already exist in the table.
<para>Updating primary key fields is not yet implemented; use Delete()
and Insert() instead.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert">
<summary>
Inserts the record in the database.
</summary>
<remarks>
The record (primary keys) may not already exist in the table.
<para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new
record. Prmary keys and all required fields
must be filled in before insertion.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert(System.Boolean)">
<summary>
Inserts the record into the table.
</summary>
<param name="temporary">true if the record is temporarily
inserted, to be visible only as long as the database is open</param>
<remarks>
The record (primary keys) may not already exist in the table.
<para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new
record. Prmary keys and all required fields
must be filled in before insertion.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Delete">
<summary>
Deletes the record from the table if it exists.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Refresh">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Assign">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Merge">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Validate">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateNew">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateFields">
<summary>
Not yet implemented.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateDelete">
<summary>
Not yet implemented.
</summary>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1">
<summary>
Represents one table in a LINQ-queryable Database.
</summary>
<typeparam name="TRecord">type that represents one record in the table</typeparam>
<remarks>
This class is the primary gateway to all LINQ to MSI query functionality.
<para>The TRecord generic parameter may be the general <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord" />
class, or a specialized subclass of QRecord.</para>
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.InferTableName">
<summary>
Infers the name of the table this instance will be
associated with.
</summary>
<returns>table name</returns>
<remarks>
The table name is retrieved from a DatabaseTableAttribute
on the record type if it exists; otherwise the name is
derived from the name of the record type itself.
(An optional underscore suffix on the record type name is dropped.)
</remarks>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase)">
<summary>
Creates a new QTable, inferring the table name
from the name of the record type parameter.
</summary>
<param name="db">database that contains the table</param>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase,System.String)">
<summary>
Creates a new QTable with an explicit table name.
</summary>
<param name="db">database that contains the table</param>
<param name="table">name of the table</param>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.TableInfo">
<summary>
Gets schema information about the table.
</summary>
</member>
<member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.Database">
<summary>
Gets the database this table is associated with.
</summary>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.GetEnumerator">
<summary>
Enumerates over all records in the table.
</summary>
<returns></returns>
</member>
<member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord">
<summary>
Creates a new record that can be inserted into this table.
</summary>
<returns>a record with all fields initialized to null</returns>
<remarks>
Primary keys and required fields must be filled in with
non-null values before the record can be inserted.
<para>The record is tied to this table in this database;
it cannot be inserted into another table or database.</para>
</remarks>
</member>
<member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Query`1">
<summary>
Implements the LINQ to MSI query functionality.
</summary>
<typeparam name="T">the result type of the current query --
either some kind of QRecord, or some projection of record data</typeparam>
</member>
<member name="T:Microsoft.Tools.WindowsInstallerXml.WixDistribution">
<summary>
Distribution specific strings.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.NewsUrl">
<summary>
News URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.ShortProduct">
<summary>
Short product name for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.SupportUrl">
<summary>
Support URL for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.TelemetryUrlFormat">
<summary>
Telemetry URL format for the distribution.
</summary>
</member>
<member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.VSExtensionsLandingUrl">
<summary>
VS Extensions Landing page Url for the distribution.
</summary>
</member>
</members>
</doc>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+29 -29
View File
@@ -1,29 +1,29 @@
#pragma once
// 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.
#include <windows.h>
#include "IBootstrapperEngine.h"
interface IBootstrapperBAFunction
{
STDMETHOD(OnDetect)() = 0;
STDMETHOD(OnDetectComplete)() = 0;
STDMETHOD(OnPlan)() = 0;
STDMETHOD(OnPlanComplete)() = 0;
};
#ifdef __cplusplus
extern "C" {
#endif
typedef HRESULT (WINAPI *PFN_BOOTSTRAPPER_BA_FUNCTION_CREATE)(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out IBootstrapperBAFunction** ppBAFunction
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <windows.h>
#include "IBootstrapperEngine.h"
interface IBootstrapperBAFunction
{
STDMETHOD(OnDetect)() = 0;
STDMETHOD(OnDetectComplete)() = 0;
STDMETHOD(OnPlan)() = 0;
STDMETHOD(OnPlanComplete)() = 0;
};
#ifdef __cplusplus
extern "C" {
#endif
typedef HRESULT (WINAPI *PFN_BOOTSTRAPPER_BA_FUNCTION_CREATE)(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out IBootstrapperBAFunction** ppBAFunction
);
#ifdef __cplusplus
}
#endif
+227 -227
View File
@@ -1,227 +1,227 @@
#pragma once
// 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.
#define IDERROR -1
#define IDNOACTION 0
#ifndef FACILITY_WIX
#define FACILITY_WIX 500
#endif
static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000);
#define IDDOWNLOAD 101 // Only valid as a return code from OnResolveSource() to instruct the engine to use the download source.
#define IDRESTART 102
#define IDSUSPEND 103
#define IDRELOAD_BOOTSTRAPPER 104
// Note that ordering of the enumeration values is important.
// Some code paths use < or > comparisions and simply reording values will break those comparisons.
enum BOOTSTRAPPER_ACTION
{
BOOTSTRAPPER_ACTION_UNKNOWN,
BOOTSTRAPPER_ACTION_HELP,
BOOTSTRAPPER_ACTION_LAYOUT,
BOOTSTRAPPER_ACTION_UNINSTALL,
BOOTSTRAPPER_ACTION_CACHE,
BOOTSTRAPPER_ACTION_INSTALL,
BOOTSTRAPPER_ACTION_MODIFY,
BOOTSTRAPPER_ACTION_REPAIR,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED,
};
enum BOOTSTRAPPER_ACTION_STATE
{
BOOTSTRAPPER_ACTION_STATE_NONE,
BOOTSTRAPPER_ACTION_STATE_UNINSTALL,
BOOTSTRAPPER_ACTION_STATE_INSTALL,
BOOTSTRAPPER_ACTION_STATE_ADMIN_INSTALL,
BOOTSTRAPPER_ACTION_STATE_MODIFY,
BOOTSTRAPPER_ACTION_STATE_REPAIR,
BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_MAJOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_PATCH,
};
enum BOOTSTRAPPER_PACKAGE_STATE
{
BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN,
BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE,
BOOTSTRAPPER_PACKAGE_STATE_ABSENT,
BOOTSTRAPPER_PACKAGE_STATE_CACHED,
BOOTSTRAPPER_PACKAGE_STATE_PRESENT,
BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED,
};
enum BOOTSTRAPPER_REQUEST_STATE
{
BOOTSTRAPPER_REQUEST_STATE_NONE,
BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_CACHE,
BOOTSTRAPPER_REQUEST_STATE_PRESENT,
BOOTSTRAPPER_REQUEST_STATE_REPAIR,
};
enum BOOTSTRAPPER_FEATURE_STATE
{
BOOTSTRAPPER_FEATURE_STATE_UNKNOWN,
BOOTSTRAPPER_FEATURE_STATE_ABSENT,
BOOTSTRAPPER_FEATURE_STATE_ADVERTISED,
BOOTSTRAPPER_FEATURE_STATE_LOCAL,
BOOTSTRAPPER_FEATURE_STATE_SOURCE,
};
enum BOOTSTRAPPER_FEATURE_ACTION
{
BOOTSTRAPPER_FEATURE_ACTION_NONE,
BOOTSTRAPPER_FEATURE_ACTION_ADDLOCAL,
BOOTSTRAPPER_FEATURE_ACTION_ADDSOURCE,
BOOTSTRAPPER_FEATURE_ACTION_ADDDEFAULT,
BOOTSTRAPPER_FEATURE_ACTION_REINSTALL,
BOOTSTRAPPER_FEATURE_ACTION_ADVERTISE,
BOOTSTRAPPER_FEATURE_ACTION_REMOVE,
};
enum BOOTSTRAPPER_LOG_LEVEL
{
BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on
BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code
BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
};
enum BOOTSTRAPPER_UPDATE_HASH_TYPE
{
BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE,
BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA1,
};
DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB")
{
STDMETHOD(GetPackageCount)(
__out DWORD* pcPackages
) = 0;
STDMETHOD(GetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__out LONGLONG* pllValue
) = 0;
STDMETHOD(GetVariableString)(
__in_z LPCWSTR wzVariable,
__out_ecount_opt(*pcchValue) LPWSTR wzValue,
__inout DWORD* pcchValue
) = 0;
STDMETHOD(GetVariableVersion)(
__in_z LPCWSTR wzVariable,
__out DWORD64* pqwValue
) = 0;
STDMETHOD(FormatString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EscapeString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EvaluateCondition)(
__in_z LPCWSTR wzCondition,
__out BOOL* pf
) = 0;
STDMETHOD(Log)(
__in BOOTSTRAPPER_LOG_LEVEL level,
__in_z LPCWSTR wzMessage
) = 0;
STDMETHOD(SendEmbeddedError)(
__in DWORD dwErrorCode,
__in_z_opt LPCWSTR wzMessage,
__in DWORD dwUIHint,
__out int* pnResult
) = 0;
STDMETHOD(SendEmbeddedProgress)(
__in DWORD dwProgressPercentage,
__in DWORD dwOverallProgressPercentage,
__out int* pnResult
) = 0;
STDMETHOD(SetUpdate)(
__in_z_opt LPCWSTR wzLocalSource,
__in_z_opt LPCWSTR wzDownloadSource,
__in DWORD64 qwSize,
__in BOOTSTRAPPER_UPDATE_HASH_TYPE hashType,
__in_bcount_opt(cbHash) BYTE* rgbHash,
__in DWORD cbHash
) = 0;
STDMETHOD(SetLocalSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzPath
) = 0;
STDMETHOD(SetDownloadSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzUrl,
__in_z_opt LPCWSTR wzUser,
__in_z_opt LPCWSTR wzPassword
) = 0;
STDMETHOD(SetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__in LONGLONG llValue
) = 0;
STDMETHOD(SetVariableString)(
__in_z LPCWSTR wzVariable,
__in_z_opt LPCWSTR wzValue
) = 0;
STDMETHOD(SetVariableVersion)(
__in_z LPCWSTR wzVariable,
__in DWORD64 qwValue
) = 0;
STDMETHOD(CloseSplashScreen)() = 0;
STDMETHOD(Detect)(
__in_opt HWND hwndParent = NULL
) = 0;
STDMETHOD(Plan)(
__in BOOTSTRAPPER_ACTION action
) = 0;
STDMETHOD(Elevate)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Apply)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Quit)(
__in DWORD dwExitCode
) = 0;
STDMETHOD(LaunchApprovedExe)(
__in_opt HWND hwndParent,
__in_z LPCWSTR wzApprovedExeForElevationId,
__in_z_opt LPCWSTR wzArguments,
__in DWORD dwWaitForInputIdleTimeout
) = 0;
};
#pragma once
// 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.
#define IDERROR -1
#define IDNOACTION 0
#ifndef FACILITY_WIX
#define FACILITY_WIX 500
#endif
static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000);
#define IDDOWNLOAD 101 // Only valid as a return code from OnResolveSource() to instruct the engine to use the download source.
#define IDRESTART 102
#define IDSUSPEND 103
#define IDRELOAD_BOOTSTRAPPER 104
// Note that ordering of the enumeration values is important.
// Some code paths use < or > comparisions and simply reording values will break those comparisons.
enum BOOTSTRAPPER_ACTION
{
BOOTSTRAPPER_ACTION_UNKNOWN,
BOOTSTRAPPER_ACTION_HELP,
BOOTSTRAPPER_ACTION_LAYOUT,
BOOTSTRAPPER_ACTION_UNINSTALL,
BOOTSTRAPPER_ACTION_CACHE,
BOOTSTRAPPER_ACTION_INSTALL,
BOOTSTRAPPER_ACTION_MODIFY,
BOOTSTRAPPER_ACTION_REPAIR,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED,
};
enum BOOTSTRAPPER_ACTION_STATE
{
BOOTSTRAPPER_ACTION_STATE_NONE,
BOOTSTRAPPER_ACTION_STATE_UNINSTALL,
BOOTSTRAPPER_ACTION_STATE_INSTALL,
BOOTSTRAPPER_ACTION_STATE_ADMIN_INSTALL,
BOOTSTRAPPER_ACTION_STATE_MODIFY,
BOOTSTRAPPER_ACTION_STATE_REPAIR,
BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_MAJOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_PATCH,
};
enum BOOTSTRAPPER_PACKAGE_STATE
{
BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN,
BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE,
BOOTSTRAPPER_PACKAGE_STATE_ABSENT,
BOOTSTRAPPER_PACKAGE_STATE_CACHED,
BOOTSTRAPPER_PACKAGE_STATE_PRESENT,
BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED,
};
enum BOOTSTRAPPER_REQUEST_STATE
{
BOOTSTRAPPER_REQUEST_STATE_NONE,
BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_CACHE,
BOOTSTRAPPER_REQUEST_STATE_PRESENT,
BOOTSTRAPPER_REQUEST_STATE_REPAIR,
};
enum BOOTSTRAPPER_FEATURE_STATE
{
BOOTSTRAPPER_FEATURE_STATE_UNKNOWN,
BOOTSTRAPPER_FEATURE_STATE_ABSENT,
BOOTSTRAPPER_FEATURE_STATE_ADVERTISED,
BOOTSTRAPPER_FEATURE_STATE_LOCAL,
BOOTSTRAPPER_FEATURE_STATE_SOURCE,
};
enum BOOTSTRAPPER_FEATURE_ACTION
{
BOOTSTRAPPER_FEATURE_ACTION_NONE,
BOOTSTRAPPER_FEATURE_ACTION_ADDLOCAL,
BOOTSTRAPPER_FEATURE_ACTION_ADDSOURCE,
BOOTSTRAPPER_FEATURE_ACTION_ADDDEFAULT,
BOOTSTRAPPER_FEATURE_ACTION_REINSTALL,
BOOTSTRAPPER_FEATURE_ACTION_ADVERTISE,
BOOTSTRAPPER_FEATURE_ACTION_REMOVE,
};
enum BOOTSTRAPPER_LOG_LEVEL
{
BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on
BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code
BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
};
enum BOOTSTRAPPER_UPDATE_HASH_TYPE
{
BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE,
BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA1,
};
DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB")
{
STDMETHOD(GetPackageCount)(
__out DWORD* pcPackages
) = 0;
STDMETHOD(GetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__out LONGLONG* pllValue
) = 0;
STDMETHOD(GetVariableString)(
__in_z LPCWSTR wzVariable,
__out_ecount_opt(*pcchValue) LPWSTR wzValue,
__inout DWORD* pcchValue
) = 0;
STDMETHOD(GetVariableVersion)(
__in_z LPCWSTR wzVariable,
__out DWORD64* pqwValue
) = 0;
STDMETHOD(FormatString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EscapeString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EvaluateCondition)(
__in_z LPCWSTR wzCondition,
__out BOOL* pf
) = 0;
STDMETHOD(Log)(
__in BOOTSTRAPPER_LOG_LEVEL level,
__in_z LPCWSTR wzMessage
) = 0;
STDMETHOD(SendEmbeddedError)(
__in DWORD dwErrorCode,
__in_z_opt LPCWSTR wzMessage,
__in DWORD dwUIHint,
__out int* pnResult
) = 0;
STDMETHOD(SendEmbeddedProgress)(
__in DWORD dwProgressPercentage,
__in DWORD dwOverallProgressPercentage,
__out int* pnResult
) = 0;
STDMETHOD(SetUpdate)(
__in_z_opt LPCWSTR wzLocalSource,
__in_z_opt LPCWSTR wzDownloadSource,
__in DWORD64 qwSize,
__in BOOTSTRAPPER_UPDATE_HASH_TYPE hashType,
__in_bcount_opt(cbHash) BYTE* rgbHash,
__in DWORD cbHash
) = 0;
STDMETHOD(SetLocalSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzPath
) = 0;
STDMETHOD(SetDownloadSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzUrl,
__in_z_opt LPCWSTR wzUser,
__in_z_opt LPCWSTR wzPassword
) = 0;
STDMETHOD(SetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__in LONGLONG llValue
) = 0;
STDMETHOD(SetVariableString)(
__in_z LPCWSTR wzVariable,
__in_z_opt LPCWSTR wzValue
) = 0;
STDMETHOD(SetVariableVersion)(
__in_z LPCWSTR wzVariable,
__in DWORD64 qwValue
) = 0;
STDMETHOD(CloseSplashScreen)() = 0;
STDMETHOD(Detect)(
__in_opt HWND hwndParent = NULL
) = 0;
STDMETHOD(Plan)(
__in BOOTSTRAPPER_ACTION action
) = 0;
STDMETHOD(Elevate)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Apply)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Quit)(
__in DWORD dwExitCode
) = 0;
STDMETHOD(LaunchApprovedExe)(
__in_opt HWND hwndParent,
__in_z LPCWSTR wzApprovedExeForElevationId,
__in_z_opt LPCWSTR wzArguments,
__in DWORD dwWaitForInputIdleTimeout
) = 0;
};
+153 -153
View File
@@ -1,153 +1,153 @@
#pragma once
// 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.
#include <aclapi.h>
#include <sddl.h>
#define ReleaseSid(x) if (x) { AclFreeSid(x); }
#define ReleaseNullSid(x) if (x) { AclFreeSid(x); x = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
// structs
struct ACL_ACCESS
{
BOOL fDenyAccess;
DWORD dwAccessMask;
// TODO: consider using a union
LPCWSTR pwzAccountName; // NOTE: the last three items in this structure are ignored if this is not NULL
SID_IDENTIFIER_AUTHORITY sia; // used if pwzAccountName is NULL
BYTE nSubAuthorityCount;
DWORD nSubAuthority[8];
};
struct ACL_ACE
{
DWORD dwFlags;
DWORD dwMask;
PSID psid;
};
// functions
HRESULT DAPI AclCheckAccess(
__in HANDLE hToken,
__in ACL_ACCESS* paa
);
HRESULT DAPI AclCheckAdministratorAccess(
__in HANDLE hToken
);
HRESULT DAPI AclCheckLocalSystemAccess(
__in HANDLE hToken
);
HRESULT DAPI AclGetWellKnownSid(
__in WELL_KNOWN_SID_TYPE wkst,
__deref_out PSID* ppsid
);
HRESULT DAPI AclGetAccountSid(
__in_opt LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out PSID* ppsid
);
HRESULT DAPI AclGetAccountSidString(
__in_z LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out_z LPWSTR* ppwzSid
);
HRESULT DAPI AclCreateDacl(
__in_ecount(cDeny) ACL_ACE rgaaDeny[],
__in DWORD cDeny,
__in_ecount(cAllow) ACL_ACE rgaaAllow[],
__in DWORD cAllow,
__deref_out ACL** ppAcl
);
HRESULT DAPI AclAddToDacl(
__in ACL* pAcl,
__in_ecount_opt(cDeny) const ACL_ACE rgaaDeny[],
__in DWORD cDeny,
__in_ecount_opt(cAllow) const ACL_ACE rgaaAllow[],
__in DWORD cAllow,
__deref_out ACL** ppAclNew
);
HRESULT DAPI AclMergeDacls(
__in const ACL* pAcl1,
__in const ACL* pAcl2,
__deref_out ACL** ppAclNew
);
HRESULT DAPI AclCreateDaclOld(
__in_ecount(cAclAccesses) ACL_ACCESS* paa,
__in DWORD cAclAccesses,
__deref_out ACL** ppAcl
);
HRESULT DAPI AclCreateSecurityDescriptor(
__in_ecount(cAclAccesses) ACL_ACCESS* paa,
__in DWORD cAclAccesses,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclCreateSecurityDescriptorFromDacl(
__in ACL* pACL,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT __cdecl AclCreateSecurityDescriptorFromString(
__deref_out SECURITY_DESCRIPTOR** ppsd,
__in_z __format_string LPCWSTR wzSddlFormat,
...
);
HRESULT DAPI AclDuplicateSecurityDescriptor(
__in SECURITY_DESCRIPTOR* psd,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclGetSecurityDescriptor(
__in_z LPCWSTR wzObject,
__in SE_OBJECT_TYPE sot,
__in SECURITY_INFORMATION securityInformation,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclSetSecurityWithRetry(
__in_z LPCWSTR wzObject,
__in SE_OBJECT_TYPE sot,
__in SECURITY_INFORMATION securityInformation,
__in_opt PSID psidOwner,
__in_opt PSID psidGroup,
__in_opt PACL pDacl,
__in_opt PACL pSacl,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI AclFreeSid(
__in PSID psid
);
HRESULT DAPI AclFreeDacl(
__in ACL* pACL
);
HRESULT DAPI AclFreeSecurityDescriptor(
__in SECURITY_DESCRIPTOR* psd
);
HRESULT DAPI AclAddAdminToSecurityDescriptor(
__in SECURITY_DESCRIPTOR* pSecurity,
__deref_out SECURITY_DESCRIPTOR** ppSecurityNew
);
// Following code in acl2util.cpp due to dependency on crypt32.dll.
HRESULT DAPI AclCalculateServiceSidString(
__in LPCWSTR wzServiceName,
__in int cchServiceName,
__deref_out_z LPWSTR* psczSid
);
HRESULT DAPI AclGetAccountSidStringEx(
__in_z LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out_z LPWSTR* psczSid
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <aclapi.h>
#include <sddl.h>
#define ReleaseSid(x) if (x) { AclFreeSid(x); }
#define ReleaseNullSid(x) if (x) { AclFreeSid(x); x = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
// structs
struct ACL_ACCESS
{
BOOL fDenyAccess;
DWORD dwAccessMask;
// TODO: consider using a union
LPCWSTR pwzAccountName; // NOTE: the last three items in this structure are ignored if this is not NULL
SID_IDENTIFIER_AUTHORITY sia; // used if pwzAccountName is NULL
BYTE nSubAuthorityCount;
DWORD nSubAuthority[8];
};
struct ACL_ACE
{
DWORD dwFlags;
DWORD dwMask;
PSID psid;
};
// functions
HRESULT DAPI AclCheckAccess(
__in HANDLE hToken,
__in ACL_ACCESS* paa
);
HRESULT DAPI AclCheckAdministratorAccess(
__in HANDLE hToken
);
HRESULT DAPI AclCheckLocalSystemAccess(
__in HANDLE hToken
);
HRESULT DAPI AclGetWellKnownSid(
__in WELL_KNOWN_SID_TYPE wkst,
__deref_out PSID* ppsid
);
HRESULT DAPI AclGetAccountSid(
__in_opt LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out PSID* ppsid
);
HRESULT DAPI AclGetAccountSidString(
__in_z LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out_z LPWSTR* ppwzSid
);
HRESULT DAPI AclCreateDacl(
__in_ecount(cDeny) ACL_ACE rgaaDeny[],
__in DWORD cDeny,
__in_ecount(cAllow) ACL_ACE rgaaAllow[],
__in DWORD cAllow,
__deref_out ACL** ppAcl
);
HRESULT DAPI AclAddToDacl(
__in ACL* pAcl,
__in_ecount_opt(cDeny) const ACL_ACE rgaaDeny[],
__in DWORD cDeny,
__in_ecount_opt(cAllow) const ACL_ACE rgaaAllow[],
__in DWORD cAllow,
__deref_out ACL** ppAclNew
);
HRESULT DAPI AclMergeDacls(
__in const ACL* pAcl1,
__in const ACL* pAcl2,
__deref_out ACL** ppAclNew
);
HRESULT DAPI AclCreateDaclOld(
__in_ecount(cAclAccesses) ACL_ACCESS* paa,
__in DWORD cAclAccesses,
__deref_out ACL** ppAcl
);
HRESULT DAPI AclCreateSecurityDescriptor(
__in_ecount(cAclAccesses) ACL_ACCESS* paa,
__in DWORD cAclAccesses,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclCreateSecurityDescriptorFromDacl(
__in ACL* pACL,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT __cdecl AclCreateSecurityDescriptorFromString(
__deref_out SECURITY_DESCRIPTOR** ppsd,
__in_z __format_string LPCWSTR wzSddlFormat,
...
);
HRESULT DAPI AclDuplicateSecurityDescriptor(
__in SECURITY_DESCRIPTOR* psd,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclGetSecurityDescriptor(
__in_z LPCWSTR wzObject,
__in SE_OBJECT_TYPE sot,
__in SECURITY_INFORMATION securityInformation,
__deref_out SECURITY_DESCRIPTOR** ppsd
);
HRESULT DAPI AclSetSecurityWithRetry(
__in_z LPCWSTR wzObject,
__in SE_OBJECT_TYPE sot,
__in SECURITY_INFORMATION securityInformation,
__in_opt PSID psidOwner,
__in_opt PSID psidGroup,
__in_opt PACL pDacl,
__in_opt PACL pSacl,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI AclFreeSid(
__in PSID psid
);
HRESULT DAPI AclFreeDacl(
__in ACL* pACL
);
HRESULT DAPI AclFreeSecurityDescriptor(
__in SECURITY_DESCRIPTOR* psd
);
HRESULT DAPI AclAddAdminToSecurityDescriptor(
__in SECURITY_DESCRIPTOR* pSecurity,
__deref_out SECURITY_DESCRIPTOR** ppSecurityNew
);
// Following code in acl2util.cpp due to dependency on crypt32.dll.
HRESULT DAPI AclCalculateServiceSidString(
__in LPCWSTR wzServiceName,
__in int cchServiceName,
__deref_out_z LPWSTR* psczSid
);
HRESULT DAPI AclGetAccountSidStringEx(
__in_z LPCWSTR wzSystem,
__in_z LPCWSTR wzAccount,
__deref_out_z LPWSTR* psczSid
);
#ifdef __cplusplus
}
#endif
+45 -45
View File
@@ -1,45 +1,45 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// functions
/********************************************************************
AppFreeCommandLineArgs - frees argv from AppParseCommandLine.
********************************************************************/
void DAPI AppFreeCommandLineArgs(
__in LPWSTR* argv
);
void DAPI AppInitialize(
__in_ecount(cSafelyLoadSystemDlls) LPCWSTR rgsczSafelyLoadSystemDlls[],
__in DWORD cSafelyLoadSystemDlls
);
/********************************************************************
AppInitializeUnsafe - initializes without the full standard safety
precautions for an application.
********************************************************************/
void DAPI AppInitializeUnsafe();
/********************************************************************
AppParseCommandLine - parses the command line using CommandLineToArgvW.
The caller must free the value of pArgv on success
by calling AppFreeCommandLineArgs.
********************************************************************/
DAPI_(HRESULT) AppParseCommandLine(
__in LPCWSTR wzCommandLine,
__in int* argc,
__in LPWSTR** pArgv
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// functions
/********************************************************************
AppFreeCommandLineArgs - frees argv from AppParseCommandLine.
********************************************************************/
void DAPI AppFreeCommandLineArgs(
__in LPWSTR* argv
);
void DAPI AppInitialize(
__in_ecount(cSafelyLoadSystemDlls) LPCWSTR rgsczSafelyLoadSystemDlls[],
__in DWORD cSafelyLoadSystemDlls
);
/********************************************************************
AppInitializeUnsafe - initializes without the full standard safety
precautions for an application.
********************************************************************/
void DAPI AppInitializeUnsafe();
/********************************************************************
AppParseCommandLine - parses the command line using CommandLineToArgvW.
The caller must free the value of pArgv on success
by calling AppFreeCommandLineArgs.
********************************************************************/
DAPI_(HRESULT) AppParseCommandLine(
__in LPCWSTR wzCommandLine,
__in int* argc,
__in LPWSTR** pArgv
);
#ifdef __cplusplus
}
#endif
+86 -86
View File
@@ -1,86 +1,86 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseApupChain(p) if (p) { ApupFreeChain(p); p = NULL; }
#define ReleaseNullApupChain(p) if (p) { ApupFreeChain(p); p = NULL; }
const LPCWSTR APPLICATION_SYNDICATION_NAMESPACE = L"http://appsyndication.org/2006/appsyn";
typedef enum APUP_HASH_ALGORITHM
{
APUP_HASH_ALGORITHM_UNKNOWN,
APUP_HASH_ALGORITHM_MD5,
APUP_HASH_ALGORITHM_SHA1,
APUP_HASH_ALGORITHM_SHA256,
} APUP_HASH_ALGORITHM;
struct APPLICATION_UPDATE_ENCLOSURE
{
LPWSTR wzUrl;
LPWSTR wzLocalName;
DWORD64 dw64Size;
BYTE* rgbDigest;
DWORD cbDigest;
APUP_HASH_ALGORITHM digestAlgorithm;
BOOL fInstaller;
};
struct APPLICATION_UPDATE_ENTRY
{
LPWSTR wzApplicationId;
LPWSTR wzApplicationType;
LPWSTR wzTitle;
LPWSTR wzSummary;
LPWSTR wzContentType;
LPWSTR wzContent;
LPWSTR wzUpgradeId;
BOOL fUpgradeExclusive;
DWORD64 dw64Version;
DWORD64 dw64UpgradeVersion;
DWORD64 dw64TotalSize;
DWORD cEnclosures;
APPLICATION_UPDATE_ENCLOSURE* rgEnclosures;
};
struct APPLICATION_UPDATE_CHAIN
{
LPWSTR wzDefaultApplicationId;
LPWSTR wzDefaultApplicationType;
DWORD cEntries;
APPLICATION_UPDATE_ENTRY* rgEntries;
};
HRESULT DAPI ApupAllocChainFromAtom(
__in ATOM_FEED* pFeed,
__out APPLICATION_UPDATE_CHAIN** ppChain
);
HRESULT DAPI ApupFilterChain(
__in APPLICATION_UPDATE_CHAIN* pChain,
__in DWORD64 dw64Version,
__out APPLICATION_UPDATE_CHAIN** ppFilteredChain
);
void DAPI ApupFreeChain(
__in APPLICATION_UPDATE_CHAIN* pChain
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseApupChain(p) if (p) { ApupFreeChain(p); p = NULL; }
#define ReleaseNullApupChain(p) if (p) { ApupFreeChain(p); p = NULL; }
const LPCWSTR APPLICATION_SYNDICATION_NAMESPACE = L"http://appsyndication.org/2006/appsyn";
typedef enum APUP_HASH_ALGORITHM
{
APUP_HASH_ALGORITHM_UNKNOWN,
APUP_HASH_ALGORITHM_MD5,
APUP_HASH_ALGORITHM_SHA1,
APUP_HASH_ALGORITHM_SHA256,
} APUP_HASH_ALGORITHM;
struct APPLICATION_UPDATE_ENCLOSURE
{
LPWSTR wzUrl;
LPWSTR wzLocalName;
DWORD64 dw64Size;
BYTE* rgbDigest;
DWORD cbDigest;
APUP_HASH_ALGORITHM digestAlgorithm;
BOOL fInstaller;
};
struct APPLICATION_UPDATE_ENTRY
{
LPWSTR wzApplicationId;
LPWSTR wzApplicationType;
LPWSTR wzTitle;
LPWSTR wzSummary;
LPWSTR wzContentType;
LPWSTR wzContent;
LPWSTR wzUpgradeId;
BOOL fUpgradeExclusive;
DWORD64 dw64Version;
DWORD64 dw64UpgradeVersion;
DWORD64 dw64TotalSize;
DWORD cEnclosures;
APPLICATION_UPDATE_ENCLOSURE* rgEnclosures;
};
struct APPLICATION_UPDATE_CHAIN
{
LPWSTR wzDefaultApplicationId;
LPWSTR wzDefaultApplicationType;
DWORD cEntries;
APPLICATION_UPDATE_ENTRY* rgEntries;
};
HRESULT DAPI ApupAllocChainFromAtom(
__in ATOM_FEED* pFeed,
__out APPLICATION_UPDATE_CHAIN** ppChain
);
HRESULT DAPI ApupFilterChain(
__in APPLICATION_UPDATE_CHAIN* pChain,
__in DWORD64 dw64Version,
__out APPLICATION_UPDATE_CHAIN** ppFilteredChain
);
void DAPI ApupFreeChain(
__in APPLICATION_UPDATE_CHAIN* pChain
);
#ifdef __cplusplus
}
#endif
+146 -146
View File
@@ -1,146 +1,146 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseAtomFeed(p) if (p) { AtomFreeFeed(p); }
#define ReleaseNullAtomFeed(p) if (p) { AtomFreeFeed(p); p = NULL; }
struct ATOM_UNKNOWN_ATTRIBUTE
{
LPWSTR wzNamespace;
LPWSTR wzAttribute;
LPWSTR wzValue;
ATOM_UNKNOWN_ATTRIBUTE* pNext;
};
struct ATOM_UNKNOWN_ELEMENT
{
LPWSTR wzNamespace;
LPWSTR wzElement;
LPWSTR wzValue;
ATOM_UNKNOWN_ATTRIBUTE* pAttributes;
ATOM_UNKNOWN_ELEMENT* pNext;
};
struct ATOM_LINK
{
LPWSTR wzRel;
LPWSTR wzTitle;
LPWSTR wzType;
LPWSTR wzUrl;
LPWSTR wzValue;
DWORD64 dw64Length;
ATOM_UNKNOWN_ATTRIBUTE* pUnknownAttributes;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_CONTENT
{
LPWSTR wzType;
LPWSTR wzUrl;
LPWSTR wzValue;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_AUTHOR
{
LPWSTR wzName;
LPWSTR wzEmail;
LPWSTR wzUrl;
};
struct ATOM_CATEGORY
{
LPWSTR wzLabel;
LPWSTR wzScheme;
LPWSTR wzTerm;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_ENTRY
{
LPWSTR wzId;
LPWSTR wzSummary;
LPWSTR wzTitle;
FILETIME ftPublished;
FILETIME ftUpdated;
ATOM_CONTENT* pContent;
DWORD cAuthors;
ATOM_AUTHOR* rgAuthors;
DWORD cCategories;
ATOM_CATEGORY* rgCategories;
DWORD cLinks;
ATOM_LINK* rgLinks;
IXMLDOMNode* pixn;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_FEED
{
LPWSTR wzGenerator;
LPWSTR wzIcon;
LPWSTR wzId;
LPWSTR wzLogo;
LPWSTR wzSubtitle;
LPWSTR wzTitle;
FILETIME ftUpdated;
DWORD cAuthors;
ATOM_AUTHOR* rgAuthors;
DWORD cCategories;
ATOM_CATEGORY* rgCategories;
DWORD cEntries;
ATOM_ENTRY* rgEntries;
DWORD cLinks;
ATOM_LINK* rgLinks;
IXMLDOMNode* pixn;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
HRESULT DAPI AtomInitialize(
);
void DAPI AtomUninitialize(
);
HRESULT DAPI AtomParseFromString(
__in_z LPCWSTR wzAtomString,
__out ATOM_FEED **ppFeed
);
HRESULT DAPI AtomParseFromFile(
__in_z LPCWSTR wzAtomFile,
__out ATOM_FEED **ppFeed
);
HRESULT DAPI AtomParseFromDocument(
__in IXMLDOMDocument* pixdDocument,
__out ATOM_FEED **ppFeed
);
void DAPI AtomFreeFeed(
__in_xcount(pFeed->cItems) ATOM_FEED *pFEED
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseAtomFeed(p) if (p) { AtomFreeFeed(p); }
#define ReleaseNullAtomFeed(p) if (p) { AtomFreeFeed(p); p = NULL; }
struct ATOM_UNKNOWN_ATTRIBUTE
{
LPWSTR wzNamespace;
LPWSTR wzAttribute;
LPWSTR wzValue;
ATOM_UNKNOWN_ATTRIBUTE* pNext;
};
struct ATOM_UNKNOWN_ELEMENT
{
LPWSTR wzNamespace;
LPWSTR wzElement;
LPWSTR wzValue;
ATOM_UNKNOWN_ATTRIBUTE* pAttributes;
ATOM_UNKNOWN_ELEMENT* pNext;
};
struct ATOM_LINK
{
LPWSTR wzRel;
LPWSTR wzTitle;
LPWSTR wzType;
LPWSTR wzUrl;
LPWSTR wzValue;
DWORD64 dw64Length;
ATOM_UNKNOWN_ATTRIBUTE* pUnknownAttributes;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_CONTENT
{
LPWSTR wzType;
LPWSTR wzUrl;
LPWSTR wzValue;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_AUTHOR
{
LPWSTR wzName;
LPWSTR wzEmail;
LPWSTR wzUrl;
};
struct ATOM_CATEGORY
{
LPWSTR wzLabel;
LPWSTR wzScheme;
LPWSTR wzTerm;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_ENTRY
{
LPWSTR wzId;
LPWSTR wzSummary;
LPWSTR wzTitle;
FILETIME ftPublished;
FILETIME ftUpdated;
ATOM_CONTENT* pContent;
DWORD cAuthors;
ATOM_AUTHOR* rgAuthors;
DWORD cCategories;
ATOM_CATEGORY* rgCategories;
DWORD cLinks;
ATOM_LINK* rgLinks;
IXMLDOMNode* pixn;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
struct ATOM_FEED
{
LPWSTR wzGenerator;
LPWSTR wzIcon;
LPWSTR wzId;
LPWSTR wzLogo;
LPWSTR wzSubtitle;
LPWSTR wzTitle;
FILETIME ftUpdated;
DWORD cAuthors;
ATOM_AUTHOR* rgAuthors;
DWORD cCategories;
ATOM_CATEGORY* rgCategories;
DWORD cEntries;
ATOM_ENTRY* rgEntries;
DWORD cLinks;
ATOM_LINK* rgLinks;
IXMLDOMNode* pixn;
ATOM_UNKNOWN_ELEMENT* pUnknownElements;
};
HRESULT DAPI AtomInitialize(
);
void DAPI AtomUninitialize(
);
HRESULT DAPI AtomParseFromString(
__in_z LPCWSTR wzAtomString,
__out ATOM_FEED **ppFeed
);
HRESULT DAPI AtomParseFromFile(
__in_z LPCWSTR wzAtomFile,
__out ATOM_FEED **ppFeed
);
HRESULT DAPI AtomParseFromDocument(
__in IXMLDOMDocument* pixdDocument,
__out ATOM_FEED **ppFeed
);
void DAPI AtomFreeFeed(
__in_xcount(pFeed->cItems) ATOM_FEED *pFEED
);
#ifdef __cplusplus
}
#endif
+58 -58
View File
@@ -1,58 +1,58 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _BAL_CONDITION
{
LPWSTR sczCondition;
LPWSTR sczMessage;
} BAL_CONDITION;
typedef struct _BAL_CONDITIONS
{
BAL_CONDITION* rgConditions;
DWORD cConditions;
} BAL_CONDITIONS;
/*******************************************************************
BalConditionsParseFromXml - loads the conditions from the UX manifest.
********************************************************************/
DAPI_(HRESULT) BalConditionsParseFromXml(
__in BAL_CONDITIONS* pConditions,
__in IXMLDOMDocument* pixdManifest,
__in_opt WIX_LOCALIZATION* pWixLoc
);
/*******************************************************************
BalConditionEvaluate - evaluates condition against the provided IBurnCore.
NOTE: psczMessage is optional.
********************************************************************/
DAPI_(HRESULT) BalConditionEvaluate(
__in BAL_CONDITION* pCondition,
__in IBootstrapperEngine* pEngine,
__out BOOL* pfResult,
__out_z_opt LPWSTR* psczMessage
);
/*******************************************************************
BalConditionsUninitialize - uninitializes any conditions previously loaded.
********************************************************************/
DAPI_(void) BalConditionsUninitialize(
__in BAL_CONDITIONS* pConditions
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _BAL_CONDITION
{
LPWSTR sczCondition;
LPWSTR sczMessage;
} BAL_CONDITION;
typedef struct _BAL_CONDITIONS
{
BAL_CONDITION* rgConditions;
DWORD cConditions;
} BAL_CONDITIONS;
/*******************************************************************
BalConditionsParseFromXml - loads the conditions from the UX manifest.
********************************************************************/
DAPI_(HRESULT) BalConditionsParseFromXml(
__in BAL_CONDITIONS* pConditions,
__in IXMLDOMDocument* pixdManifest,
__in_opt WIX_LOCALIZATION* pWixLoc
);
/*******************************************************************
BalConditionEvaluate - evaluates condition against the provided IBurnCore.
NOTE: psczMessage is optional.
********************************************************************/
DAPI_(HRESULT) BalConditionEvaluate(
__in BAL_CONDITION* pCondition,
__in IBootstrapperEngine* pEngine,
__out BOOL* pfResult,
__out_z_opt LPWSTR* psczMessage
);
/*******************************************************************
BalConditionsUninitialize - uninitializes any conditions previously loaded.
********************************************************************/
DAPI_(void) BalConditionsUninitialize(
__in BAL_CONDITIONS* pConditions
);
#ifdef __cplusplus
}
#endif
+109 -109
View File
@@ -1,109 +1,109 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BAL_INFO_PACKAGE_TYPE
{
BAL_INFO_PACKAGE_TYPE_UNKNOWN,
BAL_INFO_PACKAGE_TYPE_EXE,
BAL_INFO_PACKAGE_TYPE_MSI,
BAL_INFO_PACKAGE_TYPE_MSP,
BAL_INFO_PACKAGE_TYPE_MSU,
BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE,
BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON,
BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH,
} BAL_INFO_PACKAGE_TYPE;
typedef enum BAL_INFO_CACHE_TYPE
{
BAL_INFO_CACHE_TYPE_NO,
BAL_INFO_CACHE_TYPE_YES,
BAL_INFO_CACHE_TYPE_ALWAYS,
} BAL_INFO_CACHE_TYPE;
typedef struct _BAL_INFO_PACKAGE
{
LPWSTR sczId;
LPWSTR sczDisplayName;
LPWSTR sczDescription;
BAL_INFO_PACKAGE_TYPE type;
BOOL fPermanent;
BOOL fVital;
BOOL fDisplayInternalUI;
LPWSTR sczProductCode;
LPWSTR sczUpgradeCode;
LPWSTR sczVersion;
LPWSTR sczInstallCondition;
BAL_INFO_CACHE_TYPE cacheType;
BOOTSTRAPPER_ACTION_STATE executeAction; // this must be set by the BA in OnPlanPackageComplete.
BOOTSTRAPPER_ACTION_STATE rollbackAction; // this must be set by the BA in OnPlanPackageComplete.
} BAL_INFO_PACKAGE;
typedef struct _BAL_INFO_PACKAGES
{
BAL_INFO_PACKAGE* rgPackages;
DWORD cPackages;
} BAL_INFO_PACKAGES;
typedef struct _BAL_INFO_BUNDLE
{
BOOL fPerMachine;
LPWSTR sczName;
LPWSTR sczLogVariable;
BAL_INFO_PACKAGES packages;
} BAL_INFO_BUNDLE;
/*******************************************************************
BalInfoParseFromXml - loads the bundle and package info from the UX
manifest.
********************************************************************/
DAPI_(HRESULT) BalInfoParseFromXml(
__in BAL_INFO_BUNDLE* pBundle,
__in IXMLDOMDocument* pixdManifest
);
/*******************************************************************
BalInfoAddRelatedBundleAsPackage - adds a related bundle as a package.
********************************************************************/
DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage(
__in BAL_INFO_PACKAGES* pPackages,
__in LPCWSTR wzId,
__in BOOTSTRAPPER_RELATION_TYPE relationType,
__in BOOL fPerMachine
);
/*******************************************************************
BalInfoFindPackageById - finds a package by its id.
********************************************************************/
DAPI_(HRESULT) BalInfoFindPackageById(
__in BAL_INFO_PACKAGES* pPackages,
__in LPCWSTR wzId,
__out BAL_INFO_PACKAGE** ppPackage
);
/*******************************************************************
BalInfoUninitialize - uninitializes any info previously loaded.
********************************************************************/
DAPI_(void) BalInfoUninitialize(
__in BAL_INFO_BUNDLE* pBundle
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BAL_INFO_PACKAGE_TYPE
{
BAL_INFO_PACKAGE_TYPE_UNKNOWN,
BAL_INFO_PACKAGE_TYPE_EXE,
BAL_INFO_PACKAGE_TYPE_MSI,
BAL_INFO_PACKAGE_TYPE_MSP,
BAL_INFO_PACKAGE_TYPE_MSU,
BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE,
BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON,
BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH,
} BAL_INFO_PACKAGE_TYPE;
typedef enum BAL_INFO_CACHE_TYPE
{
BAL_INFO_CACHE_TYPE_NO,
BAL_INFO_CACHE_TYPE_YES,
BAL_INFO_CACHE_TYPE_ALWAYS,
} BAL_INFO_CACHE_TYPE;
typedef struct _BAL_INFO_PACKAGE
{
LPWSTR sczId;
LPWSTR sczDisplayName;
LPWSTR sczDescription;
BAL_INFO_PACKAGE_TYPE type;
BOOL fPermanent;
BOOL fVital;
BOOL fDisplayInternalUI;
LPWSTR sczProductCode;
LPWSTR sczUpgradeCode;
LPWSTR sczVersion;
LPWSTR sczInstallCondition;
BAL_INFO_CACHE_TYPE cacheType;
BOOTSTRAPPER_ACTION_STATE executeAction; // this must be set by the BA in OnPlanPackageComplete.
BOOTSTRAPPER_ACTION_STATE rollbackAction; // this must be set by the BA in OnPlanPackageComplete.
} BAL_INFO_PACKAGE;
typedef struct _BAL_INFO_PACKAGES
{
BAL_INFO_PACKAGE* rgPackages;
DWORD cPackages;
} BAL_INFO_PACKAGES;
typedef struct _BAL_INFO_BUNDLE
{
BOOL fPerMachine;
LPWSTR sczName;
LPWSTR sczLogVariable;
BAL_INFO_PACKAGES packages;
} BAL_INFO_BUNDLE;
/*******************************************************************
BalInfoParseFromXml - loads the bundle and package info from the UX
manifest.
********************************************************************/
DAPI_(HRESULT) BalInfoParseFromXml(
__in BAL_INFO_BUNDLE* pBundle,
__in IXMLDOMDocument* pixdManifest
);
/*******************************************************************
BalInfoAddRelatedBundleAsPackage - adds a related bundle as a package.
********************************************************************/
DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage(
__in BAL_INFO_PACKAGES* pPackages,
__in LPCWSTR wzId,
__in BOOTSTRAPPER_RELATION_TYPE relationType,
__in BOOL fPerMachine
);
/*******************************************************************
BalInfoFindPackageById - finds a package by its id.
********************************************************************/
DAPI_(HRESULT) BalInfoFindPackageById(
__in BAL_INFO_PACKAGES* pPackages,
__in LPCWSTR wzId,
__out BAL_INFO_PACKAGE** ppPackage
);
/*******************************************************************
BalInfoUninitialize - uninitializes any info previously loaded.
********************************************************************/
DAPI_(void) BalInfoUninitialize(
__in BAL_INFO_BUNDLE* pBundle
);
#ifdef __cplusplus
}
#endif
+64 -64
View File
@@ -1,64 +1,64 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BALRETRY_TYPE
{
BALRETRY_TYPE_CACHE,
BALRETRY_TYPE_EXECUTE,
} BALRETRY_TYPE;
/*******************************************************************
BalRetryInitialize - initialize the retry count and timeout between
retries (in milliseconds).
********************************************************************/
DAPI_(void) BalRetryInitialize(
__in DWORD dwMaxRetries,
__in DWORD dwTimeout
);
/*******************************************************************
BalRetryUninitialize - call to cleanup any memory allocated during
use of the retry utility.
********************************************************************/
DAPI_(void) BalRetryUninitialize();
/*******************************************************************
BalRetryStartPackage - call when a package begins to be modified. If
the package is being retried, the function will
wait the specified timeout.
********************************************************************/
DAPI_(void) BalRetryStartPackage(
__in BALRETRY_TYPE type,
__in_z_opt LPCWSTR wzPackageId,
__in_z_opt LPCWSTR wzPayloadId
);
/*******************************************************************
BalRetryErrorOccured - call when an error occurs for the retry utility
to consider.
********************************************************************/
DAPI_(void) BalRetryErrorOccurred(
__in_z_opt LPCWSTR wzPackageId,
__in DWORD dwError
);
/*******************************************************************
BalRetryEndPackage - returns IDRETRY is a retry is recommended or
IDNOACTION if a retry is not recommended.
********************************************************************/
DAPI_(int) BalRetryEndPackage(
__in BALRETRY_TYPE type,
__in_z_opt LPCWSTR wzPackageId,
__in_z_opt LPCWSTR wzPayloadId,
__in HRESULT hrError
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum BALRETRY_TYPE
{
BALRETRY_TYPE_CACHE,
BALRETRY_TYPE_EXECUTE,
} BALRETRY_TYPE;
/*******************************************************************
BalRetryInitialize - initialize the retry count and timeout between
retries (in milliseconds).
********************************************************************/
DAPI_(void) BalRetryInitialize(
__in DWORD dwMaxRetries,
__in DWORD dwTimeout
);
/*******************************************************************
BalRetryUninitialize - call to cleanup any memory allocated during
use of the retry utility.
********************************************************************/
DAPI_(void) BalRetryUninitialize();
/*******************************************************************
BalRetryStartPackage - call when a package begins to be modified. If
the package is being retried, the function will
wait the specified timeout.
********************************************************************/
DAPI_(void) BalRetryStartPackage(
__in BALRETRY_TYPE type,
__in_z_opt LPCWSTR wzPackageId,
__in_z_opt LPCWSTR wzPayloadId
);
/*******************************************************************
BalRetryErrorOccured - call when an error occurs for the retry utility
to consider.
********************************************************************/
DAPI_(void) BalRetryErrorOccurred(
__in_z_opt LPCWSTR wzPackageId,
__in DWORD dwError
);
/*******************************************************************
BalRetryEndPackage - returns IDRETRY is a retry is recommended or
IDNOACTION if a retry is not recommended.
********************************************************************/
DAPI_(int) BalRetryEndPackage(
__in BALRETRY_TYPE type,
__in_z_opt LPCWSTR wzPackageId,
__in_z_opt LPCWSTR wzPayloadId,
__in HRESULT hrError
);
#ifdef __cplusplus
}
#endif
+118 -118
View File
@@ -1,118 +1,118 @@
#pragma once
// 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.
#include "dutil.h"
#ifdef __cplusplus
extern "C" {
#endif
#define BalExitOnFailure(x, f) if (FAILED(x)) { BalLogError(x, f); ExitTrace(x, f); goto LExit; }
#define BalExitOnFailure1(x, f, s) if (FAILED(x)) { BalLogError(x, f, s); ExitTrace1(x, f, s); goto LExit; }
#define BalExitOnFailure2(x, f, s, t) if (FAILED(x)) { BalLogError(x, f, s, t); ExitTrace2(x, f, s, t); goto LExit; }
#define BalExitOnFailure3(x, f, s, t, u) if (FAILED(x)) { BalLogError(x, f, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; }
#define BalExitOnRootFailure(x, f) if (FAILED(x)) { BalLogError(x, f); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, f); goto LExit; }
#define BalExitOnRootFailure1(x, f, s) if (FAILED(x)) { BalLogError(x, f, s); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; }
#define BalExitOnRootFailure2(x, f, s, t) if (FAILED(x)) { BalLogError(x, f, s, t); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; }
#define BalExitOnRootFailure3(x, f, s, t, u) if (FAILED(x)) { BalLogError(x, f, s, t, u); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; }
#define BalExitOnNullWithLastError(p, x, f) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f); ExitTrace(x, f); goto LExit; }
#define BalExitOnNullWithLastError1(p, x, f, s) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f, s); ExitTrace1(x, f, s); goto LExit; }
#ifndef FACILITY_WIX
#define FACILITY_WIX 500
#endif
static const HRESULT E_WIXSTDBA_CONDITION_FAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 1);
static const HRESULT E_MBAHOST_NET452_ON_WIN7RTM = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 1000);
/*******************************************************************
BalInitialize - remembers the engine interface to enable logging and
other functions.
********************************************************************/
DAPI_(void) BalInitialize(
__in IBootstrapperEngine* pEngine
);
/*******************************************************************
BalUninitialize - cleans up utility layer internals.
********************************************************************/
DAPI_(void) BalUninitialize();
/*******************************************************************
BalManifestLoad - loads the Application manifest into an XML document.
********************************************************************/
DAPI_(HRESULT) BalManifestLoad(
__in HMODULE hUXModule,
__out IXMLDOMDocument** ppixdManifest
);
/*******************************************************************
BalFormatString - formats a string using variables in the engine.
Note: Use StrFree() to release psczOut.
********************************************************************/
DAPI_(HRESULT) BalFormatString(
__in_z LPCWSTR wzFormat,
__inout LPWSTR* psczOut
);
/*******************************************************************
BalGetNumericVariable - gets a number from a variable in the engine.
Note: Returns E_NOTFOUND if variable does not exist.
********************************************************************/
DAPI_(HRESULT) BalGetNumericVariable(
__in_z LPCWSTR wzVariable,
__out LONGLONG* pllValue
);
/*******************************************************************
BalStringVariableExists - checks if a string variable exists in the engine.
********************************************************************/
DAPI_(BOOL) BalStringVariableExists(
__in_z LPCWSTR wzVariable
);
/*******************************************************************
BalGetStringVariable - gets a string from a variable in the engine.
Note: Use StrFree() to release psczValue.
********************************************************************/
DAPI_(HRESULT) BalGetStringVariable(
__in_z LPCWSTR wzVariable,
__inout LPWSTR* psczValue
);
/*******************************************************************
BalLog - logs a message with the engine.
********************************************************************/
DAPIV_(HRESULT) BalLog(
__in BOOTSTRAPPER_LOG_LEVEL level,
__in_z __format_string LPCSTR szFormat,
...
);
/*******************************************************************
BalLogError - logs an error message with the engine.
********************************************************************/
DAPIV_(HRESULT) BalLogError(
__in HRESULT hr,
__in_z __format_string LPCSTR szFormat,
...
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include "dutil.h"
#ifdef __cplusplus
extern "C" {
#endif
#define BalExitOnFailure(x, f) if (FAILED(x)) { BalLogError(x, f); ExitTrace(x, f); goto LExit; }
#define BalExitOnFailure1(x, f, s) if (FAILED(x)) { BalLogError(x, f, s); ExitTrace1(x, f, s); goto LExit; }
#define BalExitOnFailure2(x, f, s, t) if (FAILED(x)) { BalLogError(x, f, s, t); ExitTrace2(x, f, s, t); goto LExit; }
#define BalExitOnFailure3(x, f, s, t, u) if (FAILED(x)) { BalLogError(x, f, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; }
#define BalExitOnRootFailure(x, f) if (FAILED(x)) { BalLogError(x, f); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, f); goto LExit; }
#define BalExitOnRootFailure1(x, f, s) if (FAILED(x)) { BalLogError(x, f, s); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; }
#define BalExitOnRootFailure2(x, f, s, t) if (FAILED(x)) { BalLogError(x, f, s, t); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; }
#define BalExitOnRootFailure3(x, f, s, t, u) if (FAILED(x)) { BalLogError(x, f, s, t, u); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; }
#define BalExitOnNullWithLastError(p, x, f) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f); ExitTrace(x, f); goto LExit; }
#define BalExitOnNullWithLastError1(p, x, f, s) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f, s); ExitTrace1(x, f, s); goto LExit; }
#ifndef FACILITY_WIX
#define FACILITY_WIX 500
#endif
static const HRESULT E_WIXSTDBA_CONDITION_FAILED = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 1);
static const HRESULT E_MBAHOST_NET452_ON_WIN7RTM = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 1000);
/*******************************************************************
BalInitialize - remembers the engine interface to enable logging and
other functions.
********************************************************************/
DAPI_(void) BalInitialize(
__in IBootstrapperEngine* pEngine
);
/*******************************************************************
BalUninitialize - cleans up utility layer internals.
********************************************************************/
DAPI_(void) BalUninitialize();
/*******************************************************************
BalManifestLoad - loads the Application manifest into an XML document.
********************************************************************/
DAPI_(HRESULT) BalManifestLoad(
__in HMODULE hUXModule,
__out IXMLDOMDocument** ppixdManifest
);
/*******************************************************************
BalFormatString - formats a string using variables in the engine.
Note: Use StrFree() to release psczOut.
********************************************************************/
DAPI_(HRESULT) BalFormatString(
__in_z LPCWSTR wzFormat,
__inout LPWSTR* psczOut
);
/*******************************************************************
BalGetNumericVariable - gets a number from a variable in the engine.
Note: Returns E_NOTFOUND if variable does not exist.
********************************************************************/
DAPI_(HRESULT) BalGetNumericVariable(
__in_z LPCWSTR wzVariable,
__out LONGLONG* pllValue
);
/*******************************************************************
BalStringVariableExists - checks if a string variable exists in the engine.
********************************************************************/
DAPI_(BOOL) BalStringVariableExists(
__in_z LPCWSTR wzVariable
);
/*******************************************************************
BalGetStringVariable - gets a string from a variable in the engine.
Note: Use StrFree() to release psczValue.
********************************************************************/
DAPI_(HRESULT) BalGetStringVariable(
__in_z LPCWSTR wzVariable,
__inout LPWSTR* psczValue
);
/*******************************************************************
BalLog - logs a message with the engine.
********************************************************************/
DAPIV_(HRESULT) BalLog(
__in BOOTSTRAPPER_LOG_LEVEL level,
__in_z __format_string LPCSTR szFormat,
...
);
/*******************************************************************
BalLogError - logs an error message with the engine.
********************************************************************/
DAPIV_(HRESULT) BalLogError(
__in HRESULT hr,
__in_z __format_string LPCSTR szFormat,
...
);
#ifdef __cplusplus
}
#endif
+80 -80
View File
@@ -1,80 +1,80 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// macro definitions
#define ReleaseBuffer ReleaseMem
#define ReleaseNullBuffer ReleaseNullMem
#define BuffFree MemFree
// function declarations
HRESULT BuffReadNumber(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD* pdw
);
HRESULT BuffReadNumber64(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD64* pdw64
);
HRESULT BuffReadString(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPWSTR* pscz
);
HRESULT BuffReadStringAnsi(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPSTR* pscz
);
HRESULT BuffReadStream(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_bcount(*pcbStream) BYTE** ppbStream,
__out SIZE_T* pcbStream
);
HRESULT BuffWriteNumber(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD dw
);
HRESULT BuffWriteNumber64(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD64 dw64
);
HRESULT BuffWriteString(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCWSTR scz
);
HRESULT BuffWriteStringAnsi(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCSTR scz
);
HRESULT BuffWriteStream(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_bcount(cbStream) const BYTE* pbStream,
__in SIZE_T cbStream
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// macro definitions
#define ReleaseBuffer ReleaseMem
#define ReleaseNullBuffer ReleaseNullMem
#define BuffFree MemFree
// function declarations
HRESULT BuffReadNumber(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD* pdw
);
HRESULT BuffReadNumber64(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD64* pdw64
);
HRESULT BuffReadString(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPWSTR* pscz
);
HRESULT BuffReadStringAnsi(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPSTR* pscz
);
HRESULT BuffReadStream(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_bcount(*pcbStream) BYTE** ppbStream,
__out SIZE_T* pcbStream
);
HRESULT BuffWriteNumber(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD dw
);
HRESULT BuffWriteNumber64(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD64 dw64
);
HRESULT BuffWriteString(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCWSTR scz
);
HRESULT BuffWriteStringAnsi(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCSTR scz
);
HRESULT BuffWriteStream(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_bcount(cbStream) const BYTE* pbStream,
__in SIZE_T cbStream
);
#ifdef __cplusplus
}
#endif
+31 -31
View File
@@ -1,31 +1,31 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
enum BUNDLE_INSTALL_CONTEXT
{
BUNDLE_INSTALL_CONTEXT_MACHINE,
BUNDLE_INSTALL_CONTEXT_USER,
};
HRESULT DAPI BundleGetBundleInfo(
__in LPCWSTR szBundleId, // Bundle code
__in LPCWSTR szAttribute, // attribute name
__out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, // returned value, NULL if not desired
__inout_opt LPDWORD pcchValueBuf // in/out buffer character count
);
HRESULT DAPI BundleEnumRelatedBundle(
__in LPCWSTR lpUpgradeCode,
__in BUNDLE_INSTALL_CONTEXT context,
__inout PDWORD pdwStartIndex,
__out_ecount(MAX_GUID_CHARS+1) LPWSTR lpBundleIdBuf
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
enum BUNDLE_INSTALL_CONTEXT
{
BUNDLE_INSTALL_CONTEXT_MACHINE,
BUNDLE_INSTALL_CONTEXT_USER,
};
HRESULT DAPI BundleGetBundleInfo(
__in LPCWSTR szBundleId, // Bundle code
__in LPCWSTR szAttribute, // attribute name
__out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, // returned value, NULL if not desired
__inout_opt LPDWORD pcchValueBuf // in/out buffer character count
);
HRESULT DAPI BundleEnumRelatedBundle(
__in LPCWSTR lpUpgradeCode,
__in BUNDLE_INSTALL_CONTEXT context,
__inout PDWORD pdwStartIndex,
__out_ecount(MAX_GUID_CHARS+1) LPWSTR lpBundleIdBuf
);
#ifdef __cplusplus
}
#endif
+62 -62
View File
@@ -1,62 +1,62 @@
#pragma once
// 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.
#include <fci.h>
#include <fcntl.h>
#include <msi.h>
// Callback from PFNFCIGETNEXTCABINET CabCGetNextCabinet method
// First argument is the name of splitting cabinet without extension e.g. "cab1"
// Second argument is name of the new cabinet that would be formed by splitting e.g. "cab1b.cab"
// Third argument is the file token of the first file present in the splitting cabinet
typedef void (__stdcall * FileSplitCabNamesCallback)(LPWSTR, LPWSTR, LPWSTR);
#define CAB_MAX_SIZE 0x7FFFFFFF // (see KB: Q174866)
#ifdef __cplusplus
extern "C" {
#endif
extern const int CABC_HANDLE_BYTES;
// time vs. space trade-off
typedef enum COMPRESSION_TYPE
{
COMPRESSION_TYPE_NONE, // fastest
COMPRESSION_TYPE_LOW,
COMPRESSION_TYPE_MEDIUM,
COMPRESSION_TYPE_HIGH, // smallest
COMPRESSION_TYPE_MSZIP
} COMPRESSION_TYPE;
// functions
HRESULT DAPI CabCBegin(
__in_z LPCWSTR wzCab,
__in_z LPCWSTR wzCabDir,
__in DWORD dwMaxFiles,
__in DWORD dwMaxSize,
__in DWORD dwMaxThresh,
__in COMPRESSION_TYPE ct,
__out_bcount(CABC_HANDLE_BYTES) HANDLE *phContext
);
HRESULT DAPI CabCNextCab(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
HRESULT DAPI CabCAddFile(
__in_z LPCWSTR wzFile,
__in_z_opt LPCWSTR wzToken,
__in_opt PMSIFILEHASHINFO pmfHash,
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
HRESULT DAPI CabCFinish(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext,
__in_opt FileSplitCabNamesCallback fileSplitCabNamesCallback
);
void DAPI CabCCancel(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <fci.h>
#include <fcntl.h>
#include <msi.h>
// Callback from PFNFCIGETNEXTCABINET CabCGetNextCabinet method
// First argument is the name of splitting cabinet without extension e.g. "cab1"
// Second argument is name of the new cabinet that would be formed by splitting e.g. "cab1b.cab"
// Third argument is the file token of the first file present in the splitting cabinet
typedef void (__stdcall * FileSplitCabNamesCallback)(LPWSTR, LPWSTR, LPWSTR);
#define CAB_MAX_SIZE 0x7FFFFFFF // (see KB: Q174866)
#ifdef __cplusplus
extern "C" {
#endif
extern const int CABC_HANDLE_BYTES;
// time vs. space trade-off
typedef enum COMPRESSION_TYPE
{
COMPRESSION_TYPE_NONE, // fastest
COMPRESSION_TYPE_LOW,
COMPRESSION_TYPE_MEDIUM,
COMPRESSION_TYPE_HIGH, // smallest
COMPRESSION_TYPE_MSZIP
} COMPRESSION_TYPE;
// functions
HRESULT DAPI CabCBegin(
__in_z LPCWSTR wzCab,
__in_z LPCWSTR wzCabDir,
__in DWORD dwMaxFiles,
__in DWORD dwMaxSize,
__in DWORD dwMaxThresh,
__in COMPRESSION_TYPE ct,
__out_bcount(CABC_HANDLE_BYTES) HANDLE *phContext
);
HRESULT DAPI CabCNextCab(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
HRESULT DAPI CabCAddFile(
__in_z LPCWSTR wzFile,
__in_z_opt LPCWSTR wzToken,
__in_opt PMSIFILEHASHINFO pmfHash,
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
HRESULT DAPI CabCFinish(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext,
__in_opt FileSplitCabNamesCallback fileSplitCabNamesCallback
);
void DAPI CabCCancel(
__in_bcount(CABC_HANDLE_BYTES) HANDLE hContext
);
#ifdef __cplusplus
}
#endif
+56 -56
View File
@@ -1,56 +1,56 @@
#pragma once
// 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.
#include <fdi.h>
#include <sys\stat.h>
#ifdef __cplusplus
extern "C" {
#endif
// structs
// callback function prototypes
typedef HRESULT (*CAB_CALLBACK_OPEN_FILE)(LPCWSTR wzFile, INT_PTR* ppFile);
typedef HRESULT (*CAB_CALLBACK_READ_FILE)(INT_PTR pFile, LPVOID pvData, DWORD cbData, DWORD* pcbRead);
typedef HRESULT (*CAB_CALLBACK_WRITE_FILE)(INT_PTR pFile, LPVOID pvData, DWORD cbData, DWORD* pcbRead);
typedef LONG (*CAB_CALLBACK_SEEK_FILE)(INT_PTR pFile, DWORD dwMove, DWORD dwMoveMethod);
typedef HRESULT (*CAB_CALLBACK_CLOSE_FILE)(INT_PTR pFile);
typedef HRESULT (*CAB_CALLBACK_BEGIN_FILE)(LPCWSTR wzFileId, FILETIME* pftFileTime, DWORD cbFileSize, LPVOID pvContext, INT_PTR* ppFile);
typedef HRESULT (*CAB_CALLBACK_END_FILE)(LPCWSTR wzFileId, LPVOID pvContext, INT_PTR pFile);
typedef HRESULT (*CAB_CALLBACK_PROGRESS)(BOOL fBeginFile, LPCWSTR wzFileId, LPVOID pvContext);
// function type with calling convention of __stdcall that .NET 1.1 understands only
// .NET 2.0 will not need this
typedef INT_PTR (FAR __stdcall *STDCALL_PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin);
// functions
HRESULT DAPI CabInitialize(
__in BOOL fDelayLoad
);
void DAPI CabUninitialize(
);
HRESULT DAPI CabExtract(
__in_z LPCWSTR wzCabinet,
__in_z LPCWSTR wzExtractFile,
__in_z LPCWSTR wzExtractDir,
__in_opt CAB_CALLBACK_PROGRESS pfnProgress,
__in_opt LPVOID pvContext,
__in DWORD64 dw64EmbeddedOffset
);
HRESULT DAPI CabEnumerate(
__in_z LPCWSTR wzCabinet,
__in_z LPCWSTR wzEnumerateFile,
__in STDCALL_PFNFDINOTIFY pfnNotify,
__in DWORD64 dw64EmbeddedOffset
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <fdi.h>
#include <sys\stat.h>
#ifdef __cplusplus
extern "C" {
#endif
// structs
// callback function prototypes
typedef HRESULT (*CAB_CALLBACK_OPEN_FILE)(LPCWSTR wzFile, INT_PTR* ppFile);
typedef HRESULT (*CAB_CALLBACK_READ_FILE)(INT_PTR pFile, LPVOID pvData, DWORD cbData, DWORD* pcbRead);
typedef HRESULT (*CAB_CALLBACK_WRITE_FILE)(INT_PTR pFile, LPVOID pvData, DWORD cbData, DWORD* pcbRead);
typedef LONG (*CAB_CALLBACK_SEEK_FILE)(INT_PTR pFile, DWORD dwMove, DWORD dwMoveMethod);
typedef HRESULT (*CAB_CALLBACK_CLOSE_FILE)(INT_PTR pFile);
typedef HRESULT (*CAB_CALLBACK_BEGIN_FILE)(LPCWSTR wzFileId, FILETIME* pftFileTime, DWORD cbFileSize, LPVOID pvContext, INT_PTR* ppFile);
typedef HRESULT (*CAB_CALLBACK_END_FILE)(LPCWSTR wzFileId, LPVOID pvContext, INT_PTR pFile);
typedef HRESULT (*CAB_CALLBACK_PROGRESS)(BOOL fBeginFile, LPCWSTR wzFileId, LPVOID pvContext);
// function type with calling convention of __stdcall that .NET 1.1 understands only
// .NET 2.0 will not need this
typedef INT_PTR (FAR __stdcall *STDCALL_PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin);
// functions
HRESULT DAPI CabInitialize(
__in BOOL fDelayLoad
);
void DAPI CabUninitialize(
);
HRESULT DAPI CabExtract(
__in_z LPCWSTR wzCabinet,
__in_z LPCWSTR wzExtractFile,
__in_z LPCWSTR wzExtractDir,
__in_opt CAB_CALLBACK_PROGRESS pfnProgress,
__in_opt LPVOID pvContext,
__in DWORD64 dw64EmbeddedOffset
);
HRESULT DAPI CabEnumerate(
__in_z LPCWSTR wzCabinet,
__in_z LPCWSTR wzEnumerateFile,
__in STDCALL_PFNFDINOTIFY pfnNotify,
__in DWORD64 dw64EmbeddedOffset
);
#ifdef __cplusplus
}
#endif
+66 -66
View File
@@ -1,66 +1,66 @@
#pragma once
// 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.
#define ReleaseCertStore(p) if (p) { ::CertCloseStore(p, 0); p = NULL; }
#define ReleaseCertContext(p) if (p) { ::CertFreeCertificateContext(p); p = NULL; }
#define ReleaseCertChain(p) if (p) { ::CertFreeCertificateChain(p); p = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI CertReadProperty(
__in PCCERT_CONTEXT pCertContext,
__in DWORD dwProperty,
__out_bcount(*pcbValue) LPVOID pvValue,
__out_opt DWORD* pcbValue
);
HRESULT DAPI CertGetAuthenticodeSigningTimestamp(
__in CMSG_SIGNER_INFO* pSignerInfo,
__out FILETIME* pft
);
HRESULT DAPI GetCryptProvFromCert(
__in_opt HWND hwnd,
__in PCCERT_CONTEXT pCert,
__out HCRYPTPROV *phCryptProv,
__out DWORD *pdwKeySpec,
__in BOOL *pfDidCryptAcquire,
__deref_opt_out LPWSTR *ppwszTmpContainer,
__deref_opt_out LPWSTR *ppwszProviderName,
__out DWORD *pdwProviderType
);
HRESULT DAPI FreeCryptProvFromCert(
__in BOOL fAcquired,
__in HCRYPTPROV hProv,
__in_opt LPWSTR pwszCapiProvider,
__in DWORD dwProviderType,
__in_opt LPWSTR pwszTmpContainer
);
HRESULT DAPI GetProvSecurityDesc(
__in HCRYPTPROV hProv,
__deref_out SECURITY_DESCRIPTOR** pSecurity
);
HRESULT DAPI SetProvSecurityDesc(
__in HCRYPTPROV hProv,
__in SECURITY_DESCRIPTOR* pSecurity
);
BOOL DAPI CertHasPrivateKey(
__in PCCERT_CONTEXT pCertContext,
__out_opt DWORD* pdwKeySpec
);
HRESULT DAPI CertInstallSingleCertificate(
__in HCERTSTORE hStore,
__in PCCERT_CONTEXT pCertContext,
__in LPCWSTR wzName
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#define ReleaseCertStore(p) if (p) { ::CertCloseStore(p, 0); p = NULL; }
#define ReleaseCertContext(p) if (p) { ::CertFreeCertificateContext(p); p = NULL; }
#define ReleaseCertChain(p) if (p) { ::CertFreeCertificateChain(p); p = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI CertReadProperty(
__in PCCERT_CONTEXT pCertContext,
__in DWORD dwProperty,
__out_bcount(*pcbValue) LPVOID pvValue,
__out_opt DWORD* pcbValue
);
HRESULT DAPI CertGetAuthenticodeSigningTimestamp(
__in CMSG_SIGNER_INFO* pSignerInfo,
__out FILETIME* pft
);
HRESULT DAPI GetCryptProvFromCert(
__in_opt HWND hwnd,
__in PCCERT_CONTEXT pCert,
__out HCRYPTPROV *phCryptProv,
__out DWORD *pdwKeySpec,
__in BOOL *pfDidCryptAcquire,
__deref_opt_out LPWSTR *ppwszTmpContainer,
__deref_opt_out LPWSTR *ppwszProviderName,
__out DWORD *pdwProviderType
);
HRESULT DAPI FreeCryptProvFromCert(
__in BOOL fAcquired,
__in HCRYPTPROV hProv,
__in_opt LPWSTR pwszCapiProvider,
__in DWORD dwProviderType,
__in_opt LPWSTR pwszTmpContainer
);
HRESULT DAPI GetProvSecurityDesc(
__in HCRYPTPROV hProv,
__deref_out SECURITY_DESCRIPTOR** pSecurity
);
HRESULT DAPI SetProvSecurityDesc(
__in HCRYPTPROV hProv,
__in SECURITY_DESCRIPTOR* pSecurity
);
BOOL DAPI CertHasPrivateKey(
__in PCCERT_CONTEXT pCertContext,
__out_opt DWORD* pdwKeySpec
);
HRESULT DAPI CertInstallSingleCertificate(
__in HCERTSTORE hStore,
__in PCCERT_CONTEXT pCertContext,
__in LPCWSTR wzName
);
#ifdef __cplusplus
}
#endif
+97 -97
View File
@@ -1,97 +1,97 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ConsoleExitOnFailure(x, c, f, ...) if (FAILED(x)) { ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; }
#define ConsoleExitOnFailure1 ConsoleExitOnFailure
#define ConsoleExitOnFailure2 ConsoleExitOnFailure
#define ConsoleExitOnFailure3 ConsoleExitOnFailure
#define ConsoleExitOnLastError(x, c, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; } }
#define ConsoleExitOnLastError1 ConsoleExitOnLastError
#define ConsoleExitOnLastError2 ConsoleExitOnLastError
#define ConsoleExitOnLastError3 ConsoleExitOnLastError
#define ConsoleExitOnNull(p, x, e, c, f, ...) if (NULL == p) { x = e; ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; }
// the following macros need to go away
#define ConsoleTrace(l, f, ...) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f, __VA_ARGS__); Trace(l, f, __VA_ARGS__); }
#define ConsoleTrace1 ConsoleTrace
#define ConsoleTrace2 ConsoleTrace
#define ConsoleTrace3 ConsoleTrace
#define ConsoleWarning(f, ...) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f, __VA_ARGS__); Trace(REPORT_STANDARD, f, __VA_ARGS__); }
#define ConsoleWarning1 ConsoleWarning
#define ConsoleWarning2 ConsoleWarning
#define ConsoleWarning3 ConsoleWarning
#define ConsoleError(x, f, ...) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f, __VA_ARGS__); TraceError(x, f, __VA_ARGS__); }
#define ConsoleError1 ConsoleError
#define ConsoleError2 ConsoleError
#define ConsoleError3 ConsoleError
// enums
typedef enum CONSOLE_COLOR { CONSOLE_COLOR_NORMAL, CONSOLE_COLOR_RED, CONSOLE_COLOR_YELLOW, CONSOLE_COLOR_GREEN } CONSOLE_COLOR;
// structs
// functions
HRESULT DAPI ConsoleInitialize();
void DAPI ConsoleUninitialize();
void DAPI ConsoleGreen();
void DAPI ConsoleRed();
void DAPI ConsoleYellow();
void DAPI ConsoleNormal();
HRESULT DAPI ConsoleWrite(
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleWriteLine(
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleWriteError(
HRESULT hrError,
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleReadW(
__deref_out_z LPWSTR* ppwzBuffer
);
HRESULT DAPI ConsoleReadStringA(
__deref_out_ecount_part(cchCharBuffer,*pcchNumCharReturn) LPSTR* szCharBuffer,
CONST DWORD cchCharBuffer,
__out DWORD* pcchNumCharReturn
);
HRESULT DAPI ConsoleReadStringW(
__deref_out_ecount_part(cchCharBuffer,*pcchNumCharReturn) LPWSTR* szCharBuffer,
CONST DWORD cchCharBuffer,
__out DWORD* pcchNumCharReturn
);
HRESULT DAPI ConsoleReadNonBlockingW(
__deref_out_ecount_opt(*pcchSize) LPWSTR* ppwzBuffer,
__out DWORD* pcchSize,
BOOL fReadLine
);
HRESULT DAPI ConsoleSetReadHidden(void);
HRESULT DAPI ConsoleSetReadNormal(void);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ConsoleExitOnFailure(x, c, f, ...) if (FAILED(x)) { ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; }
#define ConsoleExitOnFailure1 ConsoleExitOnFailure
#define ConsoleExitOnFailure2 ConsoleExitOnFailure
#define ConsoleExitOnFailure3 ConsoleExitOnFailure
#define ConsoleExitOnLastError(x, c, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; } }
#define ConsoleExitOnLastError1 ConsoleExitOnLastError
#define ConsoleExitOnLastError2 ConsoleExitOnLastError
#define ConsoleExitOnLastError3 ConsoleExitOnLastError
#define ConsoleExitOnNull(p, x, e, c, f, ...) if (NULL == p) { x = e; ConsoleWriteError(x, c, f, __VA_ARGS__); ExitTrace(x, f, __VA_ARGS__); goto LExit; }
// the following macros need to go away
#define ConsoleTrace(l, f, ...) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f, __VA_ARGS__); Trace(l, f, __VA_ARGS__); }
#define ConsoleTrace1 ConsoleTrace
#define ConsoleTrace2 ConsoleTrace
#define ConsoleTrace3 ConsoleTrace
#define ConsoleWarning(f, ...) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f, __VA_ARGS__); Trace(REPORT_STANDARD, f, __VA_ARGS__); }
#define ConsoleWarning1 ConsoleWarning
#define ConsoleWarning2 ConsoleWarning
#define ConsoleWarning3 ConsoleWarning
#define ConsoleError(x, f, ...) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f, __VA_ARGS__); TraceError(x, f, __VA_ARGS__); }
#define ConsoleError1 ConsoleError
#define ConsoleError2 ConsoleError
#define ConsoleError3 ConsoleError
// enums
typedef enum CONSOLE_COLOR { CONSOLE_COLOR_NORMAL, CONSOLE_COLOR_RED, CONSOLE_COLOR_YELLOW, CONSOLE_COLOR_GREEN } CONSOLE_COLOR;
// structs
// functions
HRESULT DAPI ConsoleInitialize();
void DAPI ConsoleUninitialize();
void DAPI ConsoleGreen();
void DAPI ConsoleRed();
void DAPI ConsoleYellow();
void DAPI ConsoleNormal();
HRESULT DAPI ConsoleWrite(
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleWriteLine(
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleWriteError(
HRESULT hrError,
CONSOLE_COLOR cc,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI ConsoleReadW(
__deref_out_z LPWSTR* ppwzBuffer
);
HRESULT DAPI ConsoleReadStringA(
__deref_out_ecount_part(cchCharBuffer,*pcchNumCharReturn) LPSTR* szCharBuffer,
CONST DWORD cchCharBuffer,
__out DWORD* pcchNumCharReturn
);
HRESULT DAPI ConsoleReadStringW(
__deref_out_ecount_part(cchCharBuffer,*pcchNumCharReturn) LPWSTR* szCharBuffer,
CONST DWORD cchCharBuffer,
__out DWORD* pcchNumCharReturn
);
HRESULT DAPI ConsoleReadNonBlockingW(
__deref_out_ecount_opt(*pcchSize) LPWSTR* ppwzBuffer,
__out DWORD* pcchSize,
BOOL fReadLine
);
HRESULT DAPI ConsoleSetReadHidden(void);
HRESULT DAPI ConsoleSetReadNormal(void);
#ifdef __cplusplus
}
#endif
+103 -103
View File
@@ -1,103 +1,103 @@
#pragma once
// 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.
#define ReleaseCryptMsg(p) if (p) { ::CryptMsgClose(p); p = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
// Use CRYPTPROTECTMEMORY_BLOCK_SIZE, because it's larger and thus more restrictive than RTL_ENCRYPT_MEMORY_SIZE.
#define CRYP_ENCRYPT_MEMORY_SIZE CRYPTPROTECTMEMORY_BLOCK_SIZE
#define SHA1_HASH_LEN 20
typedef NTSTATUS (APIENTRY *PFN_RTLENCRYPTMEMORY)(
__inout PVOID Memory,
__in ULONG MemoryLength,
__in ULONG OptionFlags
);
typedef NTSTATUS (APIENTRY *PFN_RTLDECRYPTMEMORY)(
__inout PVOID Memory,
__in ULONG MemoryLength,
__in ULONG OptionFlags
);
typedef BOOL (APIENTRY *PFN_CRYPTPROTECTMEMORY)(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
typedef BOOL (APIENTRY *PFN_CRYPTUNPROTECTMEMORY)(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
// function declarations
HRESULT DAPI CrypInitialize();
void DAPI CrypUninitialize();
HRESULT DAPI CrypDecodeObject(
__in_z LPCSTR szStructType,
__in_ecount(cbData) const BYTE* pbData,
__in DWORD cbData,
__in DWORD dwFlags,
__out LPVOID* ppvObject,
__out_opt DWORD* pcbObject
);
HRESULT DAPI CrypMsgGetParam(
__in HCRYPTMSG hCryptMsg,
__in DWORD dwType,
__in DWORD dwIndex,
__out LPVOID* ppvData,
__out_opt DWORD* pcbData
);
HRESULT DAPI CrypHashFile(
__in_z LPCWSTR wzFilePath,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash,
__out_opt DWORD64* pqwBytesHashed
);
HRESULT DAPI CrypHashFileHandle(
__in HANDLE hFile,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash,
__out_opt DWORD64* pqwBytesHashed
);
HRESULT DAPI CrypHashBuffer(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash
);
HRESULT DAPI CrypEncryptMemory(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
HRESULT DAPI CrypDecryptMemory(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#define ReleaseCryptMsg(p) if (p) { ::CryptMsgClose(p); p = NULL; }
#ifdef __cplusplus
extern "C" {
#endif
// Use CRYPTPROTECTMEMORY_BLOCK_SIZE, because it's larger and thus more restrictive than RTL_ENCRYPT_MEMORY_SIZE.
#define CRYP_ENCRYPT_MEMORY_SIZE CRYPTPROTECTMEMORY_BLOCK_SIZE
#define SHA1_HASH_LEN 20
typedef NTSTATUS (APIENTRY *PFN_RTLENCRYPTMEMORY)(
__inout PVOID Memory,
__in ULONG MemoryLength,
__in ULONG OptionFlags
);
typedef NTSTATUS (APIENTRY *PFN_RTLDECRYPTMEMORY)(
__inout PVOID Memory,
__in ULONG MemoryLength,
__in ULONG OptionFlags
);
typedef BOOL (APIENTRY *PFN_CRYPTPROTECTMEMORY)(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
typedef BOOL (APIENTRY *PFN_CRYPTUNPROTECTMEMORY)(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
// function declarations
HRESULT DAPI CrypInitialize();
void DAPI CrypUninitialize();
HRESULT DAPI CrypDecodeObject(
__in_z LPCSTR szStructType,
__in_ecount(cbData) const BYTE* pbData,
__in DWORD cbData,
__in DWORD dwFlags,
__out LPVOID* ppvObject,
__out_opt DWORD* pcbObject
);
HRESULT DAPI CrypMsgGetParam(
__in HCRYPTMSG hCryptMsg,
__in DWORD dwType,
__in DWORD dwIndex,
__out LPVOID* ppvData,
__out_opt DWORD* pcbData
);
HRESULT DAPI CrypHashFile(
__in_z LPCWSTR wzFilePath,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash,
__out_opt DWORD64* pqwBytesHashed
);
HRESULT DAPI CrypHashFileHandle(
__in HANDLE hFile,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash,
__out_opt DWORD64* pqwBytesHashed
);
HRESULT DAPI CrypHashBuffer(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__in DWORD dwProvType,
__in ALG_ID algid,
__out_bcount(cbHash) BYTE* pbHash,
__in DWORD cbHash
);
HRESULT DAPI CrypEncryptMemory(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
HRESULT DAPI CrypDecryptMemory(
__inout LPVOID pData,
__in DWORD cbData,
__in DWORD dwFlags
);
#ifdef __cplusplus
}
#endif
+130 -130
View File
@@ -1,130 +1,130 @@
#pragma once
// 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.
#define GLOBAL_ERROR_BASE 25501
#define msierrSecureObjectsFailedCreateSD 25520
#define msierrSecureObjectsFailedSet 25521
#define msierrSecureObjectsUnknownType 25522
#define msierrXmlFileFailedRead 25530
#define msierrXmlFileFailedOpen 25531
#define msierrXmlFileFailedSelect 25532
#define msierrXmlFileFailedSave 25533
#define msierrXmlConfigFailedRead 25540
#define msierrXmlConfigFailedOpen 25541
#define msierrXmlConfigFailedSelect 25542
#define msierrXmlConfigFailedSave 25543
#define msierrFirewallCannotConnect 25580
//---------------------------------------------------------------------------
// Server CustomAction Errors
// SERVER range: 26001-26100
#define SERVER_ERROR_BASE 26000
#define msierrIISCannotConnect 26001
#define msierrIISFailedReadWebSite 26002
#define msierrIISFailedReadWebDirs 26003
#define msierrIISFailedReadVDirs 26004
#define msierrIISFailedReadFilters 26005
#define msierrIISFailedReadAppPool 26006
#define msierrIISFailedReadMimeMap 26007
#define msierrIISFailedReadProp 26008
#define msierrIISFailedReadWebSvcExt 26009
#define msierrIISFailedReadWebError 26010
#define msierrIISFailedReadHttpHeader 26011
#define msierrIISFailedSchedTransaction 26031
#define msierrIISFailedSchedInstallWebs 26032
#define msierrIISFailedSchedInstallWebDirs 26033
#define msierrIISFailedSchedInstallVDirs 26034
#define msierrIISFailedSchedInstallFilters 26035
#define msierrIISFailedSchedInstallAppPool 26036
#define msierrIISFailedSchedInstallProp 26037
#define msierrIISFailedSchedInstallWebSvcExt 26038
#define msierrIISFailedSchedUninstallWebs 26051
#define msierrIISFailedSchedUninstallWebDirs 26052
#define msierrIISFailedSchedUninstallVDirs 26053
#define msierrIISFailedSchedUninstallFilters 26054
#define msierrIISFailedSchedUninstallAppPool 26055
#define msierrIISFailedSchedUninstallProp 26056
#define msierrIISFailedSchedUninstallWebSvcExt 26057
#define msierrIISFailedStartTransaction 26101
#define msierrIISFailedOpenKey 26102
#define msierrIISFailedCreateKey 26103
#define msierrIISFailedWriteData 26104
#define msierrIISFailedCreateApp 26105
#define msierrIISFailedDeleteKey 26106
#define msierrIISFailedDeleteApp 26107
#define msierrIISFailedDeleteValue 26108
#define msierrIISFailedCommitInUse 26109
#define msierrSQLFailedCreateDatabase 26201
#define msierrSQLFailedDropDatabase 26202
#define msierrSQLFailedConnectDatabase 26203
#define msierrSQLFailedExecString 26204
#define msierrSQLDatabaseAlreadyExists 26205
#define msierrPERFMONFailedRegisterDLL 26251
#define msierrPERFMONFailedUnregisterDLL 26252
#define msierrInstallPerfCounterData 26253
#define msierrUninstallPerfCounterData 26254
#define msierrSMBFailedCreate 26301
#define msierrSMBFailedDrop 26302
#define msierrCERTFailedOpen 26351
#define msierrCERTFailedAdd 26352
#define msierrUSRFailedUserCreate 26401
#define msierrUSRFailedUserCreatePswd 26402
#define msierrUSRFailedUserGroupAdd 26403
#define msierrUSRFailedUserCreateExists 26404
#define msierrUSRFailedGrantLogonAsService 26405
#define msierrDependencyMissingDependencies 26451
#define msierrDependencyHasDependents 26452
//--------------------------------------------------------------------------
// Managed code CustomAction Errors
// MANAGED range: 27000-27100
#define MANAGED_ERROR_BASE 27000
#define msierrDotNetRuntimeRequired 27000
//---------------------------------------------------------------------------
// Public CustomAction Errors
// PUBLIC range: 28001-28100
#define PUBLIC_ERROR_BASE 28000
#define msierrComPlusCannotConnect 28001
#define msierrComPlusPartitionReadFailed 28002
#define msierrComPlusPartitionRoleReadFailed 28003
#define msierrComPlusUserInPartitionRoleReadFailed 28004
#define msierrComPlusPartitionUserReadFailed 28005
#define msierrComPlusApplicationReadFailed 28006
#define msierrComPlusApplicationRoleReadFailed 28007
#define msierrComPlusUserInApplicationRoleReadFailed 28008
#define msierrComPlusAssembliesReadFailed 28009
#define msierrComPlusSubscriptionReadFailed 28010
#define msierrComPlusPartitionDependency 28011
#define msierrComPlusPartitionNotFound 28012
#define msierrComPlusPartitionIdConflict 28013
#define msierrComPlusPartitionNameConflict 28014
#define msierrComPlusApplicationDependency 28015
#define msierrComPlusApplicationNotFound 28016
#define msierrComPlusApplicationIdConflict 28017
#define msierrComPlusApplicationNameConflict 28018
#define msierrComPlusApplicationRoleDependency 28019
#define msierrComPlusApplicationRoleNotFound 28020
#define msierrComPlusApplicationRoleConflict 28021
#define msierrComPlusAssemblyDependency 28022
#define msierrComPlusSubscriptionIdConflict 28023
#define msierrComPlusSubscriptionNameConflict 28024
#define msierrComPlusFailedLookupNames 28025
#define msierrMsmqCannotConnect 28101
#pragma once
// 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.
#define GLOBAL_ERROR_BASE 25501
#define msierrSecureObjectsFailedCreateSD 25520
#define msierrSecureObjectsFailedSet 25521
#define msierrSecureObjectsUnknownType 25522
#define msierrXmlFileFailedRead 25530
#define msierrXmlFileFailedOpen 25531
#define msierrXmlFileFailedSelect 25532
#define msierrXmlFileFailedSave 25533
#define msierrXmlConfigFailedRead 25540
#define msierrXmlConfigFailedOpen 25541
#define msierrXmlConfigFailedSelect 25542
#define msierrXmlConfigFailedSave 25543
#define msierrFirewallCannotConnect 25580
//---------------------------------------------------------------------------
// Server CustomAction Errors
// SERVER range: 26001-26100
#define SERVER_ERROR_BASE 26000
#define msierrIISCannotConnect 26001
#define msierrIISFailedReadWebSite 26002
#define msierrIISFailedReadWebDirs 26003
#define msierrIISFailedReadVDirs 26004
#define msierrIISFailedReadFilters 26005
#define msierrIISFailedReadAppPool 26006
#define msierrIISFailedReadMimeMap 26007
#define msierrIISFailedReadProp 26008
#define msierrIISFailedReadWebSvcExt 26009
#define msierrIISFailedReadWebError 26010
#define msierrIISFailedReadHttpHeader 26011
#define msierrIISFailedSchedTransaction 26031
#define msierrIISFailedSchedInstallWebs 26032
#define msierrIISFailedSchedInstallWebDirs 26033
#define msierrIISFailedSchedInstallVDirs 26034
#define msierrIISFailedSchedInstallFilters 26035
#define msierrIISFailedSchedInstallAppPool 26036
#define msierrIISFailedSchedInstallProp 26037
#define msierrIISFailedSchedInstallWebSvcExt 26038
#define msierrIISFailedSchedUninstallWebs 26051
#define msierrIISFailedSchedUninstallWebDirs 26052
#define msierrIISFailedSchedUninstallVDirs 26053
#define msierrIISFailedSchedUninstallFilters 26054
#define msierrIISFailedSchedUninstallAppPool 26055
#define msierrIISFailedSchedUninstallProp 26056
#define msierrIISFailedSchedUninstallWebSvcExt 26057
#define msierrIISFailedStartTransaction 26101
#define msierrIISFailedOpenKey 26102
#define msierrIISFailedCreateKey 26103
#define msierrIISFailedWriteData 26104
#define msierrIISFailedCreateApp 26105
#define msierrIISFailedDeleteKey 26106
#define msierrIISFailedDeleteApp 26107
#define msierrIISFailedDeleteValue 26108
#define msierrIISFailedCommitInUse 26109
#define msierrSQLFailedCreateDatabase 26201
#define msierrSQLFailedDropDatabase 26202
#define msierrSQLFailedConnectDatabase 26203
#define msierrSQLFailedExecString 26204
#define msierrSQLDatabaseAlreadyExists 26205
#define msierrPERFMONFailedRegisterDLL 26251
#define msierrPERFMONFailedUnregisterDLL 26252
#define msierrInstallPerfCounterData 26253
#define msierrUninstallPerfCounterData 26254
#define msierrSMBFailedCreate 26301
#define msierrSMBFailedDrop 26302
#define msierrCERTFailedOpen 26351
#define msierrCERTFailedAdd 26352
#define msierrUSRFailedUserCreate 26401
#define msierrUSRFailedUserCreatePswd 26402
#define msierrUSRFailedUserGroupAdd 26403
#define msierrUSRFailedUserCreateExists 26404
#define msierrUSRFailedGrantLogonAsService 26405
#define msierrDependencyMissingDependencies 26451
#define msierrDependencyHasDependents 26452
//--------------------------------------------------------------------------
// Managed code CustomAction Errors
// MANAGED range: 27000-27100
#define MANAGED_ERROR_BASE 27000
#define msierrDotNetRuntimeRequired 27000
//---------------------------------------------------------------------------
// Public CustomAction Errors
// PUBLIC range: 28001-28100
#define PUBLIC_ERROR_BASE 28000
#define msierrComPlusCannotConnect 28001
#define msierrComPlusPartitionReadFailed 28002
#define msierrComPlusPartitionRoleReadFailed 28003
#define msierrComPlusUserInPartitionRoleReadFailed 28004
#define msierrComPlusPartitionUserReadFailed 28005
#define msierrComPlusApplicationReadFailed 28006
#define msierrComPlusApplicationRoleReadFailed 28007
#define msierrComPlusUserInApplicationRoleReadFailed 28008
#define msierrComPlusAssembliesReadFailed 28009
#define msierrComPlusSubscriptionReadFailed 28010
#define msierrComPlusPartitionDependency 28011
#define msierrComPlusPartitionNotFound 28012
#define msierrComPlusPartitionIdConflict 28013
#define msierrComPlusPartitionNameConflict 28014
#define msierrComPlusApplicationDependency 28015
#define msierrComPlusApplicationNotFound 28016
#define msierrComPlusApplicationIdConflict 28017
#define msierrComPlusApplicationNameConflict 28018
#define msierrComPlusApplicationRoleDependency 28019
#define msierrComPlusApplicationRoleNotFound 28020
#define msierrComPlusApplicationRoleConflict 28021
#define msierrComPlusAssemblyDependency 28022
#define msierrComPlusSubscriptionIdConflict 28023
#define msierrComPlusSubscriptionNameConflict 28024
#define msierrComPlusFailedLookupNames 28025
#define msierrMsmqCannotConnect 28101
+147 -147
View File
@@ -1,147 +1,147 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); }
#define ReleaseNullDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); rg = NULL; }
typedef struct _DEPENDENCY
{
LPWSTR sczKey;
LPWSTR sczName;
} DEPENDENCY;
/***************************************************************************
DepGetProviderInformation - gets the various pieces of data registered
with a dependency.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepGetProviderInformation(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__deref_out_z_opt LPWSTR* psczId,
__deref_out_z_opt LPWSTR* psczName,
__out_opt DWORD64* pqwVersion
);
/***************************************************************************
DepCheckDependency - Checks that the dependency is registered and within
the proper version range.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes,
__in STRINGDICT_HANDLE sdDependencies,
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies
);
/***************************************************************************
DepCheckDependents - Checks if any dependents are still installed for the
given provider key.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependents(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in int iAttributes,
__in C_STRINGDICT_HANDLE sdIgnoredDependents,
__deref_inout_ecount_opt(*pcDependents) DEPENDENCY** prgDependents,
__inout LPUINT pcDependents
);
/***************************************************************************
DepRegisterDependency - Registers the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z LPCWSTR wzVersion,
__in_z LPCWSTR wzDisplayName,
__in_z_opt LPCWSTR wzId,
__in int iAttributes
);
/***************************************************************************
DepDependentExists - Determines if a dependent is registered.
Note: Returns S_OK if dependent is registered.
Returns E_FILENOTFOUND if dependent is not registered
***************************************************************************/
DAPI_(HRESULT) DepDependentExists(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepRegisterDependent - Registers a dependent under the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes
);
/***************************************************************************
DepUnregisterDependency - Removes the dependency provider.
Note: Caller should call CheckDependents prior to remove a dependency.
Returns E_FILENOTFOUND if the dependency is not registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepUnregisterDependent - Removes a dependent under the dependency provider.
Note: Returns E_FILENOTFOUND if neither the dependency or dependent are
registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DependencyArrayAlloc - Allocates or expands an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(HRESULT) DepDependencyArrayAlloc(
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies,
__in_z LPCWSTR wzKey,
__in_z_opt LPCWSTR wzName
);
/***************************************************************************
DepDependencyArrayFree - Frees an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(void) DepDependencyArrayFree(
__in_ecount(cDependencies) DEPENDENCY* rgDependencies,
__in UINT cDependencies
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); }
#define ReleaseNullDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); rg = NULL; }
typedef struct _DEPENDENCY
{
LPWSTR sczKey;
LPWSTR sczName;
} DEPENDENCY;
/***************************************************************************
DepGetProviderInformation - gets the various pieces of data registered
with a dependency.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepGetProviderInformation(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__deref_out_z_opt LPWSTR* psczId,
__deref_out_z_opt LPWSTR* psczName,
__out_opt DWORD64* pqwVersion
);
/***************************************************************************
DepCheckDependency - Checks that the dependency is registered and within
the proper version range.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes,
__in STRINGDICT_HANDLE sdDependencies,
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies
);
/***************************************************************************
DepCheckDependents - Checks if any dependents are still installed for the
given provider key.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependents(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in int iAttributes,
__in C_STRINGDICT_HANDLE sdIgnoredDependents,
__deref_inout_ecount_opt(*pcDependents) DEPENDENCY** prgDependents,
__inout LPUINT pcDependents
);
/***************************************************************************
DepRegisterDependency - Registers the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z LPCWSTR wzVersion,
__in_z LPCWSTR wzDisplayName,
__in_z_opt LPCWSTR wzId,
__in int iAttributes
);
/***************************************************************************
DepDependentExists - Determines if a dependent is registered.
Note: Returns S_OK if dependent is registered.
Returns E_FILENOTFOUND if dependent is not registered
***************************************************************************/
DAPI_(HRESULT) DepDependentExists(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepRegisterDependent - Registers a dependent under the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes
);
/***************************************************************************
DepUnregisterDependency - Removes the dependency provider.
Note: Caller should call CheckDependents prior to remove a dependency.
Returns E_FILENOTFOUND if the dependency is not registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepUnregisterDependent - Removes a dependent under the dependency provider.
Note: Returns E_FILENOTFOUND if neither the dependency or dependent are
registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DependencyArrayAlloc - Allocates or expands an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(HRESULT) DepDependencyArrayAlloc(
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies,
__in_z LPCWSTR wzKey,
__in_z_opt LPCWSTR wzName
);
/***************************************************************************
DepDependencyArrayFree - Frees an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(void) DepDependencyArrayFree(
__in_ecount(cDependencies) DEPENDENCY* rgDependencies,
__in UINT cDependencies
);
#ifdef __cplusplus
}
#endif
+69 -69
View File
@@ -1,69 +1,69 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseDict(sdh) if (sdh) { DictDestroy(sdh); }
#define ReleaseNullDict(sdh) if (sdh) { DictDestroy(sdh); sdh = NULL; }
typedef void* STRINGDICT_HANDLE;
typedef const void* C_STRINGDICT_HANDLE;
extern const int STRINGDICT_HANDLE_BYTES;
typedef enum DICT_FLAG
{
DICT_FLAG_NONE = 0,
DICT_FLAG_CASEINSENSITIVE = 1
} DICT_FLAG;
HRESULT DAPI DictCreateWithEmbeddedKey(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in DWORD dwNumExpectedItems,
__in_opt void **ppvArray,
__in size_t cByteOffset,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCreateStringList(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in DWORD dwNumExpectedItems,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCreateStringListFromArray(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in_ecount(cStringArray) const LPCWSTR* rgwzStringArray,
__in const DWORD cStringArray,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCompareStringListToArray(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdStringList,
__in_ecount(cStringArray) const LPCWSTR* rgwzStringArray,
__in const DWORD cStringArray
);
HRESULT DAPI DictAddKey(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString
);
HRESULT DAPI DictAddValue(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle,
__in void *pvValue
);
HRESULT DAPI DictKeyExists(
__in_bcount(STRINGDICT_HANDLE_BYTES) C_STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString
);
HRESULT DAPI DictGetValue(
__in_bcount(STRINGDICT_HANDLE_BYTES) C_STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString,
__out void **ppvValue
);
void DAPI DictDestroy(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseDict(sdh) if (sdh) { DictDestroy(sdh); }
#define ReleaseNullDict(sdh) if (sdh) { DictDestroy(sdh); sdh = NULL; }
typedef void* STRINGDICT_HANDLE;
typedef const void* C_STRINGDICT_HANDLE;
extern const int STRINGDICT_HANDLE_BYTES;
typedef enum DICT_FLAG
{
DICT_FLAG_NONE = 0,
DICT_FLAG_CASEINSENSITIVE = 1
} DICT_FLAG;
HRESULT DAPI DictCreateWithEmbeddedKey(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in DWORD dwNumExpectedItems,
__in_opt void **ppvArray,
__in size_t cByteOffset,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCreateStringList(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in DWORD dwNumExpectedItems,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCreateStringListFromArray(
__out_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE* psdHandle,
__in_ecount(cStringArray) const LPCWSTR* rgwzStringArray,
__in const DWORD cStringArray,
__in DICT_FLAG dfFlags
);
HRESULT DAPI DictCompareStringListToArray(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdStringList,
__in_ecount(cStringArray) const LPCWSTR* rgwzStringArray,
__in const DWORD cStringArray
);
HRESULT DAPI DictAddKey(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString
);
HRESULT DAPI DictAddValue(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle,
__in void *pvValue
);
HRESULT DAPI DictKeyExists(
__in_bcount(STRINGDICT_HANDLE_BYTES) C_STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString
);
HRESULT DAPI DictGetValue(
__in_bcount(STRINGDICT_HANDLE_BYTES) C_STRINGDICT_HANDLE sdHandle,
__in_z LPCWSTR szString,
__out void **ppvValue
);
void DAPI DictDestroy(
__in_bcount(STRINGDICT_HANDLE_BYTES) STRINGDICT_HANDLE sdHandle
);
#ifdef __cplusplus
}
#endif
+59 -59
View File
@@ -1,59 +1,59 @@
#pragma once
// 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.
typedef enum DIR_DELETE
{
DIR_DELETE_FILES = 1,
DIR_DELETE_RECURSE = 2,
DIR_DELETE_SCHEDULE = 4,
} DIR_DELETE;
#ifdef __cplusplus
extern "C" {
#endif
BOOL DAPI DirExists(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
HRESULT DAPI DirCreateTempPath(
__in_z LPCWSTR wzPrefix,
__out_ecount_z(cchPath) LPWSTR wzPath,
__in DWORD cchPath
);
HRESULT DAPI DirEnsureExists(
__in_z LPCWSTR wzPath,
__in_opt LPSECURITY_ATTRIBUTES psa
);
HRESULT DAPI DirEnsureDelete(
__in_z LPCWSTR wzPath,
__in BOOL fDeleteFiles,
__in BOOL fRecurse
);
HRESULT DAPI DirEnsureDeleteEx(
__in_z LPCWSTR wzPath,
__in DWORD dwFlags
);
DWORD DAPI DirDeleteEmptyDirectoriesToRoot(
__in_z LPCWSTR wzPath,
__in DWORD dwFlags
);
HRESULT DAPI DirGetCurrent(
__deref_out_z LPWSTR* psczCurrentDirectory
);
HRESULT DAPI DirSetCurrent(
__in_z LPCWSTR wzDirectory
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
typedef enum DIR_DELETE
{
DIR_DELETE_FILES = 1,
DIR_DELETE_RECURSE = 2,
DIR_DELETE_SCHEDULE = 4,
} DIR_DELETE;
#ifdef __cplusplus
extern "C" {
#endif
BOOL DAPI DirExists(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
HRESULT DAPI DirCreateTempPath(
__in_z LPCWSTR wzPrefix,
__out_ecount_z(cchPath) LPWSTR wzPath,
__in DWORD cchPath
);
HRESULT DAPI DirEnsureExists(
__in_z LPCWSTR wzPath,
__in_opt LPSECURITY_ATTRIBUTES psa
);
HRESULT DAPI DirEnsureDelete(
__in_z LPCWSTR wzPath,
__in BOOL fDeleteFiles,
__in BOOL fRecurse
);
HRESULT DAPI DirEnsureDeleteEx(
__in_z LPCWSTR wzPath,
__in DWORD dwFlags
);
DWORD DAPI DirDeleteEmptyDirectoriesToRoot(
__in_z LPCWSTR wzPath,
__in DWORD dwFlags
);
HRESULT DAPI DirGetCurrent(
__deref_out_z LPWSTR* psczCurrentDirectory
);
HRESULT DAPI DirSetCurrent(
__in_z LPCWSTR wzDirectory
);
#ifdef __cplusplus
}
#endif
+59 -59
View File
@@ -1,59 +1,59 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef HRESULT (WINAPI *LPAUTHENTICATION_ROUTINE)(
__in LPVOID pVoid,
__in HINTERNET hUrl,
__in long lHttpCode,
__out BOOL* pfRetrySend,
__out BOOL* pfRetry
);
typedef int (WINAPI *LPCANCEL_ROUTINE)(
__in HRESULT hrError,
__in_z_opt LPCWSTR wzError,
__in BOOL fAllowRetry,
__in_opt LPVOID pvContext
);
// structs
typedef struct _DOWNLOAD_SOURCE
{
LPWSTR sczUrl;
LPWSTR sczUser;
LPWSTR sczPassword;
} DOWNLOAD_SOURCE;
typedef struct _DOWNLOAD_CACHE_CALLBACK
{
LPPROGRESS_ROUTINE pfnProgress;
LPCANCEL_ROUTINE pfnCancel;
LPVOID pv;
} DOWNLOAD_CACHE_CALLBACK;
typedef struct _DOWNLOAD_AUTHENTICATION_CALLBACK
{
LPAUTHENTICATION_ROUTINE pfnAuthenticate;
LPVOID pv;
} DOWNLOAD_AUTHENTICATION_CALLBACK;
// functions
HRESULT DAPI DownloadUrl(
__in DOWNLOAD_SOURCE* pDownloadSource,
__in DWORD64 dw64AuthoredDownloadSize,
__in LPCWSTR wzDestinationPath,
__in_opt DOWNLOAD_CACHE_CALLBACK* pCache,
__in_opt DOWNLOAD_AUTHENTICATION_CALLBACK* pAuthenticate
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef HRESULT (WINAPI *LPAUTHENTICATION_ROUTINE)(
__in LPVOID pVoid,
__in HINTERNET hUrl,
__in long lHttpCode,
__out BOOL* pfRetrySend,
__out BOOL* pfRetry
);
typedef int (WINAPI *LPCANCEL_ROUTINE)(
__in HRESULT hrError,
__in_z_opt LPCWSTR wzError,
__in BOOL fAllowRetry,
__in_opt LPVOID pvContext
);
// structs
typedef struct _DOWNLOAD_SOURCE
{
LPWSTR sczUrl;
LPWSTR sczUser;
LPWSTR sczPassword;
} DOWNLOAD_SOURCE;
typedef struct _DOWNLOAD_CACHE_CALLBACK
{
LPPROGRESS_ROUTINE pfnProgress;
LPCANCEL_ROUTINE pfnCancel;
LPVOID pv;
} DOWNLOAD_CACHE_CALLBACK;
typedef struct _DOWNLOAD_AUTHENTICATION_CALLBACK
{
LPAUTHENTICATION_ROUTINE pfnAuthenticate;
LPVOID pv;
} DOWNLOAD_AUTHENTICATION_CALLBACK;
// functions
HRESULT DAPI DownloadUrl(
__in DOWNLOAD_SOURCE* pDownloadSource,
__in DWORD64 dw64AuthoredDownloadSize,
__in LPCWSTR wzDestinationPath,
__in_opt DOWNLOAD_CACHE_CALLBACK* pCache,
__in_opt DOWNLOAD_AUTHENTICATION_CALLBACK* pAuthenticate
);
#ifdef __cplusplus
}
#endif
+214 -214
View File
@@ -1,214 +1,214 @@
#pragma once
// 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.
#define DAPI __stdcall
#define DAPIV __cdecl // used only for functions taking variable length arguments
#define DAPI_(type) EXTERN_C type DAPI
#define DAPIV_(type) EXTERN_C type DAPIV
// enums
typedef enum REPORT_LEVEL
{
REPORT_NONE, // turns off report (only valid for XXXSetLevel())
REPORT_WARNING, // written if want only warnings or reporting is on in general
REPORT_STANDARD, // written if reporting is on
REPORT_VERBOSE, // written only if verbose reporting is on
REPORT_DEBUG, // reporting useful when debugging code
REPORT_ERROR, // always gets reported, but can never be specified
} REPORT_LEVEL;
// asserts and traces
typedef BOOL (DAPI *DUTIL_ASSERTDISPLAYFUNCTION)(__in_z LPCSTR sz);
#ifdef __cplusplus
extern "C" {
#endif
void DAPI Dutil_SetAssertModule(__in HMODULE hAssertModule);
void DAPI Dutil_SetAssertDisplayFunction(__in DUTIL_ASSERTDISPLAYFUNCTION pfn);
void DAPI Dutil_Assert(__in_z LPCSTR szFile, __in int iLine);
void DAPI Dutil_AssertSz(__in_z LPCSTR szFile, __in int iLine, __in_z LPCSTR szMessage);
void DAPI Dutil_TraceSetLevel(__in REPORT_LEVEL ll, __in BOOL fTraceFilenames);
REPORT_LEVEL DAPI Dutil_TraceGetLevel();
void __cdecl Dutil_Trace(__in_z LPCSTR szFile, __in int iLine, __in REPORT_LEVEL rl, __in_z __format_string LPCSTR szMessage, ...);
void __cdecl Dutil_TraceError(__in_z LPCSTR szFile, __in int iLine, __in REPORT_LEVEL rl, __in HRESULT hr, __in_z __format_string LPCSTR szMessage, ...);
void DAPI Dutil_RootFailure(__in_z LPCSTR szFile, __in int iLine, __in HRESULT hrError);
#ifdef __cplusplus
}
#endif
#ifdef DEBUG
#define AssertSetModule(m) (void)Dutil_SetAssertModule(m)
#define AssertSetDisplayFunction(pfn) (void)Dutil_SetAssertDisplayFunction(pfn)
#define Assert(f) ((f) ? (void)0 : (void)Dutil_Assert(__FILE__, __LINE__))
#define AssertSz(f, sz) ((f) ? (void)0 : (void)Dutil_AssertSz(__FILE__, __LINE__, sz))
#define TraceSetLevel(l, f) (void)Dutil_TraceSetLevel(l, f)
#define TraceGetLevel() (REPORT_LEVEL)Dutil_TraceGetLevel()
#define Trace(l, f, ...) (void)Dutil_Trace(__FILE__, __LINE__, l, f, __VA_ARGS__)
#define TraceError(x, f, ...) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, __VA_ARGS__)
#define TraceErrorDebug(x, f, ...) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, __VA_ARGS__)
#else // !DEBUG
#define AssertSetModule(m)
#define AssertSetDisplayFunction(pfn)
#define Assert(f)
#define AssertSz(f, sz)
#define TraceSetLevel(l, f)
#define Trace(l, f, ...)
#define TraceError(x, f, ...)
#define TraceErrorDebug(x, f, ...)
#endif // DEBUG
#define Trace1 Trace
#define Trace2 Trace
#define Trace3 Trace
#define TraceError1 TraceError
#define TraceError2 TraceError
#define TraceError3 TraceError
#define TraceErrorDebug1 TraceErrorDebug
#define TraceErrorDebug2 TraceErrorDebug
#define TraceErrorDebug3 TraceErrorDebug
// ExitTrace can be overriden
#ifndef ExitTrace
#define ExitTrace TraceError
#endif
#ifndef ExitTrace1
#define ExitTrace1 TraceError1
#endif
#ifndef ExitTrace2
#define ExitTrace2 TraceError2
#endif
#ifndef ExitTrace3
#define ExitTrace3 TraceError3
#endif
// Exit macros
#define ExitFunction() { goto LExit; }
#define ExitFunction1(x) { x; goto LExit; }
#define ExitFunctionWithLastError(x) { x = HRESULT_FROM_WIN32(::GetLastError()); goto LExit; }
#define ExitOnLastError(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; } }
#define ExitOnLastError1 ExitOnLastError
#define ExitOnLastError2 ExitOnLastError
#define ExitOnLastErrorDebugTrace(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; } }
#define ExitOnLastErrorDebugTrace1 ExitOnLastErrorDebugTrace
#define ExitOnLastErrorDebugTrace2 ExitOnLastErrorDebugTrace
#define ExitWithLastError(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitWithLastError1 ExitWithLastError
#define ExitWithLastError2 ExitWithLastError
#define ExitWithLastError3 ExitWithLastError
#define ExitOnFailure(x, s, ...) if (FAILED(x)) { ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnFailure1 ExitOnFailure
#define ExitOnFailure2 ExitOnFailure
#define ExitOnFailure3 ExitOnFailure
#define ExitOnRootFailure(x, s, ...) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnRootFailure1 ExitOnRootFailure
#define ExitOnRootFailure2 ExitOnRootFailure
#define ExitOnRootFailure3 ExitOnRootFailure
#define ExitOnFailureDebugTrace(x, s, ...) if (FAILED(x)) { TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnFailureDebugTrace1 ExitOnFailureDebugTrace
#define ExitOnFailureDebugTrace2 ExitOnFailureDebugTrace
#define ExitOnFailureDebugTrace3 ExitOnFailureDebugTrace
#define ExitOnNull(p, x, e, s, ...) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNull1 ExitOnNull
#define ExitOnNull2 ExitOnNull
#define ExitOnNullWithLastError(p, x, s, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNullWithLastError1 ExitOnNullWithLastError
#define ExitOnNullDebugTrace(p, x, e, s, ...) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNullDebugTrace1 ExitOnNullDebugTrace
#define ExitOnInvalidHandleWithLastError(p, x, s, ...) if (INVALID_HANDLE_VALUE == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnInvalidHandleWithLastError1 ExitOnInvalidHandleWithLastError
#define ExitOnWin32Error(e, x, s, ...) if (ERROR_SUCCESS != e) { x = HRESULT_FROM_WIN32(e); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnWin32Error1 ExitOnWin32Error
#define ExitOnWin32Error2 ExitOnWin32Error
// release macros
#define ReleaseObject(x) if (x) { x->Release(); }
#define ReleaseObjectArray(prg, cel) if (prg) { for (DWORD Dutil_ReleaseObjectArrayIndex = 0; Dutil_ReleaseObjectArrayIndex < cel; ++Dutil_ReleaseObjectArrayIndex) { ReleaseObject(prg[Dutil_ReleaseObjectArrayIndex]); } ReleaseMem(prg); }
#define ReleaseVariant(x) { ::VariantClear(&x); }
#define ReleaseNullObject(x) if (x) { (x)->Release(); x = NULL; }
#define ReleaseCertificate(x) if (x) { ::CertFreeCertificateContext(x); x=NULL; }
#define ReleaseHandle(x) if (x) { ::CloseHandle(x); x = NULL; }
// useful defines and macros
#define Unused(x) ((void)x)
#ifndef countof
#if 1
#define countof(ary) (sizeof(ary) / sizeof(ary[0]))
#else
#ifndef __cplusplus
#define countof(ary) (sizeof(ary) / sizeof(ary[0]))
#else
template<typename T> static char countofVerify(void const *, T) throw() { return 0; }
template<typename T> static void countofVerify(T *const, T *const *) throw() {};
#define countof(arr) (sizeof(countofVerify(arr,&(arr))) * sizeof(arr)/sizeof(*(arr)))
#endif
#endif
#endif
#define roundup(x, n) roundup_typed(x, n, DWORD)
#define roundup_typed(x, n, t) (((t)(x) + ((t)(n) - 1)) & ~((t)(n) - 1))
#define HRESULT_FROM_RPC(x) ((HRESULT) ((x) | FACILITY_RPC))
#ifndef MAXSIZE_T
#define MAXSIZE_T ((SIZE_T)~((SIZE_T)0))
#endif
typedef const BYTE* LPCBYTE;
#define E_FILENOTFOUND HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
#define E_PATHNOTFOUND HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)
#define E_INVALIDDATA HRESULT_FROM_WIN32(ERROR_INVALID_DATA)
#define E_INVALIDSTATE HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
#define E_INSUFFICIENT_BUFFER HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
#define E_MOREDATA HRESULT_FROM_WIN32(ERROR_MORE_DATA)
#define E_NOMOREITEMS HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS)
#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
#define E_MODNOTFOUND HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND)
#define E_BADCONFIGURATION HRESULT_FROM_WIN32(ERROR_BAD_CONFIGURATION)
#define AddRefAndRelease(x) { x->AddRef(); x->Release(); }
#define MAKEDWORD(lo, hi) ((DWORD)MAKELONG(lo, hi))
#define MAKEQWORDVERSION(mj, mi, b, r) (((DWORD64)MAKELONG(r, b)) | (((DWORD64)MAKELONG(mi, mj)) << 32))
#ifdef __cplusplus
extern "C" {
#endif
// other functions
HRESULT DAPI LoadSystemLibrary(__in_z LPCWSTR wzModuleName, __out HMODULE *phModule);
HRESULT DAPI LoadSystemLibraryWithPath(__in_z LPCWSTR wzModuleName, __out HMODULE *phModule, __deref_out_z_opt LPWSTR* psczPath);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#define DAPI __stdcall
#define DAPIV __cdecl // used only for functions taking variable length arguments
#define DAPI_(type) EXTERN_C type DAPI
#define DAPIV_(type) EXTERN_C type DAPIV
// enums
typedef enum REPORT_LEVEL
{
REPORT_NONE, // turns off report (only valid for XXXSetLevel())
REPORT_WARNING, // written if want only warnings or reporting is on in general
REPORT_STANDARD, // written if reporting is on
REPORT_VERBOSE, // written only if verbose reporting is on
REPORT_DEBUG, // reporting useful when debugging code
REPORT_ERROR, // always gets reported, but can never be specified
} REPORT_LEVEL;
// asserts and traces
typedef BOOL (DAPI *DUTIL_ASSERTDISPLAYFUNCTION)(__in_z LPCSTR sz);
#ifdef __cplusplus
extern "C" {
#endif
void DAPI Dutil_SetAssertModule(__in HMODULE hAssertModule);
void DAPI Dutil_SetAssertDisplayFunction(__in DUTIL_ASSERTDISPLAYFUNCTION pfn);
void DAPI Dutil_Assert(__in_z LPCSTR szFile, __in int iLine);
void DAPI Dutil_AssertSz(__in_z LPCSTR szFile, __in int iLine, __in_z LPCSTR szMessage);
void DAPI Dutil_TraceSetLevel(__in REPORT_LEVEL ll, __in BOOL fTraceFilenames);
REPORT_LEVEL DAPI Dutil_TraceGetLevel();
void __cdecl Dutil_Trace(__in_z LPCSTR szFile, __in int iLine, __in REPORT_LEVEL rl, __in_z __format_string LPCSTR szMessage, ...);
void __cdecl Dutil_TraceError(__in_z LPCSTR szFile, __in int iLine, __in REPORT_LEVEL rl, __in HRESULT hr, __in_z __format_string LPCSTR szMessage, ...);
void DAPI Dutil_RootFailure(__in_z LPCSTR szFile, __in int iLine, __in HRESULT hrError);
#ifdef __cplusplus
}
#endif
#ifdef DEBUG
#define AssertSetModule(m) (void)Dutil_SetAssertModule(m)
#define AssertSetDisplayFunction(pfn) (void)Dutil_SetAssertDisplayFunction(pfn)
#define Assert(f) ((f) ? (void)0 : (void)Dutil_Assert(__FILE__, __LINE__))
#define AssertSz(f, sz) ((f) ? (void)0 : (void)Dutil_AssertSz(__FILE__, __LINE__, sz))
#define TraceSetLevel(l, f) (void)Dutil_TraceSetLevel(l, f)
#define TraceGetLevel() (REPORT_LEVEL)Dutil_TraceGetLevel()
#define Trace(l, f, ...) (void)Dutil_Trace(__FILE__, __LINE__, l, f, __VA_ARGS__)
#define TraceError(x, f, ...) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, __VA_ARGS__)
#define TraceErrorDebug(x, f, ...) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, __VA_ARGS__)
#else // !DEBUG
#define AssertSetModule(m)
#define AssertSetDisplayFunction(pfn)
#define Assert(f)
#define AssertSz(f, sz)
#define TraceSetLevel(l, f)
#define Trace(l, f, ...)
#define TraceError(x, f, ...)
#define TraceErrorDebug(x, f, ...)
#endif // DEBUG
#define Trace1 Trace
#define Trace2 Trace
#define Trace3 Trace
#define TraceError1 TraceError
#define TraceError2 TraceError
#define TraceError3 TraceError
#define TraceErrorDebug1 TraceErrorDebug
#define TraceErrorDebug2 TraceErrorDebug
#define TraceErrorDebug3 TraceErrorDebug
// ExitTrace can be overriden
#ifndef ExitTrace
#define ExitTrace TraceError
#endif
#ifndef ExitTrace1
#define ExitTrace1 TraceError1
#endif
#ifndef ExitTrace2
#define ExitTrace2 TraceError2
#endif
#ifndef ExitTrace3
#define ExitTrace3 TraceError3
#endif
// Exit macros
#define ExitFunction() { goto LExit; }
#define ExitFunction1(x) { x; goto LExit; }
#define ExitFunctionWithLastError(x) { x = HRESULT_FROM_WIN32(::GetLastError()); goto LExit; }
#define ExitOnLastError(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; } }
#define ExitOnLastError1 ExitOnLastError
#define ExitOnLastError2 ExitOnLastError
#define ExitOnLastErrorDebugTrace(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; } }
#define ExitOnLastErrorDebugTrace1 ExitOnLastErrorDebugTrace
#define ExitOnLastErrorDebugTrace2 ExitOnLastErrorDebugTrace
#define ExitWithLastError(x, s, ...) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitWithLastError1 ExitWithLastError
#define ExitWithLastError2 ExitWithLastError
#define ExitWithLastError3 ExitWithLastError
#define ExitOnFailure(x, s, ...) if (FAILED(x)) { ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnFailure1 ExitOnFailure
#define ExitOnFailure2 ExitOnFailure
#define ExitOnFailure3 ExitOnFailure
#define ExitOnRootFailure(x, s, ...) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnRootFailure1 ExitOnRootFailure
#define ExitOnRootFailure2 ExitOnRootFailure
#define ExitOnRootFailure3 ExitOnRootFailure
#define ExitOnFailureDebugTrace(x, s, ...) if (FAILED(x)) { TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnFailureDebugTrace1 ExitOnFailureDebugTrace
#define ExitOnFailureDebugTrace2 ExitOnFailureDebugTrace
#define ExitOnFailureDebugTrace3 ExitOnFailureDebugTrace
#define ExitOnNull(p, x, e, s, ...) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNull1 ExitOnNull
#define ExitOnNull2 ExitOnNull
#define ExitOnNullWithLastError(p, x, s, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNullWithLastError1 ExitOnNullWithLastError
#define ExitOnNullDebugTrace(p, x, e, s, ...) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnNullDebugTrace1 ExitOnNullDebugTrace
#define ExitOnInvalidHandleWithLastError(p, x, s, ...) if (INVALID_HANDLE_VALUE == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnInvalidHandleWithLastError1 ExitOnInvalidHandleWithLastError
#define ExitOnWin32Error(e, x, s, ...) if (ERROR_SUCCESS != e) { x = HRESULT_FROM_WIN32(e); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s, __VA_ARGS__); goto LExit; }
#define ExitOnWin32Error1 ExitOnWin32Error
#define ExitOnWin32Error2 ExitOnWin32Error
// release macros
#define ReleaseObject(x) if (x) { x->Release(); }
#define ReleaseObjectArray(prg, cel) if (prg) { for (DWORD Dutil_ReleaseObjectArrayIndex = 0; Dutil_ReleaseObjectArrayIndex < cel; ++Dutil_ReleaseObjectArrayIndex) { ReleaseObject(prg[Dutil_ReleaseObjectArrayIndex]); } ReleaseMem(prg); }
#define ReleaseVariant(x) { ::VariantClear(&x); }
#define ReleaseNullObject(x) if (x) { (x)->Release(); x = NULL; }
#define ReleaseCertificate(x) if (x) { ::CertFreeCertificateContext(x); x=NULL; }
#define ReleaseHandle(x) if (x) { ::CloseHandle(x); x = NULL; }
// useful defines and macros
#define Unused(x) ((void)x)
#ifndef countof
#if 1
#define countof(ary) (sizeof(ary) / sizeof(ary[0]))
#else
#ifndef __cplusplus
#define countof(ary) (sizeof(ary) / sizeof(ary[0]))
#else
template<typename T> static char countofVerify(void const *, T) throw() { return 0; }
template<typename T> static void countofVerify(T *const, T *const *) throw() {};
#define countof(arr) (sizeof(countofVerify(arr,&(arr))) * sizeof(arr)/sizeof(*(arr)))
#endif
#endif
#endif
#define roundup(x, n) roundup_typed(x, n, DWORD)
#define roundup_typed(x, n, t) (((t)(x) + ((t)(n) - 1)) & ~((t)(n) - 1))
#define HRESULT_FROM_RPC(x) ((HRESULT) ((x) | FACILITY_RPC))
#ifndef MAXSIZE_T
#define MAXSIZE_T ((SIZE_T)~((SIZE_T)0))
#endif
typedef const BYTE* LPCBYTE;
#define E_FILENOTFOUND HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
#define E_PATHNOTFOUND HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)
#define E_INVALIDDATA HRESULT_FROM_WIN32(ERROR_INVALID_DATA)
#define E_INVALIDSTATE HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
#define E_INSUFFICIENT_BUFFER HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
#define E_MOREDATA HRESULT_FROM_WIN32(ERROR_MORE_DATA)
#define E_NOMOREITEMS HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS)
#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
#define E_MODNOTFOUND HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND)
#define E_BADCONFIGURATION HRESULT_FROM_WIN32(ERROR_BAD_CONFIGURATION)
#define AddRefAndRelease(x) { x->AddRef(); x->Release(); }
#define MAKEDWORD(lo, hi) ((DWORD)MAKELONG(lo, hi))
#define MAKEQWORDVERSION(mj, mi, b, r) (((DWORD64)MAKELONG(r, b)) | (((DWORD64)MAKELONG(mi, mj)) << 32))
#ifdef __cplusplus
extern "C" {
#endif
// other functions
HRESULT DAPI LoadSystemLibrary(__in_z LPCWSTR wzModuleName, __out HMODULE *phModule);
HRESULT DAPI LoadSystemLibraryWithPath(__in_z LPCWSTR wzModuleName, __out HMODULE *phModule, __deref_out_z_opt LPWSTR* psczPath);
#ifdef __cplusplus
}
#endif
+223 -223
View File
@@ -1,223 +1,223 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); }
#define ReleaseNullEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); pqh = NULL; }
struct ESE_COLUMN_SCHEMA
{
JET_COLUMNID jcColumn;
LPCWSTR pszName;
JET_COLTYP jcColumnType;
BOOL fKey; // If this column is part of the key of the table
BOOL fFixed;
BOOL fNullable;
BOOL fAutoIncrement;
};
struct ESE_TABLE_SCHEMA
{
JET_TABLEID jtTable;
LPCWSTR pszName;
DWORD dwColumns;
ESE_COLUMN_SCHEMA *pcsColumns;
};
struct ESE_DATABASE_SCHEMA
{
DWORD dwTables;
ESE_TABLE_SCHEMA *ptsTables;
};
typedef enum ESE_QUERY_TYPE
{
ESE_QUERY_EXACT,
ESE_QUERY_FROM_TOP,
ESE_QUERY_FROM_BOTTOM
} ESE_QUERY_TYPE;
typedef void* ESE_QUERY_HANDLE;
HRESULT DAPI EseBeginSession(
__out JET_INSTANCE *pjiInstance,
__out JET_SESID *pjsSession,
__in_z LPCWSTR pszInstance,
__in_z LPCWSTR pszPath
);
HRESULT DAPI EseEndSession(
__in JET_INSTANCE jiInstance,
__in JET_SESID jsSession
);
HRESULT DAPI EseEnsureDatabase(
__in JET_SESID jsSession,
__in_z LPCWSTR pszFile,
__in ESE_DATABASE_SCHEMA *pdsSchema,
__out JET_DBID* pjdbDb,
__in BOOL fExclusive,
__in BOOL fReadonly
);
HRESULT DAPI EseCloseDatabase(
__in JET_SESID jsSession,
__in JET_DBID jdbDb
);
HRESULT DAPI EseCreateTable(
__in JET_SESID jsSession,
__in JET_DBID jdbDb,
__in_z LPCWSTR pszTable,
__out JET_TABLEID *pjtTable
);
HRESULT DAPI EseOpenTable(
__in JET_SESID jsSession,
__in JET_DBID jdbDb,
__in_z LPCWSTR pszTable,
__out JET_TABLEID *pjtTable
);
HRESULT DAPI EseCloseTable(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable
);
HRESULT DAPI EseEnsureColumn(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in_z LPCWSTR pszColumnName,
__in JET_COLTYP jcColumnType,
__in ULONG ulColumnSize,
__in BOOL fFixed,
__in BOOL fNullable,
__out_opt JET_COLUMNID *pjcColumn
);
HRESULT DAPI EseGetColumn(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in_z LPCWSTR pszColumnName,
__out JET_COLUMNID *pjcColumn
);
HRESULT DAPI EseMoveCursor(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in LONG lRow
);
HRESULT DAPI EseDeleteRow(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable
);
HRESULT DAPI EseBeginTransaction(
__in JET_SESID jsSession
);
HRESULT DAPI EseRollbackTransaction(
__in JET_SESID jsSession,
__in BOOL fAll
);
HRESULT DAPI EseCommitTransaction(
__in JET_SESID jsSession
);
HRESULT DAPI EsePrepareUpdate(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in ULONG ulPrep
);
HRESULT DAPI EseFinishUpdate(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in BOOL fSeekToInsertedRecord
);
HRESULT DAPI EseSetColumnBinary(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI EseSetColumnDword(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in DWORD dwValue
);
HRESULT DAPI EseSetColumnBool(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in BOOL fValue
);
HRESULT DAPI EseSetColumnString(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in_z LPCWSTR pszValue
);
HRESULT DAPI EseSetColumnEmpty(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn
);
HRESULT DAPI EseGetColumnBinary(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer
);
HRESULT DAPI EseGetColumnDword(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out DWORD *pdwValue
);
HRESULT DAPI EseGetColumnBool(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out BOOL *pfValue
);
HRESULT DAPI EseGetColumnString(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out LPWSTR *ppszValue
);
// Call this once for each key column in the table
HRESULT DAPI EseBeginQuery(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in ESE_QUERY_TYPE qtQueryType,
__out ESE_QUERY_HANDLE *peqhHandle
);
HRESULT DAPI EseSetQueryColumnBinary(
__in ESE_QUERY_HANDLE eqhHandle,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnDword(
__in ESE_QUERY_HANDLE eqhHandle,
__in DWORD dwData,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnBool(
__in ESE_QUERY_HANDLE eqhHandle,
__in BOOL fValue,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnString(
__in ESE_QUERY_HANDLE eqhHandle,
__in_z LPCWSTR pszString,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseFinishQuery(
__in ESE_QUERY_HANDLE eqhHandle
);
// Once all columns have been set up, call this and read the result
HRESULT DAPI EseRunQuery(
__in ESE_QUERY_HANDLE eqhHandle
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); }
#define ReleaseNullEseQuery(pqh) if (pqh) { EseFinishQuery(pqh); pqh = NULL; }
struct ESE_COLUMN_SCHEMA
{
JET_COLUMNID jcColumn;
LPCWSTR pszName;
JET_COLTYP jcColumnType;
BOOL fKey; // If this column is part of the key of the table
BOOL fFixed;
BOOL fNullable;
BOOL fAutoIncrement;
};
struct ESE_TABLE_SCHEMA
{
JET_TABLEID jtTable;
LPCWSTR pszName;
DWORD dwColumns;
ESE_COLUMN_SCHEMA *pcsColumns;
};
struct ESE_DATABASE_SCHEMA
{
DWORD dwTables;
ESE_TABLE_SCHEMA *ptsTables;
};
typedef enum ESE_QUERY_TYPE
{
ESE_QUERY_EXACT,
ESE_QUERY_FROM_TOP,
ESE_QUERY_FROM_BOTTOM
} ESE_QUERY_TYPE;
typedef void* ESE_QUERY_HANDLE;
HRESULT DAPI EseBeginSession(
__out JET_INSTANCE *pjiInstance,
__out JET_SESID *pjsSession,
__in_z LPCWSTR pszInstance,
__in_z LPCWSTR pszPath
);
HRESULT DAPI EseEndSession(
__in JET_INSTANCE jiInstance,
__in JET_SESID jsSession
);
HRESULT DAPI EseEnsureDatabase(
__in JET_SESID jsSession,
__in_z LPCWSTR pszFile,
__in ESE_DATABASE_SCHEMA *pdsSchema,
__out JET_DBID* pjdbDb,
__in BOOL fExclusive,
__in BOOL fReadonly
);
HRESULT DAPI EseCloseDatabase(
__in JET_SESID jsSession,
__in JET_DBID jdbDb
);
HRESULT DAPI EseCreateTable(
__in JET_SESID jsSession,
__in JET_DBID jdbDb,
__in_z LPCWSTR pszTable,
__out JET_TABLEID *pjtTable
);
HRESULT DAPI EseOpenTable(
__in JET_SESID jsSession,
__in JET_DBID jdbDb,
__in_z LPCWSTR pszTable,
__out JET_TABLEID *pjtTable
);
HRESULT DAPI EseCloseTable(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable
);
HRESULT DAPI EseEnsureColumn(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in_z LPCWSTR pszColumnName,
__in JET_COLTYP jcColumnType,
__in ULONG ulColumnSize,
__in BOOL fFixed,
__in BOOL fNullable,
__out_opt JET_COLUMNID *pjcColumn
);
HRESULT DAPI EseGetColumn(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in_z LPCWSTR pszColumnName,
__out JET_COLUMNID *pjcColumn
);
HRESULT DAPI EseMoveCursor(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in LONG lRow
);
HRESULT DAPI EseDeleteRow(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable
);
HRESULT DAPI EseBeginTransaction(
__in JET_SESID jsSession
);
HRESULT DAPI EseRollbackTransaction(
__in JET_SESID jsSession,
__in BOOL fAll
);
HRESULT DAPI EseCommitTransaction(
__in JET_SESID jsSession
);
HRESULT DAPI EsePrepareUpdate(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in ULONG ulPrep
);
HRESULT DAPI EseFinishUpdate(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in BOOL fSeekToInsertedRecord
);
HRESULT DAPI EseSetColumnBinary(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI EseSetColumnDword(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in DWORD dwValue
);
HRESULT DAPI EseSetColumnBool(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in BOOL fValue
);
HRESULT DAPI EseSetColumnString(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__in_z LPCWSTR pszValue
);
HRESULT DAPI EseSetColumnEmpty(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn
);
HRESULT DAPI EseGetColumnBinary(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer
);
HRESULT DAPI EseGetColumnDword(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out DWORD *pdwValue
);
HRESULT DAPI EseGetColumnBool(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out BOOL *pfValue
);
HRESULT DAPI EseGetColumnString(
__in JET_SESID jsSession,
__in ESE_TABLE_SCHEMA tsTable,
__in DWORD dwColumn,
__out LPWSTR *ppszValue
);
// Call this once for each key column in the table
HRESULT DAPI EseBeginQuery(
__in JET_SESID jsSession,
__in JET_TABLEID jtTable,
__in ESE_QUERY_TYPE qtQueryType,
__out ESE_QUERY_HANDLE *peqhHandle
);
HRESULT DAPI EseSetQueryColumnBinary(
__in ESE_QUERY_HANDLE eqhHandle,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnDword(
__in ESE_QUERY_HANDLE eqhHandle,
__in DWORD dwData,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnBool(
__in ESE_QUERY_HANDLE eqhHandle,
__in BOOL fValue,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseSetQueryColumnString(
__in ESE_QUERY_HANDLE eqhHandle,
__in_z LPCWSTR pszString,
__in BOOL fFinal // If this is true, all other key columns in the query will be set to "*"
);
HRESULT DAPI EseFinishQuery(
__in ESE_QUERY_HANDLE eqhHandle
);
// Once all columns have been set up, call this and read the result
HRESULT DAPI EseRunQuery(
__in ESE_QUERY_HANDLE eqhHandle
);
#ifdef __cplusplus
}
#endif
+219 -219
View File
@@ -1,219 +1,219 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseFile(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileHandle(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileFindHandle(h) if (INVALID_HANDLE_VALUE != h) { ::FindClose(h); h = INVALID_HANDLE_VALUE; }
#define FILEMAKEVERSION(major, minor, build, revision) static_cast<DWORD64>((static_cast<DWORD64>(major & 0xFFFF) << 48) \
| (static_cast<DWORD64>(minor & 0xFFFF) << 32) \
| (static_cast<DWORD64>(build & 0xFFFF) << 16) \
| (static_cast<DWORD64>(revision & 0xFFFF)))
typedef enum FILE_ARCHITECTURE
{
FILE_ARCHITECTURE_UNKNOWN,
FILE_ARCHITECTURE_X86,
FILE_ARCHITECTURE_X64,
FILE_ARCHITECTURE_IA64,
} FILE_ARCHITECTURE;
typedef enum FILE_ENCODING
{
FILE_ENCODING_UNSPECIFIED = 0,
// TODO: distinguish between non-BOM utf-8 and ANSI in the future?
FILE_ENCODING_UTF8,
FILE_ENCODING_UTF8_WITH_BOM,
FILE_ENCODING_UTF16,
FILE_ENCODING_UTF16_WITH_BOM,
} FILE_ENCODING;
LPWSTR DAPI FileFromPath(
__in_z LPCWSTR wzPath
);
HRESULT DAPI FileResolvePath(
__in_z LPCWSTR wzRelativePath,
__out LPWSTR *ppwzFullPath
);
HRESULT DAPI FileStripExtension(
__in_z LPCWSTR wzFileName,
__out LPWSTR *ppwzFileNameNoExtension
);
HRESULT DAPI FileChangeExtension(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzNewExtension,
__out LPWSTR *ppwzFileNameNewExtension
);
HRESULT DAPI FileAddSuffixToBaseName(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzSuffix,
__out_z LPWSTR* psczNewFileName
);
HRESULT DAPI FileVersionFromString(
__in_z LPCWSTR wzVersion,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileVersionFromStringEx(
__in_z LPCWSTR wzVersion,
__in DWORD cchVersion,
__out DWORD64* pqwVersion
);
HRESULT DAPI FileVersionToStringEx(
__in DWORD64 qwVersion,
__out LPWSTR* psczVersion
);
HRESULT DAPI FileSetPointer(
__in HANDLE hFile,
__in DWORD64 dw64Move,
__out_opt DWORD64* pdw64NewPosition,
__in DWORD dwMoveMethod
);
HRESULT DAPI FileSize(
__in_z LPCWSTR pwzFileName,
__out LONGLONG* pllSize
);
HRESULT DAPI FileSizeByHandle(
__in HANDLE hFile,
__out LONGLONG* pllSize
);
BOOL DAPI FileExistsEx(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
BOOL DAPI FileExistsAfterRestart(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
HRESULT DAPI FileRemoveFromPendingRename(
__in_z LPCWSTR wzPath
);
HRESULT DAPI FileRead(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath
);
HRESULT DAPI FileReadUntil(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in DWORD cbMaxRead
);
HRESULT DAPI FileReadPartial(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in BOOL fSeek,
__in DWORD cbStartPosition,
__in DWORD cbMaxRead,
__in BOOL fPartialOK
);
HRESULT DAPI FileWrite(
__in_z LPCWSTR pwzFileName,
__in DWORD dwFlagsAndAttributes,
__in_bcount_opt(cbData) LPCBYTE pbData,
__in DWORD cbData,
__out_opt HANDLE* pHandle
);
HRESULT DAPI FileWriteHandle(
__in HANDLE hFile,
__in_bcount_opt(cbData) LPCBYTE pbData,
__in DWORD cbData
);
HRESULT DAPI FileCopyUsingHandles(
__in HANDLE hSource,
__in HANDLE hTarget,
__in DWORD64 cbCopy,
__out_opt DWORD64* pcbCopied
);
HRESULT DAPI FileEnsureCopy(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite
);
HRESULT DAPI FileEnsureCopyWithRetry(
__in LPCWSTR wzSource,
__in LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI FileEnsureMove(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in BOOL fAllowCopy
);
HRESULT DAPI FileEnsureMoveWithRetry(
__in LPCWSTR wzSource,
__in LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in BOOL fAllowCopy,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI FileCreateTemp(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileCreateTempW(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileVersion(
__in_z LPCWSTR wzFilename,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileIsSame(
__in_z LPCWSTR wzFile1,
__in_z LPCWSTR wzFile2,
__out LPBOOL lpfSameFile
);
HRESULT DAPI FileEnsureDelete(
__in_z LPCWSTR wzFile
);
HRESULT DAPI FileGetTime(
__in_z LPCWSTR wzFile,
__out_opt LPFILETIME lpCreationTime,
__out_opt LPFILETIME lpLastAccessTime,
__out_opt LPFILETIME lpLastWriteTime
);
HRESULT DAPI FileSetTime(
__in_z LPCWSTR wzFile,
__in_opt const FILETIME *lpCreationTime,
__in_opt const FILETIME *lpLastAccessTime,
__in_opt const FILETIME *lpLastWriteTime
);
HRESULT DAPI FileResetTime(
__in_z LPCWSTR wzFile
);
HRESULT DAPI FileExecutableArchitecture(
__in_z LPCWSTR wzFile,
__out FILE_ARCHITECTURE *pArchitecture
);
HRESULT DAPI FileToString(
__in_z LPCWSTR wzFile,
__out LPWSTR *psczString,
__out_opt FILE_ENCODING *pfeEncoding
);
HRESULT DAPI FileFromString(
__in_z LPCWSTR wzFile,
__in DWORD dwFlagsAndAttributes,
__in_z LPCWSTR sczString,
__in FILE_ENCODING feEncoding
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseFile(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileHandle(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileFindHandle(h) if (INVALID_HANDLE_VALUE != h) { ::FindClose(h); h = INVALID_HANDLE_VALUE; }
#define FILEMAKEVERSION(major, minor, build, revision) static_cast<DWORD64>((static_cast<DWORD64>(major & 0xFFFF) << 48) \
| (static_cast<DWORD64>(minor & 0xFFFF) << 32) \
| (static_cast<DWORD64>(build & 0xFFFF) << 16) \
| (static_cast<DWORD64>(revision & 0xFFFF)))
typedef enum FILE_ARCHITECTURE
{
FILE_ARCHITECTURE_UNKNOWN,
FILE_ARCHITECTURE_X86,
FILE_ARCHITECTURE_X64,
FILE_ARCHITECTURE_IA64,
} FILE_ARCHITECTURE;
typedef enum FILE_ENCODING
{
FILE_ENCODING_UNSPECIFIED = 0,
// TODO: distinguish between non-BOM utf-8 and ANSI in the future?
FILE_ENCODING_UTF8,
FILE_ENCODING_UTF8_WITH_BOM,
FILE_ENCODING_UTF16,
FILE_ENCODING_UTF16_WITH_BOM,
} FILE_ENCODING;
LPWSTR DAPI FileFromPath(
__in_z LPCWSTR wzPath
);
HRESULT DAPI FileResolvePath(
__in_z LPCWSTR wzRelativePath,
__out LPWSTR *ppwzFullPath
);
HRESULT DAPI FileStripExtension(
__in_z LPCWSTR wzFileName,
__out LPWSTR *ppwzFileNameNoExtension
);
HRESULT DAPI FileChangeExtension(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzNewExtension,
__out LPWSTR *ppwzFileNameNewExtension
);
HRESULT DAPI FileAddSuffixToBaseName(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzSuffix,
__out_z LPWSTR* psczNewFileName
);
HRESULT DAPI FileVersionFromString(
__in_z LPCWSTR wzVersion,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileVersionFromStringEx(
__in_z LPCWSTR wzVersion,
__in DWORD cchVersion,
__out DWORD64* pqwVersion
);
HRESULT DAPI FileVersionToStringEx(
__in DWORD64 qwVersion,
__out LPWSTR* psczVersion
);
HRESULT DAPI FileSetPointer(
__in HANDLE hFile,
__in DWORD64 dw64Move,
__out_opt DWORD64* pdw64NewPosition,
__in DWORD dwMoveMethod
);
HRESULT DAPI FileSize(
__in_z LPCWSTR pwzFileName,
__out LONGLONG* pllSize
);
HRESULT DAPI FileSizeByHandle(
__in HANDLE hFile,
__out LONGLONG* pllSize
);
BOOL DAPI FileExistsEx(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
BOOL DAPI FileExistsAfterRestart(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
HRESULT DAPI FileRemoveFromPendingRename(
__in_z LPCWSTR wzPath
);
HRESULT DAPI FileRead(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath
);
HRESULT DAPI FileReadUntil(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in DWORD cbMaxRead
);
HRESULT DAPI FileReadPartial(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in BOOL fSeek,
__in DWORD cbStartPosition,
__in DWORD cbMaxRead,
__in BOOL fPartialOK
);
HRESULT DAPI FileWrite(
__in_z LPCWSTR pwzFileName,
__in DWORD dwFlagsAndAttributes,
__in_bcount_opt(cbData) LPCBYTE pbData,
__in DWORD cbData,
__out_opt HANDLE* pHandle
);
HRESULT DAPI FileWriteHandle(
__in HANDLE hFile,
__in_bcount_opt(cbData) LPCBYTE pbData,
__in DWORD cbData
);
HRESULT DAPI FileCopyUsingHandles(
__in HANDLE hSource,
__in HANDLE hTarget,
__in DWORD64 cbCopy,
__out_opt DWORD64* pcbCopied
);
HRESULT DAPI FileEnsureCopy(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite
);
HRESULT DAPI FileEnsureCopyWithRetry(
__in LPCWSTR wzSource,
__in LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI FileEnsureMove(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in BOOL fAllowCopy
);
HRESULT DAPI FileEnsureMoveWithRetry(
__in LPCWSTR wzSource,
__in LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in BOOL fAllowCopy,
__in DWORD cRetry,
__in DWORD dwWaitMilliseconds
);
HRESULT DAPI FileCreateTemp(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileCreateTempW(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileVersion(
__in_z LPCWSTR wzFilename,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileIsSame(
__in_z LPCWSTR wzFile1,
__in_z LPCWSTR wzFile2,
__out LPBOOL lpfSameFile
);
HRESULT DAPI FileEnsureDelete(
__in_z LPCWSTR wzFile
);
HRESULT DAPI FileGetTime(
__in_z LPCWSTR wzFile,
__out_opt LPFILETIME lpCreationTime,
__out_opt LPFILETIME lpLastAccessTime,
__out_opt LPFILETIME lpLastWriteTime
);
HRESULT DAPI FileSetTime(
__in_z LPCWSTR wzFile,
__in_opt const FILETIME *lpCreationTime,
__in_opt const FILETIME *lpLastAccessTime,
__in_opt const FILETIME *lpLastWriteTime
);
HRESULT DAPI FileResetTime(
__in_z LPCWSTR wzFile
);
HRESULT DAPI FileExecutableArchitecture(
__in_z LPCWSTR wzFile,
__out FILE_ARCHITECTURE *pArchitecture
);
HRESULT DAPI FileToString(
__in_z LPCWSTR wzFile,
__out LPWSTR *psczString,
__out_opt FILE_ENCODING *pfeEncoding
);
HRESULT DAPI FileFromString(
__in_z LPCWSTR wzFile,
__in DWORD dwFlagsAndAttributes,
__in_z LPCWSTR sczString,
__in FILE_ENCODING feEncoding
);
#ifdef __cplusplus
}
#endif
+30 -30
View File
@@ -1,30 +1,30 @@
#pragma once
// 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.
#define ExitOnGdipFailure(g, x, s) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s); goto LExit; } }
#define ExitOnGdipFailure1(g, x, f, s) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } }
#define ExitOnGdipFailure2(g, x, f, s, t) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } }
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI GdipBitmapFromResource(
__in_opt HINSTANCE hinst,
__in_z LPCSTR szId,
__out Gdiplus::Bitmap **ppBitmap
);
HRESULT DAPI GdipBitmapFromFile(
__in_z LPCWSTR wzFileName,
__out Gdiplus::Bitmap **ppBitmap
);
HRESULT DAPI GdipHresultFromStatus(
__in Gdiplus::Status gs
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#define ExitOnGdipFailure(g, x, s) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s); goto LExit; } }
#define ExitOnGdipFailure1(g, x, f, s) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } }
#define ExitOnGdipFailure2(g, x, f, s, t) { x = GdipHresultFromStatus(g); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } }
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI GdipBitmapFromResource(
__in_opt HINSTANCE hinst,
__in_z LPCSTR szId,
__out Gdiplus::Bitmap **ppBitmap
);
HRESULT DAPI GdipBitmapFromFile(
__in_z LPCWSTR wzFileName,
__out Gdiplus::Bitmap **ppBitmap
);
HRESULT DAPI GdipHresultFromStatus(
__in Gdiplus::Status gs
);
#ifdef __cplusplus
}
#endif
+222 -222
View File
@@ -1,222 +1,222 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// IIS Config schema names
#define IIS_CONFIG_ADD L"add"
#define IIS_CONFIG_ALLOWED L"allowed"
#define IIS_CONFIG_APPHOST_ROOT L"MACHINE/WEBROOT/APPHOST"
#define IIS_CONFIG_APPLICATION L"application"
#define IIS_CONFIG_APPPOOL L"applicationPool"
#define IIS_CONFIG_APPPOOL_AUTO L"autoStart"
#define IIS_CONFIG_APPPOOL_SECTION L"system.applicationHost/applicationPools"
#define IIS_CONFIG_AUTOSTART L"serverAutoStart"
#define IIS_CONFIG_BINDING L"binding"
#define IIS_CONFIG_BINDINGINFO L"bindingInformation"
#define IIS_CONFIG_BINDINGS L"bindings"
#define IIS_CONFIG_DESC L"description"
#define IIS_CONFIG_EXECUTABLE L"scriptProcessor"
#define IIS_CONFIG_ENABLED L"enabled"
#define IIS_CONFIG_ENABLE32 L"enable32BitAppOnWin64"
#define IIS_CONFIG_FILEEXT L"fileExtension"
#define IIS_CONFIG_FILTER L"filter"
#define IIS_CONFIG_GROUPID L"groupId"
#define IIS_CONFIG_HEADERS L"customHeaders"
#define IIS_CONFIG_HTTPERRORS_SECTION L"system.webServer/httpErrors"
#define IIS_CONFIG_ID L"id"
#define IIS_CONFIG_ISAPI_SECTION L"system.webServer/isapiFilters"
#define IIS_CONFIG_HTTPPROTO_SECTION L"system.webServer/httpProtocol"
#define IIS_CONFIG_LOG_SECTION L"system.applicationHost/log"
#define IIS_CONFIG_LOG_UTF8 L"logInUTF8"
#define IIS_CONFIG_LIMITS L"limits"
#define IIS_CONFIG_PIPELINEMODE L"managedPipelineMode"
#define IIS_CONFIG_MANAGEDRUNTIMEVERSION L"managedRuntimeVersion"
#define IIS_CONFIG_WEBLOG L"logFile"
#define IIS_CONFIG_LOGFORMAT L"logFormat"
#define IIS_CONFIG_MIMEMAP L"mimeMap"
#define IIS_CONFIG_MIMETYPE L"mimeType"
#define IIS_CONFIG_MODULES L"modules"
#define IIS_CONFIG_NAME L"name"
#define IIS_CONFIG_PATH L"path"
#define IIS_CONFIG_PHYSPATH L"physicalPath"
#define IIS_CONFIG_PROTOCOL L"protocol"
#define IIS_CONFIG_RESTRICTION_SECTION L"system.webServer/security/isapiCgiRestriction"
#define IIS_CONFIG_SITE L"site"
#define IIS_CONFIG_SITE_ID L"id"
#define IIS_CONFIG_SITES_SECTION L"system.applicationHost/sites"
#define IIS_CONFIG_CONNECTTIMEOUT L"connectionTimeout"
#define IIS_CONFIG_VDIR L"virtualDirectory"
#define IIS_CONFIG_VALUE L"value"
#define IIS_CONFIG_VERBS L"verb"
#define IIS_CONFIG_WEBLIMITS_SECTION L"system.applicationHost/webLimits"
#define IIS_CONFIG_WEBLIMITS_MAXBAND L"maxGlobalBandwidth"
#define IIS_CONFIG_TRUE L"true"
#define IIS_CONFIG_FALSE L"false"
#define IIS_CONFIG_ERROR L"error"
#define IIS_CONFIG_STATUSCODE L"statusCode"
#define IIS_CONFIG_SUBSTATUS L"subStatusCode"
#define IIS_CONFIG_LANGPATH L"prefixLanguageFilePath"
#define IIS_CONFIG_RESPMODE L"responseMode"
#define IIS_CONFIG_CLEAR L"clear"
#define IIS_CONFIG_RECYCLING L"recycling"
#define IIS_CONFIG_PEROIDRESTART L"periodicRestart"
#define IIS_CONFIG_TIME L"time"
#define IIS_CONFIG_REQUESTS L"requests"
#define IIS_CONFIG_SCHEDULE L"schedule"
#define IIS_CONFIG_MEMORY L"memory"
#define IIS_CONFIG_PRIVMEMORY L"privateMemory"
#define IIS_CONFIG_PROCESSMODEL L"processModel"
#define IIS_CONFIG_IDLETIMEOUT L"idleTimeout"
#define IIS_CONFIG_QUEUELENGTH L"queueLength"
#define IIS_CONFIG_IDENITITYTYPE L"identityType"
#define IIS_CONFIG_LOCALSYSTEM L"LocalSystem"
#define IIS_CONFIG_LOCALSERVICE L"LocalService"
#define IIS_CONFIG_NETWORKSERVICE L"NetworkService"
#define IIS_CONFIG_SPECIFICUSER L"SpecificUser"
#define IIS_CONFIG_APPLICATIONPOOLIDENTITY L"ApplicationPoolIdentity"
#define IIS_CONFIG_USERNAME L"userName"
#define IIS_CONFIG_PASSWORD L"password"
#define IIS_CONFIG_CPU L"cpu"
#define IIS_CONFIG_LIMIT L"limit"
#define IIS_CONFIG_CPU_ACTION L"action"
#define IIS_CONFIG_KILLW3WP L"KillW3wp"
#define IIS_CONFIG_NOACTION L"NoAction"
#define IIS_CONFIG_RESETINTERVAL L"resetInterval"
#define IIS_CONFIG_MAXWRKPROCESSES L"maxProcesses"
#define IIS_CONFIG_HANDLERS_SECTION L"system.webServer/handlers"
#define IIS_CONFIG_DEFAULTDOC_SECTION L"system.webServer/defaultDocument"
#define IIS_CONFIG_ASP_SECTION L"system.webServer/asp"
#define IIS_CONFIG_SCRIPTERROR L"scriptErrorSentToBrowser"
#define IIS_CONFIG_STATICCONTENT_SECTION L"system.webServer/staticContent"
#define IIS_CONFIG_HTTPEXPIRES L"httpExpires"
#define IIS_CONFIG_MAXAGE L"cacheControlMaxAge"
#define IIS_CONFIG_CLIENTCACHE L"clientCache"
#define IIS_CONFIG_CACHECONTROLMODE L"cacheControlMode"
#define IIS_CONFIG_USEMAXAGE L"UseMaxAge"
#define IIS_CONFIG_USEEXPIRES L"UseExpires"
#define IIS_CONFIG_CACHECUST L"cacheControlCustom"
#define IIS_CONFIG_ASP_SECTION L"system.webServer/asp"
#define IIS_CONFIG_SESSION L"session"
#define IIS_CONFIG_ALLOWSTATE L"allowSessionState"
#define IIS_CONFIG_TIMEOUT L"timeout"
#define IIS_CONFIG_BUFFERING L"bufferingOn"
#define IIS_CONFIG_PARENTPATHS L"enableParentPaths"
#define IIS_CONFIG_SCRIPTLANG L"scriptLanguage"
#define IIS_CONFIG_SCRIPTTIMEOUT L"scriptTimeout"
#define IIS_CONFIG_LIMITS L"limits"
#define IIS_CONFIG_ALLOWDEBUG L"appAllowDebugging"
#define IIS_CONFIG_ALLOWCLIENTDEBUG L"appAllowClientDebug"
#define IIS_CONFIG_CERTIFICATEHASH L"certificateHash"
#define IIS_CONFIG_CERTIFICATESTORENAME L"certificateStoreName"
#define IIS_CONFIG_HTTPLOGGING_SECTION L"system.webServer/httpLogging"
#define IIS_CONFIG_DONTLOG L"dontLog"
typedef BOOL (CALLBACK* ENUMAPHOSTELEMENTPROC)(IAppHostElement*, LPVOID);
typedef BOOL (CALLBACK* VARIANTCOMPARATORPROC)(VARIANT*, VARIANT*);
HRESULT DAPI Iis7PutPropertyVariant(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in VARIANT vtPut
);
HRESULT DAPI Iis7PutPropertyInteger(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in DWORD dValue
);
HRESULT DAPI Iis7PutPropertyString(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in LPCWSTR wzString
);
HRESULT DAPI Iis7PutPropertyBool(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in BOOL fValue);
HRESULT DAPI Iis7GetPropertyVariant(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in VARIANT* vtGet
);
HRESULT DAPI Iis7GetPropertyString(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in LPWSTR* psczGet
);
struct IIS7_APPHOSTELEMENTCOMPARISON
{
LPCWSTR sczElementName;
LPCWSTR sczAttributeName;
VARIANT* pvAttributeValue;
VARIANTCOMPARATORPROC pComparator;
};
BOOL DAPI Iis7IsMatchingAppHostElement(
__in IAppHostElement *pElement,
__in IIS7_APPHOSTELEMENTCOMPARISON* pComparison
);
HRESULT DAPI Iis7FindAppHostElementString(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in LPCWSTR wzAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementPath(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in LPCWSTR wzAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementInteger(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in DWORD dwAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementVariant(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in VARIANT* pvAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7EnumAppHostElements(
__in IAppHostElementCollection *pCollection,
__in ENUMAPHOSTELEMENTPROC pCallback,
__in LPVOID pContext,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostMethod(
__in IAppHostMethodCollection *pCollection,
__in LPCWSTR wzMethodName,
__out IAppHostMethod** ppMethod,
__out DWORD* pdwIndex
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// IIS Config schema names
#define IIS_CONFIG_ADD L"add"
#define IIS_CONFIG_ALLOWED L"allowed"
#define IIS_CONFIG_APPHOST_ROOT L"MACHINE/WEBROOT/APPHOST"
#define IIS_CONFIG_APPLICATION L"application"
#define IIS_CONFIG_APPPOOL L"applicationPool"
#define IIS_CONFIG_APPPOOL_AUTO L"autoStart"
#define IIS_CONFIG_APPPOOL_SECTION L"system.applicationHost/applicationPools"
#define IIS_CONFIG_AUTOSTART L"serverAutoStart"
#define IIS_CONFIG_BINDING L"binding"
#define IIS_CONFIG_BINDINGINFO L"bindingInformation"
#define IIS_CONFIG_BINDINGS L"bindings"
#define IIS_CONFIG_DESC L"description"
#define IIS_CONFIG_EXECUTABLE L"scriptProcessor"
#define IIS_CONFIG_ENABLED L"enabled"
#define IIS_CONFIG_ENABLE32 L"enable32BitAppOnWin64"
#define IIS_CONFIG_FILEEXT L"fileExtension"
#define IIS_CONFIG_FILTER L"filter"
#define IIS_CONFIG_GROUPID L"groupId"
#define IIS_CONFIG_HEADERS L"customHeaders"
#define IIS_CONFIG_HTTPERRORS_SECTION L"system.webServer/httpErrors"
#define IIS_CONFIG_ID L"id"
#define IIS_CONFIG_ISAPI_SECTION L"system.webServer/isapiFilters"
#define IIS_CONFIG_HTTPPROTO_SECTION L"system.webServer/httpProtocol"
#define IIS_CONFIG_LOG_SECTION L"system.applicationHost/log"
#define IIS_CONFIG_LOG_UTF8 L"logInUTF8"
#define IIS_CONFIG_LIMITS L"limits"
#define IIS_CONFIG_PIPELINEMODE L"managedPipelineMode"
#define IIS_CONFIG_MANAGEDRUNTIMEVERSION L"managedRuntimeVersion"
#define IIS_CONFIG_WEBLOG L"logFile"
#define IIS_CONFIG_LOGFORMAT L"logFormat"
#define IIS_CONFIG_MIMEMAP L"mimeMap"
#define IIS_CONFIG_MIMETYPE L"mimeType"
#define IIS_CONFIG_MODULES L"modules"
#define IIS_CONFIG_NAME L"name"
#define IIS_CONFIG_PATH L"path"
#define IIS_CONFIG_PHYSPATH L"physicalPath"
#define IIS_CONFIG_PROTOCOL L"protocol"
#define IIS_CONFIG_RESTRICTION_SECTION L"system.webServer/security/isapiCgiRestriction"
#define IIS_CONFIG_SITE L"site"
#define IIS_CONFIG_SITE_ID L"id"
#define IIS_CONFIG_SITES_SECTION L"system.applicationHost/sites"
#define IIS_CONFIG_CONNECTTIMEOUT L"connectionTimeout"
#define IIS_CONFIG_VDIR L"virtualDirectory"
#define IIS_CONFIG_VALUE L"value"
#define IIS_CONFIG_VERBS L"verb"
#define IIS_CONFIG_WEBLIMITS_SECTION L"system.applicationHost/webLimits"
#define IIS_CONFIG_WEBLIMITS_MAXBAND L"maxGlobalBandwidth"
#define IIS_CONFIG_TRUE L"true"
#define IIS_CONFIG_FALSE L"false"
#define IIS_CONFIG_ERROR L"error"
#define IIS_CONFIG_STATUSCODE L"statusCode"
#define IIS_CONFIG_SUBSTATUS L"subStatusCode"
#define IIS_CONFIG_LANGPATH L"prefixLanguageFilePath"
#define IIS_CONFIG_RESPMODE L"responseMode"
#define IIS_CONFIG_CLEAR L"clear"
#define IIS_CONFIG_RECYCLING L"recycling"
#define IIS_CONFIG_PEROIDRESTART L"periodicRestart"
#define IIS_CONFIG_TIME L"time"
#define IIS_CONFIG_REQUESTS L"requests"
#define IIS_CONFIG_SCHEDULE L"schedule"
#define IIS_CONFIG_MEMORY L"memory"
#define IIS_CONFIG_PRIVMEMORY L"privateMemory"
#define IIS_CONFIG_PROCESSMODEL L"processModel"
#define IIS_CONFIG_IDLETIMEOUT L"idleTimeout"
#define IIS_CONFIG_QUEUELENGTH L"queueLength"
#define IIS_CONFIG_IDENITITYTYPE L"identityType"
#define IIS_CONFIG_LOCALSYSTEM L"LocalSystem"
#define IIS_CONFIG_LOCALSERVICE L"LocalService"
#define IIS_CONFIG_NETWORKSERVICE L"NetworkService"
#define IIS_CONFIG_SPECIFICUSER L"SpecificUser"
#define IIS_CONFIG_APPLICATIONPOOLIDENTITY L"ApplicationPoolIdentity"
#define IIS_CONFIG_USERNAME L"userName"
#define IIS_CONFIG_PASSWORD L"password"
#define IIS_CONFIG_CPU L"cpu"
#define IIS_CONFIG_LIMIT L"limit"
#define IIS_CONFIG_CPU_ACTION L"action"
#define IIS_CONFIG_KILLW3WP L"KillW3wp"
#define IIS_CONFIG_NOACTION L"NoAction"
#define IIS_CONFIG_RESETINTERVAL L"resetInterval"
#define IIS_CONFIG_MAXWRKPROCESSES L"maxProcesses"
#define IIS_CONFIG_HANDLERS_SECTION L"system.webServer/handlers"
#define IIS_CONFIG_DEFAULTDOC_SECTION L"system.webServer/defaultDocument"
#define IIS_CONFIG_ASP_SECTION L"system.webServer/asp"
#define IIS_CONFIG_SCRIPTERROR L"scriptErrorSentToBrowser"
#define IIS_CONFIG_STATICCONTENT_SECTION L"system.webServer/staticContent"
#define IIS_CONFIG_HTTPEXPIRES L"httpExpires"
#define IIS_CONFIG_MAXAGE L"cacheControlMaxAge"
#define IIS_CONFIG_CLIENTCACHE L"clientCache"
#define IIS_CONFIG_CACHECONTROLMODE L"cacheControlMode"
#define IIS_CONFIG_USEMAXAGE L"UseMaxAge"
#define IIS_CONFIG_USEEXPIRES L"UseExpires"
#define IIS_CONFIG_CACHECUST L"cacheControlCustom"
#define IIS_CONFIG_ASP_SECTION L"system.webServer/asp"
#define IIS_CONFIG_SESSION L"session"
#define IIS_CONFIG_ALLOWSTATE L"allowSessionState"
#define IIS_CONFIG_TIMEOUT L"timeout"
#define IIS_CONFIG_BUFFERING L"bufferingOn"
#define IIS_CONFIG_PARENTPATHS L"enableParentPaths"
#define IIS_CONFIG_SCRIPTLANG L"scriptLanguage"
#define IIS_CONFIG_SCRIPTTIMEOUT L"scriptTimeout"
#define IIS_CONFIG_LIMITS L"limits"
#define IIS_CONFIG_ALLOWDEBUG L"appAllowDebugging"
#define IIS_CONFIG_ALLOWCLIENTDEBUG L"appAllowClientDebug"
#define IIS_CONFIG_CERTIFICATEHASH L"certificateHash"
#define IIS_CONFIG_CERTIFICATESTORENAME L"certificateStoreName"
#define IIS_CONFIG_HTTPLOGGING_SECTION L"system.webServer/httpLogging"
#define IIS_CONFIG_DONTLOG L"dontLog"
typedef BOOL (CALLBACK* ENUMAPHOSTELEMENTPROC)(IAppHostElement*, LPVOID);
typedef BOOL (CALLBACK* VARIANTCOMPARATORPROC)(VARIANT*, VARIANT*);
HRESULT DAPI Iis7PutPropertyVariant(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in VARIANT vtPut
);
HRESULT DAPI Iis7PutPropertyInteger(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in DWORD dValue
);
HRESULT DAPI Iis7PutPropertyString(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in LPCWSTR wzString
);
HRESULT DAPI Iis7PutPropertyBool(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in BOOL fValue);
HRESULT DAPI Iis7GetPropertyVariant(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in VARIANT* vtGet
);
HRESULT DAPI Iis7GetPropertyString(
__in IAppHostElement *pElement,
__in LPCWSTR wzPropName,
__in LPWSTR* psczGet
);
struct IIS7_APPHOSTELEMENTCOMPARISON
{
LPCWSTR sczElementName;
LPCWSTR sczAttributeName;
VARIANT* pvAttributeValue;
VARIANTCOMPARATORPROC pComparator;
};
BOOL DAPI Iis7IsMatchingAppHostElement(
__in IAppHostElement *pElement,
__in IIS7_APPHOSTELEMENTCOMPARISON* pComparison
);
HRESULT DAPI Iis7FindAppHostElementString(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in LPCWSTR wzAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementPath(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in LPCWSTR wzAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementInteger(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in DWORD dwAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostElementVariant(
__in IAppHostElementCollection *pCollection,
__in LPCWSTR wzElementName,
__in LPCWSTR wzAttributeName,
__in VARIANT* pvAttributeValue,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7EnumAppHostElements(
__in IAppHostElementCollection *pCollection,
__in ENUMAPHOSTELEMENTPROC pCallback,
__in LPVOID pContext,
__out IAppHostElement** ppElement,
__out DWORD* pdwIndex
);
HRESULT DAPI Iis7FindAppHostMethod(
__in IAppHostMethodCollection *pCollection,
__in LPCWSTR wzMethodName,
__out IAppHostMethod** ppMethod,
__out DWORD* pdwIndex
);
#ifdef __cplusplus
}
#endif
+39 -39
View File
@@ -1,39 +1,39 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseInternet(h) if (h) { ::InternetCloseHandle(h); h = NULL; }
#define ReleaseNullInternet(h) if (h) { ::InternetCloseHandle(h); h = NULL; }
// functions
HRESULT DAPI InternetGetSizeByHandle(
__in HINTERNET hiFile,
__out LONGLONG* pllSize
);
HRESULT DAPI InternetGetCreateTimeByHandle(
__in HINTERNET hiFile,
__out LPFILETIME pft
);
HRESULT DAPI InternetQueryInfoString(
__in HINTERNET h,
__in DWORD dwInfo,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI InternetQueryInfoNumber(
__in HINTERNET h,
__in DWORD dwInfo,
__out LONG* plInfo
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseInternet(h) if (h) { ::InternetCloseHandle(h); h = NULL; }
#define ReleaseNullInternet(h) if (h) { ::InternetCloseHandle(h); h = NULL; }
// functions
HRESULT DAPI InternetGetSizeByHandle(
__in HINTERNET hiFile,
__out LONGLONG* pllSize
);
HRESULT DAPI InternetGetCreateTimeByHandle(
__in HINTERNET hiFile,
__out LPFILETIME pft
);
HRESULT DAPI InternetQueryInfoString(
__in HINTERNET h,
__in DWORD dwInfo,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI InternetQueryInfoNumber(
__in HINTERNET h,
__in DWORD dwInfo,
__out LONG* plInfo
);
#ifdef __cplusplus
}
#endif
+73 -73
View File
@@ -1,73 +1,73 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseIni(ih) if (ih) { IniUninitialize(ih); }
#define ReleaseNullIni(ih) if (ih) { IniUninitialize(ih); ih = NULL; }
typedef void* INI_HANDLE;
typedef const void* C_INI_HANDLE;
extern const int INI_HANDLE_BYTES;
struct INI_VALUE
{
LPCWSTR wzName;
LPCWSTR wzValue;
DWORD dwLineNumber;
};
HRESULT DAPI IniInitialize(
__out_bcount(INI_HANDLE_BYTES) INI_HANDLE* piHandle
);
void DAPI IniUninitialize(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle
);
HRESULT DAPI IniSetOpenTag(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzOpenTagPrefix,
__in_z_opt LPCWSTR wzOpenTagPostfix
);
HRESULT DAPI IniSetValueStyle(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzValuePrefix,
__in_z_opt LPCWSTR wzValueSeparator
);
HRESULT DAPI IniSetCommentStyle(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzLinePrefix
);
HRESULT DAPI IniParse(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzPath,
__out_opt FILE_ENCODING *pfeEncodingFound
);
HRESULT DAPI IniGetValueList(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__deref_out_ecount_opt(pcValues) INI_VALUE** prgivValues,
__out DWORD *pcValues
);
HRESULT DAPI IniGetValue(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzValueName,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI IniSetValue(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzValueName,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI IniWriteFile(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzPath,
__in FILE_ENCODING feOverrideEncoding
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseIni(ih) if (ih) { IniUninitialize(ih); }
#define ReleaseNullIni(ih) if (ih) { IniUninitialize(ih); ih = NULL; }
typedef void* INI_HANDLE;
typedef const void* C_INI_HANDLE;
extern const int INI_HANDLE_BYTES;
struct INI_VALUE
{
LPCWSTR wzName;
LPCWSTR wzValue;
DWORD dwLineNumber;
};
HRESULT DAPI IniInitialize(
__out_bcount(INI_HANDLE_BYTES) INI_HANDLE* piHandle
);
void DAPI IniUninitialize(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle
);
HRESULT DAPI IniSetOpenTag(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzOpenTagPrefix,
__in_z_opt LPCWSTR wzOpenTagPostfix
);
HRESULT DAPI IniSetValueStyle(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzValuePrefix,
__in_z_opt LPCWSTR wzValueSeparator
);
HRESULT DAPI IniSetCommentStyle(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzLinePrefix
);
HRESULT DAPI IniParse(
__inout_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzPath,
__out_opt FILE_ENCODING *pfeEncodingFound
);
HRESULT DAPI IniGetValueList(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__deref_out_ecount_opt(pcValues) INI_VALUE** prgivValues,
__out DWORD *pcValues
);
HRESULT DAPI IniGetValue(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzValueName,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI IniSetValue(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in LPCWSTR wzValueName,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI IniWriteFile(
__in_bcount(INI_HANDLE_BYTES) INI_HANDLE piHandle,
__in_z_opt LPCWSTR wzPath,
__in FILE_ENCODING feOverrideEncoding
);
#ifdef __cplusplus
}
#endif
+112 -112
View File
@@ -1,112 +1,112 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum JSON_TOKEN
{
JSON_TOKEN_NONE,
JSON_TOKEN_ARRAY_START,
JSON_TOKEN_ARRAY_VALUE,
JSON_TOKEN_ARRAY_END,
JSON_TOKEN_OBJECT_START,
JSON_TOKEN_OBJECT_KEY,
JSON_TOKEN_OBJECT_VALUE,
JSON_TOKEN_OBJECT_END,
JSON_TOKEN_VALUE,
} JSON_TOKEN;
typedef struct _JSON_VALUE
{
} JSON_VALUE;
typedef struct _JSON_READER
{
CRITICAL_SECTION cs;
LPWSTR sczJson;
LPWSTR pwz;
JSON_TOKEN token;
} JSON_READER;
typedef struct _JSON_WRITER
{
CRITICAL_SECTION cs;
LPWSTR sczJson;
JSON_TOKEN* rgTokenStack;
DWORD cTokens;
DWORD cMaxTokens;
} JSON_WRITER;
DAPI_(HRESULT) JsonInitializeReader(
__in_z LPCWSTR wzJson,
__in JSON_READER* pReader
);
DAPI_(void) JsonUninitializeReader(
__in JSON_READER* pReader
);
DAPI_(HRESULT) JsonReadNext(
__in JSON_READER* pReader,
__out JSON_TOKEN* pToken,
__out JSON_VALUE* pValue
);
DAPI_(HRESULT) JsonReadValue(
__in JSON_READER* pReader,
__in JSON_VALUE* pValue
);
DAPI_(HRESULT) JsonInitializeWriter(
__in JSON_WRITER* pWriter
);
DAPI_(void) JsonUninitializeWriter(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteBool(
__in JSON_WRITER* pWriter,
__in BOOL fValue
);
DAPI_(HRESULT) JsonWriteNumber(
__in JSON_WRITER* pWriter,
__in DWORD dwValue
);
DAPI_(HRESULT) JsonWriteString(
__in JSON_WRITER* pWriter,
__in_z LPCWSTR wzValue
);
DAPI_(HRESULT) JsonWriteArrayStart(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteArrayEnd(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteObjectStart(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteObjectKey(
__in JSON_WRITER* pWriter,
__in_z LPCWSTR wzKey
);
DAPI_(HRESULT) JsonWriteObjectEnd(
__in JSON_WRITER* pWriter
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum JSON_TOKEN
{
JSON_TOKEN_NONE,
JSON_TOKEN_ARRAY_START,
JSON_TOKEN_ARRAY_VALUE,
JSON_TOKEN_ARRAY_END,
JSON_TOKEN_OBJECT_START,
JSON_TOKEN_OBJECT_KEY,
JSON_TOKEN_OBJECT_VALUE,
JSON_TOKEN_OBJECT_END,
JSON_TOKEN_VALUE,
} JSON_TOKEN;
typedef struct _JSON_VALUE
{
} JSON_VALUE;
typedef struct _JSON_READER
{
CRITICAL_SECTION cs;
LPWSTR sczJson;
LPWSTR pwz;
JSON_TOKEN token;
} JSON_READER;
typedef struct _JSON_WRITER
{
CRITICAL_SECTION cs;
LPWSTR sczJson;
JSON_TOKEN* rgTokenStack;
DWORD cTokens;
DWORD cMaxTokens;
} JSON_WRITER;
DAPI_(HRESULT) JsonInitializeReader(
__in_z LPCWSTR wzJson,
__in JSON_READER* pReader
);
DAPI_(void) JsonUninitializeReader(
__in JSON_READER* pReader
);
DAPI_(HRESULT) JsonReadNext(
__in JSON_READER* pReader,
__out JSON_TOKEN* pToken,
__out JSON_VALUE* pValue
);
DAPI_(HRESULT) JsonReadValue(
__in JSON_READER* pReader,
__in JSON_VALUE* pValue
);
DAPI_(HRESULT) JsonInitializeWriter(
__in JSON_WRITER* pWriter
);
DAPI_(void) JsonUninitializeWriter(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteBool(
__in JSON_WRITER* pWriter,
__in BOOL fValue
);
DAPI_(HRESULT) JsonWriteNumber(
__in JSON_WRITER* pWriter,
__in DWORD dwValue
);
DAPI_(HRESULT) JsonWriteString(
__in JSON_WRITER* pWriter,
__in_z LPCWSTR wzValue
);
DAPI_(HRESULT) JsonWriteArrayStart(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteArrayEnd(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteObjectStart(
__in JSON_WRITER* pWriter
);
DAPI_(HRESULT) JsonWriteObjectKey(
__in JSON_WRITER* pWriter,
__in_z LPCWSTR wzKey
);
DAPI_(HRESULT) JsonWriteObjectEnd(
__in JSON_WRITER* pWriter
);
#ifdef __cplusplus
}
#endif
+132 -132
View File
@@ -1,132 +1,132 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
struct LOC_STRING
{
LPWSTR wzId;
LPWSTR wzText;
BOOL bOverridable;
};
const int LOC_CONTROL_NOT_SET = INT_MAX;
struct LOC_CONTROL
{
LPWSTR wzControl;
int nX;
int nY;
int nWidth;
int nHeight;
LPWSTR wzText;
};
const int WIX_LOCALIZATION_LANGUAGE_NOT_SET = INT_MAX;
struct WIX_LOCALIZATION
{
DWORD dwLangId;
DWORD cLocStrings;
LOC_STRING* rgLocStrings;
DWORD cLocControls;
LOC_CONTROL* rgLocControls;
};
/********************************************************************
LocProbeForFile - Searches for a localization file on disk.
*******************************************************************/
HRESULT DAPI LocProbeForFile(
__in_z LPCWSTR wzBasePath,
__in_z LPCWSTR wzLocFileName,
__in_z_opt LPCWSTR wzLanguage,
__inout LPWSTR* psczPath
);
/********************************************************************
LocProbeForFileEx - Searches for a localization file on disk.
useUILanguage should be set to TRUE.
*******************************************************************/
extern "C" HRESULT DAPI LocProbeForFileEx(
__in_z LPCWSTR wzBasePath,
__in_z LPCWSTR wzLocFileName,
__in_z_opt LPCWSTR wzLanguage,
__inout LPWSTR* psczPath,
__in BOOL useUILanguage
);
/********************************************************************
LocLoadFromFile - Loads a localization file
*******************************************************************/
HRESULT DAPI LocLoadFromFile(
__in_z LPCWSTR wzWxlFile,
__out WIX_LOCALIZATION** ppWixLoc
);
/********************************************************************
LocLoadFromResource - loads a localization file from a module's data
resource.
NOTE: The resource data must be UTF-8 encoded.
*******************************************************************/
HRESULT DAPI LocLoadFromResource(
__in HMODULE hModule,
__in_z LPCSTR szResource,
__out WIX_LOCALIZATION** ppWixLoc
);
/********************************************************************
LocFree - free memory allocated when loading a localization file
*******************************************************************/
void DAPI LocFree(
__in_opt WIX_LOCALIZATION* pWixLoc
);
/********************************************************************
LocLocalizeString - replace any #(loc.id) in a string with the
correct sub string
*******************************************************************/
HRESULT DAPI LocLocalizeString(
__in const WIX_LOCALIZATION* pWixLoc,
__inout LPWSTR* psczInput
);
/********************************************************************
LocGetControl - returns a control's localization information
*******************************************************************/
HRESULT DAPI LocGetControl(
__in const WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__out LOC_CONTROL** ppLocControl
);
/********************************************************************
LocGetString - returns a string's localization information
*******************************************************************/
extern "C" HRESULT DAPI LocGetString(
__in const WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__out LOC_STRING** ppLocString
);
/********************************************************************
LocAddString - adds a localization string
*******************************************************************/
extern "C" HRESULT DAPI LocAddString(
__in WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__in_z LPCWSTR wzLocString,
__in BOOL bOverridable
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
struct LOC_STRING
{
LPWSTR wzId;
LPWSTR wzText;
BOOL bOverridable;
};
const int LOC_CONTROL_NOT_SET = INT_MAX;
struct LOC_CONTROL
{
LPWSTR wzControl;
int nX;
int nY;
int nWidth;
int nHeight;
LPWSTR wzText;
};
const int WIX_LOCALIZATION_LANGUAGE_NOT_SET = INT_MAX;
struct WIX_LOCALIZATION
{
DWORD dwLangId;
DWORD cLocStrings;
LOC_STRING* rgLocStrings;
DWORD cLocControls;
LOC_CONTROL* rgLocControls;
};
/********************************************************************
LocProbeForFile - Searches for a localization file on disk.
*******************************************************************/
HRESULT DAPI LocProbeForFile(
__in_z LPCWSTR wzBasePath,
__in_z LPCWSTR wzLocFileName,
__in_z_opt LPCWSTR wzLanguage,
__inout LPWSTR* psczPath
);
/********************************************************************
LocProbeForFileEx - Searches for a localization file on disk.
useUILanguage should be set to TRUE.
*******************************************************************/
extern "C" HRESULT DAPI LocProbeForFileEx(
__in_z LPCWSTR wzBasePath,
__in_z LPCWSTR wzLocFileName,
__in_z_opt LPCWSTR wzLanguage,
__inout LPWSTR* psczPath,
__in BOOL useUILanguage
);
/********************************************************************
LocLoadFromFile - Loads a localization file
*******************************************************************/
HRESULT DAPI LocLoadFromFile(
__in_z LPCWSTR wzWxlFile,
__out WIX_LOCALIZATION** ppWixLoc
);
/********************************************************************
LocLoadFromResource - loads a localization file from a module's data
resource.
NOTE: The resource data must be UTF-8 encoded.
*******************************************************************/
HRESULT DAPI LocLoadFromResource(
__in HMODULE hModule,
__in_z LPCSTR szResource,
__out WIX_LOCALIZATION** ppWixLoc
);
/********************************************************************
LocFree - free memory allocated when loading a localization file
*******************************************************************/
void DAPI LocFree(
__in_opt WIX_LOCALIZATION* pWixLoc
);
/********************************************************************
LocLocalizeString - replace any #(loc.id) in a string with the
correct sub string
*******************************************************************/
HRESULT DAPI LocLocalizeString(
__in const WIX_LOCALIZATION* pWixLoc,
__inout LPWSTR* psczInput
);
/********************************************************************
LocGetControl - returns a control's localization information
*******************************************************************/
HRESULT DAPI LocGetControl(
__in const WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__out LOC_CONTROL** ppLocControl
);
/********************************************************************
LocGetString - returns a string's localization information
*******************************************************************/
extern "C" HRESULT DAPI LocGetString(
__in const WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__out LOC_STRING** ppLocString
);
/********************************************************************
LocAddString - adds a localization string
*******************************************************************/
extern "C" HRESULT DAPI LocAddString(
__in WIX_LOCALIZATION* pWixLoc,
__in_z LPCWSTR wzId,
__in_z LPCWSTR wzLocString,
__in BOOL bOverridable
);
#ifdef __cplusplus
}
#endif
+200 -200
View File
@@ -1,200 +1,200 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define LogExitOnFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); ExitTrace(x, f); goto LExit; }
#define LogExitOnFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); ExitTrace1(x, f, s); goto LExit; }
#define LogExitOnFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); ExitTrace2(x, f, s, t); goto LExit; }
#define LogExitOnFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; }
#define LogExitOnRootFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, f); goto LExit; }
#define LogExitOnRootFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; }
#define LogExitOnRootFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; }
#define LogExitOnRootFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; }
typedef HRESULT (DAPI *PFN_LOGSTRINGWORKRAW)(
__in_z LPCSTR szString,
__in_opt LPVOID pvContext
);
// enums
// structs
// functions
BOOL DAPI IsLogInitialized();
BOOL DAPI IsLogOpen();
void DAPI LogInitialize(
__in HMODULE hModule
);
HRESULT DAPI LogOpen(
__in_z_opt LPCWSTR wzDirectory,
__in_z LPCWSTR wzLog,
__in_z_opt LPCWSTR wzPostfix,
__in_z_opt LPCWSTR wzExt,
__in BOOL fAppend,
__in BOOL fHeader,
__out_z_opt LPWSTR* psczLogPath
);
void DAPI LogDisable();
void DAPI LogRedirect(
__in_opt PFN_LOGSTRINGWORKRAW vpfLogStringWorkRaw,
__in_opt LPVOID pvContext
);
HRESULT DAPI LogRename(
__in_z LPCWSTR wzNewPath
);
void DAPI LogClose(
__in BOOL fFooter
);
void DAPI LogUninitialize(
__in BOOL fFooter
);
BOOL DAPI LogIsOpen();
HRESULT DAPI LogSetSpecialParams(
__in_z_opt LPCWSTR wzSpecialBeginLine,
__in_z_opt LPCWSTR wzSpecialAfterTimeStamp,
__in_z_opt LPCWSTR wzSpecialEndLine
);
REPORT_LEVEL DAPI LogSetLevel(
__in REPORT_LEVEL rl,
__in BOOL fLogChange
);
REPORT_LEVEL DAPI LogGetLevel();
HRESULT DAPI LogGetPath(
__out_ecount_z(cchLogPath) LPWSTR pwzLogPath,
__in DWORD cchLogPath
);
HANDLE DAPI LogGetHandle();
HRESULT DAPIV LogString(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogStringArgs(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPIV LogStringLine(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogStringLineArgs(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI LogIdModuleArgs(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
__in_opt HMODULE hModule,
__in va_list args
);
/*
* Wraps LogIdModuleArgs, so inline to save the function call
*/
inline HRESULT LogId(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
...
)
{
HRESULT hr = S_OK;
va_list args;
va_start(args, dwLogId);
hr = LogIdModuleArgs(rl, dwLogId, NULL, args);
va_end(args);
return hr;
}
/*
* Wraps LogIdModuleArgs, so inline to save the function call
*/
inline HRESULT LogIdArgs(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
__in va_list args
)
{
return LogIdModuleArgs(rl, dwLogId, NULL, args);
}
HRESULT DAPIV LogErrorString(
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogErrorStringArgs(
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI LogErrorIdModule(
__in HRESULT hrError,
__in DWORD dwLogId,
__in_opt HMODULE hModule,
__in_z_opt LPCWSTR wzString1,
__in_z_opt LPCWSTR wzString2,
__in_z_opt LPCWSTR wzString3
);
inline HRESULT LogErrorId(
__in HRESULT hrError,
__in DWORD dwLogId,
__in_z_opt LPCWSTR wzString1,
__in_z_opt LPCWSTR wzString2,
__in_z_opt LPCWSTR wzString3
)
{
return LogErrorIdModule(hrError, dwLogId, NULL, wzString1, wzString2, wzString3);
}
HRESULT DAPI LogHeader();
HRESULT DAPI LogFooter();
HRESULT LogStringWorkRaw(
__in_z LPCSTR szLogData
);
// begin the switch of LogXXX to LogStringXXX
#define Log LogString
#define LogLine LogStringLine
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define LogExitOnFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); ExitTrace(x, f); goto LExit; }
#define LogExitOnFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); ExitTrace1(x, f, s); goto LExit; }
#define LogExitOnFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); ExitTrace2(x, f, s, t); goto LExit; }
#define LogExitOnFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; }
#define LogExitOnRootFailure(x, i, f) if (FAILED(x)) { LogErrorId(x, i, NULL, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, f); goto LExit; }
#define LogExitOnRootFailure1(x, i, f, s) if (FAILED(x)) { LogErrorId(x, i, s, NULL, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; }
#define LogExitOnRootFailure2(x, i, f, s, t) if (FAILED(x)) { LogErrorId(x, i, s, t, NULL); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; }
#define LogExitOnRootFailure3(x, i, f, s, t, u) if (FAILED(x)) { LogErrorId(x, i, s, t, u); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; }
typedef HRESULT (DAPI *PFN_LOGSTRINGWORKRAW)(
__in_z LPCSTR szString,
__in_opt LPVOID pvContext
);
// enums
// structs
// functions
BOOL DAPI IsLogInitialized();
BOOL DAPI IsLogOpen();
void DAPI LogInitialize(
__in HMODULE hModule
);
HRESULT DAPI LogOpen(
__in_z_opt LPCWSTR wzDirectory,
__in_z LPCWSTR wzLog,
__in_z_opt LPCWSTR wzPostfix,
__in_z_opt LPCWSTR wzExt,
__in BOOL fAppend,
__in BOOL fHeader,
__out_z_opt LPWSTR* psczLogPath
);
void DAPI LogDisable();
void DAPI LogRedirect(
__in_opt PFN_LOGSTRINGWORKRAW vpfLogStringWorkRaw,
__in_opt LPVOID pvContext
);
HRESULT DAPI LogRename(
__in_z LPCWSTR wzNewPath
);
void DAPI LogClose(
__in BOOL fFooter
);
void DAPI LogUninitialize(
__in BOOL fFooter
);
BOOL DAPI LogIsOpen();
HRESULT DAPI LogSetSpecialParams(
__in_z_opt LPCWSTR wzSpecialBeginLine,
__in_z_opt LPCWSTR wzSpecialAfterTimeStamp,
__in_z_opt LPCWSTR wzSpecialEndLine
);
REPORT_LEVEL DAPI LogSetLevel(
__in REPORT_LEVEL rl,
__in BOOL fLogChange
);
REPORT_LEVEL DAPI LogGetLevel();
HRESULT DAPI LogGetPath(
__out_ecount_z(cchLogPath) LPWSTR pwzLogPath,
__in DWORD cchLogPath
);
HANDLE DAPI LogGetHandle();
HRESULT DAPIV LogString(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogStringArgs(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPIV LogStringLine(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogStringLineArgs(
__in REPORT_LEVEL rl,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI LogIdModuleArgs(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
__in_opt HMODULE hModule,
__in va_list args
);
/*
* Wraps LogIdModuleArgs, so inline to save the function call
*/
inline HRESULT LogId(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
...
)
{
HRESULT hr = S_OK;
va_list args;
va_start(args, dwLogId);
hr = LogIdModuleArgs(rl, dwLogId, NULL, args);
va_end(args);
return hr;
}
/*
* Wraps LogIdModuleArgs, so inline to save the function call
*/
inline HRESULT LogIdArgs(
__in REPORT_LEVEL rl,
__in DWORD dwLogId,
__in va_list args
)
{
return LogIdModuleArgs(rl, dwLogId, NULL, args);
}
HRESULT DAPIV LogErrorString(
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
...
);
HRESULT DAPI LogErrorStringArgs(
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI LogErrorIdModule(
__in HRESULT hrError,
__in DWORD dwLogId,
__in_opt HMODULE hModule,
__in_z_opt LPCWSTR wzString1,
__in_z_opt LPCWSTR wzString2,
__in_z_opt LPCWSTR wzString3
);
inline HRESULT LogErrorId(
__in HRESULT hrError,
__in DWORD dwLogId,
__in_z_opt LPCWSTR wzString1,
__in_z_opt LPCWSTR wzString2,
__in_z_opt LPCWSTR wzString3
)
{
return LogErrorIdModule(hrError, dwLogId, NULL, wzString1, wzString2, wzString3);
}
HRESULT DAPI LogHeader();
HRESULT DAPI LogFooter();
HRESULT LogStringWorkRaw(
__in_z LPCSTR szLogData
);
// begin the switch of LogXXX to LogStringXXX
#define Log LogString
#define LogLine LogStringLine
#ifdef __cplusplus
}
#endif
+55 -55
View File
@@ -1,55 +1,55 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseMem(p) if (p) { MemFree(p); }
#define ReleaseNullMem(p) if (p) { MemFree(p); p = NULL; }
HRESULT DAPI MemInitialize();
void DAPI MemUninitialize();
LPVOID DAPI MemAlloc(
__in SIZE_T cbSize,
__in BOOL fZero
);
LPVOID DAPI MemReAlloc(
__in LPVOID pv,
__in SIZE_T cbSize,
__in BOOL fZero
);
HRESULT DAPI MemReAllocSecure(
__in LPVOID pv,
__in SIZE_T cbSize,
__in BOOL fZero,
__deref_out LPVOID* ppvNew
);
HRESULT DAPI MemEnsureArraySize(
__deref_out_bcount(cArray * cbArrayType) LPVOID* ppvArray,
__in DWORD cArray,
__in SIZE_T cbArrayType,
__in DWORD dwGrowthCount
);
HRESULT DAPI MemInsertIntoArray(
__deref_out_bcount((cExistingArray + cNumInsertItems) * cbArrayType) LPVOID* ppvArray,
__in DWORD dwInsertIndex,
__in DWORD cNumInsertItems,
__in DWORD cExistingArray,
__in SIZE_T cbArrayType,
__in DWORD dwGrowthCount
);
HRESULT DAPI MemFree(
__in LPVOID pv
);
SIZE_T DAPI MemSize(
__in LPCVOID pv
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseMem(p) if (p) { MemFree(p); }
#define ReleaseNullMem(p) if (p) { MemFree(p); p = NULL; }
HRESULT DAPI MemInitialize();
void DAPI MemUninitialize();
LPVOID DAPI MemAlloc(
__in SIZE_T cbSize,
__in BOOL fZero
);
LPVOID DAPI MemReAlloc(
__in LPVOID pv,
__in SIZE_T cbSize,
__in BOOL fZero
);
HRESULT DAPI MemReAllocSecure(
__in LPVOID pv,
__in SIZE_T cbSize,
__in BOOL fZero,
__deref_out LPVOID* ppvNew
);
HRESULT DAPI MemEnsureArraySize(
__deref_out_bcount(cArray * cbArrayType) LPVOID* ppvArray,
__in DWORD cArray,
__in SIZE_T cbArrayType,
__in DWORD dwGrowthCount
);
HRESULT DAPI MemInsertIntoArray(
__deref_out_bcount((cExistingArray + cNumInsertItems) * cbArrayType) LPVOID* ppvArray,
__in DWORD dwInsertIndex,
__in DWORD cNumInsertItems,
__in DWORD cExistingArray,
__in SIZE_T cbArrayType,
__in DWORD dwGrowthCount
);
HRESULT DAPI MemFree(
__in LPVOID pv
);
SIZE_T DAPI MemSize(
__in LPCVOID pv
);
#ifdef __cplusplus
}
#endif
+52 -52
View File
@@ -1,52 +1,52 @@
#pragma once
// 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.
#include <iadmw.h>
#include <iiscnfg.h>
#include <iwamreg.h>
#include <mddefw.h>
#ifdef __cplusplus
extern "C" {
#endif
// structs
// prototypes
HRESULT DAPI MetaFindWebBase(
__in IMSAdminBaseW* piMetabase,
__in_z LPCWSTR wzIP,
__in int iPort,
__in_z LPCWSTR wzHeader,
__in BOOL fSecure,
__out_ecount(cchWebBase) LPWSTR wzWebBase,
__in DWORD cchWebBase
);
HRESULT DAPI MetaFindFreeWebBase(
__in IMSAdminBaseW* piMetabase,
__out_ecount(cchWebBase) LPWSTR wzWebBase,
__in DWORD cchWebBase
);
HRESULT DAPI MetaOpenKey(
__in IMSAdminBaseW* piMetabase,
__in METADATA_HANDLE mhKey,
__in_z LPCWSTR wzKey,
__in DWORD dwAccess,
__in DWORD cRetries,
__out METADATA_HANDLE* pmh
);
HRESULT DAPI MetaGetValue(
__in IMSAdminBaseW* piMetabase,
__in METADATA_HANDLE mhKey,
__in_z LPCWSTR wzKey,
__inout METADATA_RECORD* pmr
);
void DAPI MetaFreeValue(
__in METADATA_RECORD* pmr
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <iadmw.h>
#include <iiscnfg.h>
#include <iwamreg.h>
#include <mddefw.h>
#ifdef __cplusplus
extern "C" {
#endif
// structs
// prototypes
HRESULT DAPI MetaFindWebBase(
__in IMSAdminBaseW* piMetabase,
__in_z LPCWSTR wzIP,
__in int iPort,
__in_z LPCWSTR wzHeader,
__in BOOL fSecure,
__out_ecount(cchWebBase) LPWSTR wzWebBase,
__in DWORD cchWebBase
);
HRESULT DAPI MetaFindFreeWebBase(
__in IMSAdminBaseW* piMetabase,
__out_ecount(cchWebBase) LPWSTR wzWebBase,
__in DWORD cchWebBase
);
HRESULT DAPI MetaOpenKey(
__in IMSAdminBaseW* piMetabase,
__in METADATA_HANDLE mhKey,
__in_z LPCWSTR wzKey,
__in DWORD dwAccess,
__in DWORD cRetries,
__out METADATA_HANDLE* pmh
);
HRESULT DAPI MetaGetValue(
__in IMSAdminBaseW* piMetabase,
__in METADATA_HANDLE mhKey,
__in_z LPCWSTR wzKey,
__inout METADATA_RECORD* pmr
);
void DAPI MetaFreeValue(
__in METADATA_RECORD* pmr
);
#ifdef __cplusplus
}
#endif
+39 -39
View File
@@ -1,39 +1,39 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum OS_VERSION
{
OS_VERSION_UNKNOWN,
OS_VERSION_WINNT,
OS_VERSION_WIN2000,
OS_VERSION_WINXP,
OS_VERSION_WIN2003,
OS_VERSION_VISTA,
OS_VERSION_WIN2008,
OS_VERSION_WIN7,
OS_VERSION_WIN2008_R2,
OS_VERSION_FUTURE
} OS_VERSION;
void DAPI OsGetVersion(
__out OS_VERSION* pVersion,
__out DWORD* pdwServicePack
);
HRESULT DAPI OsCouldRunPrivileged(
__out BOOL* pfPrivileged
);
HRESULT DAPI OsIsRunningPrivileged(
__out BOOL* pfPrivileged
);
HRESULT DAPI OsIsUacEnabled(
__out BOOL* pfUacEnabled
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum OS_VERSION
{
OS_VERSION_UNKNOWN,
OS_VERSION_WINNT,
OS_VERSION_WIN2000,
OS_VERSION_WINXP,
OS_VERSION_WIN2003,
OS_VERSION_VISTA,
OS_VERSION_WIN2008,
OS_VERSION_WIN7,
OS_VERSION_WIN2008_R2,
OS_VERSION_FUTURE
} OS_VERSION;
void DAPI OsGetVersion(
__out OS_VERSION* pVersion,
__out DWORD* pdwServicePack
);
HRESULT DAPI OsCouldRunPrivileged(
__out BOOL* pfPrivileged
);
HRESULT DAPI OsIsRunningPrivileged(
__out BOOL* pfPrivileged
);
HRESULT DAPI OsIsUacEnabled(
__out BOOL* pfUacEnabled
);
#ifdef __cplusplus
}
#endif
+228 -228
View File
@@ -1,228 +1,228 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum PATH_EXPAND
{
PATH_EXPAND_ENVIRONMENT = 0x0001,
PATH_EXPAND_FULLPATH = 0x0002,
} PATH_EXPAND;
/*******************************************************************
PathCommandLineAppend - appends a command line argument on to a
string such that ::CommandLineToArgv() will shred them correctly
(i.e. quote arguments with spaces in them).
********************************************************************/
DAPI_(HRESULT) PathCommandLineAppend(
__deref_out_z LPWSTR* psczCommandLine,
__in_z LPCWSTR wzArgument
);
/*******************************************************************
PathFile - returns a pointer to the file part of the path.
********************************************************************/
DAPI_(LPWSTR) PathFile(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathExtension - returns a pointer to the extension part of the path
(including the dot).
********************************************************************/
DAPI_(LPCWSTR) PathExtension(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathGetDirectory - extracts the directory from a path.
********************************************************************/
DAPI_(HRESULT) PathGetDirectory(
__in_z LPCWSTR wzPath,
__out LPWSTR *psczDirectory
);
/*******************************************************************
PathGetParentPath - extracts the parent directory from a full path.
********************************************************************/
DAPI_(HRESULT) PathGetParentPath(
__in_z LPCWSTR wzPath,
__out LPWSTR *psczDirectory
);
/*******************************************************************
PathExpand - gets the full path to a file resolving environment
variables along the way.
********************************************************************/
DAPI_(HRESULT) PathExpand(
__out LPWSTR *psczFullPath,
__in_z LPCWSTR wzRelativePath,
__in DWORD dwResolveFlags
);
/*******************************************************************
PathPrefix - prefixes a full path with \\?\ or \\?\UNC as
appropriate.
********************************************************************/
DAPI_(HRESULT) PathPrefix(
__inout LPWSTR *psczFullPath
);
/*******************************************************************
PathFixedBackslashTerminate - appends a \ if path does not have it
already, but fails if the buffer is
insufficient.
********************************************************************/
DAPI_(HRESULT) PathFixedBackslashTerminate(
__inout_ecount_z(cchPath) LPWSTR wzPath,
__in DWORD_PTR cchPath
);
/*******************************************************************
PathBackslashTerminate - appends a \ if path does not have it
already.
********************************************************************/
DAPI_(HRESULT) PathBackslashTerminate(
__inout LPWSTR* psczPath
);
/*******************************************************************
PathForCurrentProcess - gets the full path to the currently executing
process or (optionally) a module inside the process.
********************************************************************/
DAPI_(HRESULT) PathForCurrentProcess(
__inout LPWSTR *psczFullPath,
__in_opt HMODULE hModule
);
/*******************************************************************
PathRelativeToModule - gets the name of a file in the same
directory as the current process or (optionally) a module inside
the process
********************************************************************/
DAPI_(HRESULT) PathRelativeToModule(
__inout LPWSTR *psczFullPath,
__in_opt LPCWSTR wzFileName,
__in_opt HMODULE hModule
);
/*******************************************************************
PathCreateTempFile
Note: if wzDirectory is null, ::GetTempPath() will be used instead.
if wzFileNameTemplate is null, GetTempFileName() will be used instead.
*******************************************************************/
DAPI_(HRESULT) PathCreateTempFile(
__in_opt LPCWSTR wzDirectory,
__in_opt __format_string LPCWSTR wzFileNameTemplate,
__in DWORD dwUniqueCount,
__in DWORD dwFileAttributes,
__out_opt LPWSTR* psczTempFile,
__out_opt HANDLE* phTempFile
);
/*******************************************************************
PathCreateTimeBasedTempFile - creates an empty temp file based on current
system time
********************************************************************/
DAPI_(HRESULT) PathCreateTimeBasedTempFile(
__in_z_opt LPCWSTR wzDirectory,
__in_z LPCWSTR wzPrefix,
__in_z_opt LPCWSTR wzPostfix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* psczTempFile,
__out_opt HANDLE* phTempFile
);
/*******************************************************************
PathCreateTempDirectory
Note: if wzDirectory is null, ::GetTempPath() will be used instead.
*******************************************************************/
DAPI_(HRESULT) PathCreateTempDirectory(
__in_opt LPCWSTR wzDirectory,
__in __format_string LPCWSTR wzDirectoryNameTemplate,
__in DWORD dwUniqueCount,
__out LPWSTR* psczTempDirectory
);
/*******************************************************************
PathGetKnownFolder - returns the path to a well-known shell folder
*******************************************************************/
DAPI_(HRESULT) PathGetKnownFolder(
__in int csidl,
__out LPWSTR* psczKnownFolder
);
/*******************************************************************
PathIsAbsolute - returns true if the path is absolute; false
otherwise.
*******************************************************************/
DAPI_(BOOL) PathIsAbsolute(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathConcat - like .NET's Path.Combine, lets you build up a path
one piece -- file or directory -- at a time.
*******************************************************************/
DAPI_(HRESULT) PathConcat(
__in_opt LPCWSTR wzPath1,
__in_opt LPCWSTR wzPath2,
__deref_out_z LPWSTR* psczCombined
);
/*******************************************************************
PathEnsureQuoted - ensures that a path is quoted; optionally,
this function also terminates a directory with a backslash
if it is not already.
*******************************************************************/
DAPI_(HRESULT) PathEnsureQuoted(
__inout LPWSTR* ppszPath,
__in BOOL fDirectory
);
/*******************************************************************
PathCompare - compares the fully expanded path of the two paths using
::CompareStringW().
*******************************************************************/
DAPI_(HRESULT) PathCompare(
__in_z LPCWSTR wzPath1,
__in_z LPCWSTR wzPath2,
__out int* pnResult
);
/*******************************************************************
PathCompress - sets the compression state on an existing file or
directory. A no-op on file systems that don't
support compression.
*******************************************************************/
DAPI_(HRESULT) PathCompress(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathCanonicalizePath - wrapper around PathCanonicalizeW.
*******************************************************************/
DAPI_(HRESULT) PathCanonicalizePath(
__in_z LPCWSTR wzPath,
__deref_out_z LPWSTR* psczCanonicalized
);
/*******************************************************************
PathDirectoryContainsPath - checks if wzPath is located inside
wzDirectory.
*******************************************************************/
DAPI_(HRESULT) PathDirectoryContainsPath(
__in_z LPCWSTR wzDirectory,
__in_z LPCWSTR wzPath
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum PATH_EXPAND
{
PATH_EXPAND_ENVIRONMENT = 0x0001,
PATH_EXPAND_FULLPATH = 0x0002,
} PATH_EXPAND;
/*******************************************************************
PathCommandLineAppend - appends a command line argument on to a
string such that ::CommandLineToArgv() will shred them correctly
(i.e. quote arguments with spaces in them).
********************************************************************/
DAPI_(HRESULT) PathCommandLineAppend(
__deref_out_z LPWSTR* psczCommandLine,
__in_z LPCWSTR wzArgument
);
/*******************************************************************
PathFile - returns a pointer to the file part of the path.
********************************************************************/
DAPI_(LPWSTR) PathFile(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathExtension - returns a pointer to the extension part of the path
(including the dot).
********************************************************************/
DAPI_(LPCWSTR) PathExtension(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathGetDirectory - extracts the directory from a path.
********************************************************************/
DAPI_(HRESULT) PathGetDirectory(
__in_z LPCWSTR wzPath,
__out LPWSTR *psczDirectory
);
/*******************************************************************
PathGetParentPath - extracts the parent directory from a full path.
********************************************************************/
DAPI_(HRESULT) PathGetParentPath(
__in_z LPCWSTR wzPath,
__out LPWSTR *psczDirectory
);
/*******************************************************************
PathExpand - gets the full path to a file resolving environment
variables along the way.
********************************************************************/
DAPI_(HRESULT) PathExpand(
__out LPWSTR *psczFullPath,
__in_z LPCWSTR wzRelativePath,
__in DWORD dwResolveFlags
);
/*******************************************************************
PathPrefix - prefixes a full path with \\?\ or \\?\UNC as
appropriate.
********************************************************************/
DAPI_(HRESULT) PathPrefix(
__inout LPWSTR *psczFullPath
);
/*******************************************************************
PathFixedBackslashTerminate - appends a \ if path does not have it
already, but fails if the buffer is
insufficient.
********************************************************************/
DAPI_(HRESULT) PathFixedBackslashTerminate(
__inout_ecount_z(cchPath) LPWSTR wzPath,
__in DWORD_PTR cchPath
);
/*******************************************************************
PathBackslashTerminate - appends a \ if path does not have it
already.
********************************************************************/
DAPI_(HRESULT) PathBackslashTerminate(
__inout LPWSTR* psczPath
);
/*******************************************************************
PathForCurrentProcess - gets the full path to the currently executing
process or (optionally) a module inside the process.
********************************************************************/
DAPI_(HRESULT) PathForCurrentProcess(
__inout LPWSTR *psczFullPath,
__in_opt HMODULE hModule
);
/*******************************************************************
PathRelativeToModule - gets the name of a file in the same
directory as the current process or (optionally) a module inside
the process
********************************************************************/
DAPI_(HRESULT) PathRelativeToModule(
__inout LPWSTR *psczFullPath,
__in_opt LPCWSTR wzFileName,
__in_opt HMODULE hModule
);
/*******************************************************************
PathCreateTempFile
Note: if wzDirectory is null, ::GetTempPath() will be used instead.
if wzFileNameTemplate is null, GetTempFileName() will be used instead.
*******************************************************************/
DAPI_(HRESULT) PathCreateTempFile(
__in_opt LPCWSTR wzDirectory,
__in_opt __format_string LPCWSTR wzFileNameTemplate,
__in DWORD dwUniqueCount,
__in DWORD dwFileAttributes,
__out_opt LPWSTR* psczTempFile,
__out_opt HANDLE* phTempFile
);
/*******************************************************************
PathCreateTimeBasedTempFile - creates an empty temp file based on current
system time
********************************************************************/
DAPI_(HRESULT) PathCreateTimeBasedTempFile(
__in_z_opt LPCWSTR wzDirectory,
__in_z LPCWSTR wzPrefix,
__in_z_opt LPCWSTR wzPostfix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* psczTempFile,
__out_opt HANDLE* phTempFile
);
/*******************************************************************
PathCreateTempDirectory
Note: if wzDirectory is null, ::GetTempPath() will be used instead.
*******************************************************************/
DAPI_(HRESULT) PathCreateTempDirectory(
__in_opt LPCWSTR wzDirectory,
__in __format_string LPCWSTR wzDirectoryNameTemplate,
__in DWORD dwUniqueCount,
__out LPWSTR* psczTempDirectory
);
/*******************************************************************
PathGetKnownFolder - returns the path to a well-known shell folder
*******************************************************************/
DAPI_(HRESULT) PathGetKnownFolder(
__in int csidl,
__out LPWSTR* psczKnownFolder
);
/*******************************************************************
PathIsAbsolute - returns true if the path is absolute; false
otherwise.
*******************************************************************/
DAPI_(BOOL) PathIsAbsolute(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathConcat - like .NET's Path.Combine, lets you build up a path
one piece -- file or directory -- at a time.
*******************************************************************/
DAPI_(HRESULT) PathConcat(
__in_opt LPCWSTR wzPath1,
__in_opt LPCWSTR wzPath2,
__deref_out_z LPWSTR* psczCombined
);
/*******************************************************************
PathEnsureQuoted - ensures that a path is quoted; optionally,
this function also terminates a directory with a backslash
if it is not already.
*******************************************************************/
DAPI_(HRESULT) PathEnsureQuoted(
__inout LPWSTR* ppszPath,
__in BOOL fDirectory
);
/*******************************************************************
PathCompare - compares the fully expanded path of the two paths using
::CompareStringW().
*******************************************************************/
DAPI_(HRESULT) PathCompare(
__in_z LPCWSTR wzPath1,
__in_z LPCWSTR wzPath2,
__out int* pnResult
);
/*******************************************************************
PathCompress - sets the compression state on an existing file or
directory. A no-op on file systems that don't
support compression.
*******************************************************************/
DAPI_(HRESULT) PathCompress(
__in_z LPCWSTR wzPath
);
/*******************************************************************
PathCanonicalizePath - wrapper around PathCanonicalizeW.
*******************************************************************/
DAPI_(HRESULT) PathCanonicalizePath(
__in_z LPCWSTR wzPath,
__deref_out_z LPWSTR* psczCanonicalized
);
/*******************************************************************
PathDirectoryContainsPath - checks if wzPath is located inside
wzDirectory.
*******************************************************************/
DAPI_(HRESULT) PathDirectoryContainsPath(
__in_z LPCWSTR wzDirectory,
__in_z LPCWSTR wzPath
);
#ifdef __cplusplus
}
#endif
+24 -24
View File
@@ -1,24 +1,24 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// structs
// functions
void DAPI PerfInitialize(
);
void DAPI PerfClickTime(
__out_opt LARGE_INTEGER* pliElapsed
);
double DAPI PerfConvertToSeconds(
__in const LARGE_INTEGER* pli
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// structs
// functions
void DAPI PerfInitialize(
);
void DAPI PerfClickTime(
__out_opt LARGE_INTEGER* pliElapsed
);
double DAPI PerfConvertToSeconds(
__in const LARGE_INTEGER* pli
);
#ifdef __cplusplus
}
#endif
+39 -39
View File
@@ -1,39 +1,39 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
const LPCWSTR POLICY_BURN_REGISTRY_PATH = L"WiX\\Burn";
/********************************************************************
PolcReadNumber - reads a number from policy.
NOTE: S_FALSE returned if policy not set.
NOTE: out is set to default on S_FALSE or any error.
********************************************************************/
HRESULT DAPI PolcReadNumber(
__in_z LPCWSTR wzPolicyPath,
__in_z LPCWSTR wzPolicyName,
__in DWORD dwDefault,
__out DWORD* pdw
);
/********************************************************************
PolcReadString - reads a string from policy.
NOTE: S_FALSE returned if policy not set.
NOTE: out is set to default on S_FALSE or any error.
********************************************************************/
HRESULT DAPI PolcReadString(
__in_z LPCWSTR wzPolicyPath,
__in_z LPCWSTR wzPolicyName,
__in_z_opt LPCWSTR wzDefault,
__deref_out_z LPWSTR* pscz
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
const LPCWSTR POLICY_BURN_REGISTRY_PATH = L"WiX\\Burn";
/********************************************************************
PolcReadNumber - reads a number from policy.
NOTE: S_FALSE returned if policy not set.
NOTE: out is set to default on S_FALSE or any error.
********************************************************************/
HRESULT DAPI PolcReadNumber(
__in_z LPCWSTR wzPolicyPath,
__in_z LPCWSTR wzPolicyName,
__in DWORD dwDefault,
__out DWORD* pdw
);
/********************************************************************
PolcReadString - reads a string from policy.
NOTE: S_FALSE returned if policy not set.
NOTE: out is set to default on S_FALSE or any error.
********************************************************************/
HRESULT DAPI PolcReadString(
__in_z LPCWSTR wzPolicyPath,
__in_z LPCWSTR wzPolicyName,
__in_z_opt LPCWSTR wzDefault,
__deref_out_z LPWSTR* pscz
);
#ifdef __cplusplus
}
#endif
+79 -79
View File
@@ -1,79 +1,79 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// structs
typedef struct _PROC_FILESYSTEMREDIRECTION
{
BOOL fDisabled;
LPVOID pvRevertState;
} PROC_FILESYSTEMREDIRECTION;
HRESULT DAPI ProcElevated(
__in HANDLE hProcess,
__out BOOL* pfElevated
);
HRESULT DAPI ProcWow64(
__in HANDLE hProcess,
__out BOOL* pfWow64
);
HRESULT DAPI ProcNativeMachine(
__in HANDLE hProcess,
__out USHORT* pusNativeMachine
);
HRESULT DAPI ProcDisableWowFileSystemRedirection(
__in PROC_FILESYSTEMREDIRECTION* pfsr
);
HRESULT DAPI ProcRevertWowFileSystemRedirection(
__in PROC_FILESYSTEMREDIRECTION* pfsr
);
HRESULT DAPI ProcExec(
__in_z LPCWSTR wzExecutablePath,
__in_z_opt LPCWSTR wzCommandLine,
__in int nCmdShow,
__out HANDLE *phProcess
);
HRESULT DAPI ProcExecute(
__in_z LPWSTR wzCommand,
__out HANDLE *phProcess,
__out_opt HANDLE *phChildStdIn,
__out_opt HANDLE *phChildStdOutErr
);
HRESULT DAPI ProcWaitForCompletion(
__in HANDLE hProcess,
__in DWORD dwTimeout,
__out DWORD *pReturnCode
);
HRESULT DAPI ProcWaitForIds(
__in_ecount(cProcessIds) const DWORD* pdwProcessIds,
__in DWORD cProcessIds,
__in DWORD dwMilliseconds
);
HRESULT DAPI ProcCloseIds(
__in_ecount(cProcessIds) const DWORD* pdwProcessIds,
__in DWORD cProcessIds
);
// following code in proc2utl.cpp due to dependency on PSAPI.DLL.
HRESULT DAPI ProcFindAllIdsFromExeName(
__in_z LPCWSTR wzExeName,
__out DWORD** ppdwProcessIds,
__out DWORD* pcProcessIds
);
// following code in proc3utl.cpp due to dependency on Wtsapi32.DLL.
HRESULT DAPI ProcExecuteAsInteractiveUser(
__in_z LPCWSTR wzExecutablePath,
__in_z LPCWSTR wzCommand,
__out HANDLE *phProcess
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
// structs
typedef struct _PROC_FILESYSTEMREDIRECTION
{
BOOL fDisabled;
LPVOID pvRevertState;
} PROC_FILESYSTEMREDIRECTION;
HRESULT DAPI ProcElevated(
__in HANDLE hProcess,
__out BOOL* pfElevated
);
HRESULT DAPI ProcWow64(
__in HANDLE hProcess,
__out BOOL* pfWow64
);
HRESULT DAPI ProcNativeMachine(
__in HANDLE hProcess,
__out USHORT* pusNativeMachine
);
HRESULT DAPI ProcDisableWowFileSystemRedirection(
__in PROC_FILESYSTEMREDIRECTION* pfsr
);
HRESULT DAPI ProcRevertWowFileSystemRedirection(
__in PROC_FILESYSTEMREDIRECTION* pfsr
);
HRESULT DAPI ProcExec(
__in_z LPCWSTR wzExecutablePath,
__in_z_opt LPCWSTR wzCommandLine,
__in int nCmdShow,
__out HANDLE *phProcess
);
HRESULT DAPI ProcExecute(
__in_z LPWSTR wzCommand,
__out HANDLE *phProcess,
__out_opt HANDLE *phChildStdIn,
__out_opt HANDLE *phChildStdOutErr
);
HRESULT DAPI ProcWaitForCompletion(
__in HANDLE hProcess,
__in DWORD dwTimeout,
__out DWORD *pReturnCode
);
HRESULT DAPI ProcWaitForIds(
__in_ecount(cProcessIds) const DWORD* pdwProcessIds,
__in DWORD cProcessIds,
__in DWORD dwMilliseconds
);
HRESULT DAPI ProcCloseIds(
__in_ecount(cProcessIds) const DWORD* pdwProcessIds,
__in DWORD cProcessIds
);
// following code in proc2utl.cpp due to dependency on PSAPI.DLL.
HRESULT DAPI ProcFindAllIdsFromExeName(
__in_z LPCWSTR wzExeName,
__out DWORD** ppdwProcessIds,
__out DWORD* pcProcessIds
);
// following code in proc3utl.cpp due to dependency on Wtsapi32.DLL.
HRESULT DAPI ProcExecuteAsInteractiveUser(
__in_z LPCWSTR wzExecutablePath,
__in_z LPCWSTR wzCommand,
__out HANDLE *phProcess
);
#ifdef __cplusplus
}
#endif
+233 -233
View File
@@ -1,233 +1,233 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseRegKey(h) if (h) { ::RegCloseKey(h); h = NULL; }
typedef enum REG_KEY_BITNESS
{
REG_KEY_DEFAULT = 0,
REG_KEY_32BIT = 1,
REG_KEY_64BIT = 2
} REG_KEY_BITNESS;
typedef LSTATUS (APIENTRY *PFN_REGCREATEKEYEXW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey,
__reserved DWORD Reserved,
__in_opt LPWSTR lpClass,
__in DWORD dwOptions,
__in REGSAM samDesired,
__in_opt CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__out PHKEY phkResult,
__out_opt LPDWORD lpdwDisposition
);
typedef LSTATUS (APIENTRY *PFN_REGOPENKEYEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__reserved DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEKEYEXW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey,
__in REGSAM samDesired,
__reserved DWORD Reserved
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEKEYW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey
);
typedef LSTATUS (APIENTRY *PFN_REGENUMKEYEXW)(
__in HKEY hKey,
__in DWORD dwIndex,
__out LPWSTR lpName,
__inout LPDWORD lpcName,
__reserved LPDWORD lpReserved,
__inout LPWSTR lpClass,
__inout_opt LPDWORD lpcClass,
__out_opt PFILETIME lpftLastWriteTime
);
typedef LSTATUS (APIENTRY *PFN_REGENUMVALUEW)(
__in HKEY hKey,
__in DWORD dwIndex,
__out LPWSTR lpValueName,
__inout LPDWORD lpcchValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_opt LPBYTE lpData,
__out_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PFN_REGQUERYINFOKEYW)(
__in HKEY hKey,
__out LPWSTR lpClass,
__inout_opt LPDWORD lpcClass,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpcSubKeys,
__out_opt LPDWORD lpcMaxSubKeyLen,
__out_opt LPDWORD lpcMaxClassLen,
__out_opt LPDWORD lpcValues,
__out_opt LPDWORD lpcMaxValueNameLen,
__out_opt LPDWORD lpcMaxValueLen,
__out_opt LPDWORD lpcbSecurityDescriptor,
__out_opt PFILETIME lpftLastWriteTime
);
typedef LSTATUS (APIENTRY *PFN_REGQUERYVALUEEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_bcount_part_opt(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PFN_REGSETVALUEEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved DWORD Reserved,
__in DWORD dwType,
__in_bcount_opt(cbData) CONST BYTE* lpData,
__in DWORD cbData
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEVALUEW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName
);
HRESULT DAPI RegInitialize();
void DAPI RegUninitialize();
void DAPI RegFunctionOverride(
__in_opt PFN_REGCREATEKEYEXW pfnRegCreateKeyExW,
__in_opt PFN_REGOPENKEYEXW pfnRegOpenKeyExW,
__in_opt PFN_REGDELETEKEYEXW pfnRegDeleteKeyExW,
__in_opt PFN_REGENUMKEYEXW pfnRegEnumKeyExW,
__in_opt PFN_REGENUMVALUEW pfnRegEnumValueW,
__in_opt PFN_REGQUERYINFOKEYW pfnRegQueryInfoKeyW,
__in_opt PFN_REGQUERYVALUEEXW pfnRegQueryValueExW,
__in_opt PFN_REGSETVALUEEXW pfnRegSetValueExW,
__in_opt PFN_REGDELETEVALUEW pfnRegDeleteValueW
);
HRESULT DAPI RegCreate(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__out HKEY* phk
);
HRESULT DAPI RegCreateEx(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__in BOOL fVolatile,
__in_opt SECURITY_ATTRIBUTES* pSecurityAttributes,
__out HKEY* phk,
__out_opt BOOL* pfCreated
);
HRESULT DAPI RegOpen(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__out HKEY* phk
);
HRESULT DAPI RegDelete(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in REG_KEY_BITNESS kbKeyBitness,
__in BOOL fDeleteTree
);
HRESULT DAPI RegKeyEnum(
__in HKEY hk,
__in DWORD dwIndex,
__deref_out_z LPWSTR* psczKey
);
HRESULT DAPI RegValueEnum(
__in HKEY hk,
__in DWORD dwIndex,
__deref_out_z LPWSTR* psczName,
__out_opt DWORD *pdwType
);
HRESULT DAPI RegGetType(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD *pdwType
);
HRESULT DAPI RegReadBinary(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_bcount_opt(*pcbBuffer) BYTE** ppbBuffer,
__out SIZE_T *pcbBuffer
);
HRESULT DAPI RegReadString(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI RegReadStringArray(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_ecount_opt(pcStrings) LPWSTR** prgsczStrings,
__out DWORD *pcStrings
);
HRESULT DAPI RegReadVersion(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD64* pdw64Version
);
HRESULT DAPI RegReadNumber(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD* pdwValue
);
HRESULT DAPI RegReadQword(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD64* pqwValue
);
HRESULT DAPI RegWriteBinary(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_bcount(cbBuffer) const BYTE *pbBuffer,
__in DWORD cbBuffer
);
HRESULT DAPI RegWriteString(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI RegWriteStringArray(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_ecount(cValues) LPWSTR *rgwzStrings,
__in DWORD cStrings
);
HRESULT DAPI RegWriteStringFormatted(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in __format_string LPCWSTR szFormat,
...
);
HRESULT DAPI RegWriteNumber(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in DWORD dwValue
);
HRESULT DAPI RegWriteQword(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in DWORD64 qwValue
);
HRESULT DAPI RegQueryKey(
__in HKEY hk,
__out_opt DWORD* pcSubKeys,
__out_opt DWORD* pcValues
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseRegKey(h) if (h) { ::RegCloseKey(h); h = NULL; }
typedef enum REG_KEY_BITNESS
{
REG_KEY_DEFAULT = 0,
REG_KEY_32BIT = 1,
REG_KEY_64BIT = 2
} REG_KEY_BITNESS;
typedef LSTATUS (APIENTRY *PFN_REGCREATEKEYEXW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey,
__reserved DWORD Reserved,
__in_opt LPWSTR lpClass,
__in DWORD dwOptions,
__in REGSAM samDesired,
__in_opt CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__out PHKEY phkResult,
__out_opt LPDWORD lpdwDisposition
);
typedef LSTATUS (APIENTRY *PFN_REGOPENKEYEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__reserved DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEKEYEXW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey,
__in REGSAM samDesired,
__reserved DWORD Reserved
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEKEYW)(
__in HKEY hKey,
__in LPCWSTR lpSubKey
);
typedef LSTATUS (APIENTRY *PFN_REGENUMKEYEXW)(
__in HKEY hKey,
__in DWORD dwIndex,
__out LPWSTR lpName,
__inout LPDWORD lpcName,
__reserved LPDWORD lpReserved,
__inout LPWSTR lpClass,
__inout_opt LPDWORD lpcClass,
__out_opt PFILETIME lpftLastWriteTime
);
typedef LSTATUS (APIENTRY *PFN_REGENUMVALUEW)(
__in HKEY hKey,
__in DWORD dwIndex,
__out LPWSTR lpValueName,
__inout LPDWORD lpcchValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_opt LPBYTE lpData,
__out_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PFN_REGQUERYINFOKEYW)(
__in HKEY hKey,
__out LPWSTR lpClass,
__inout_opt LPDWORD lpcClass,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpcSubKeys,
__out_opt LPDWORD lpcMaxSubKeyLen,
__out_opt LPDWORD lpcMaxClassLen,
__out_opt LPDWORD lpcValues,
__out_opt LPDWORD lpcMaxValueNameLen,
__out_opt LPDWORD lpcMaxValueLen,
__out_opt LPDWORD lpcbSecurityDescriptor,
__out_opt PFILETIME lpftLastWriteTime
);
typedef LSTATUS (APIENTRY *PFN_REGQUERYVALUEEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_bcount_part_opt(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PFN_REGSETVALUEEXW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved DWORD Reserved,
__in DWORD dwType,
__in_bcount_opt(cbData) CONST BYTE* lpData,
__in DWORD cbData
);
typedef LSTATUS (APIENTRY *PFN_REGDELETEVALUEW)(
__in HKEY hKey,
__in_opt LPCWSTR lpValueName
);
HRESULT DAPI RegInitialize();
void DAPI RegUninitialize();
void DAPI RegFunctionOverride(
__in_opt PFN_REGCREATEKEYEXW pfnRegCreateKeyExW,
__in_opt PFN_REGOPENKEYEXW pfnRegOpenKeyExW,
__in_opt PFN_REGDELETEKEYEXW pfnRegDeleteKeyExW,
__in_opt PFN_REGENUMKEYEXW pfnRegEnumKeyExW,
__in_opt PFN_REGENUMVALUEW pfnRegEnumValueW,
__in_opt PFN_REGQUERYINFOKEYW pfnRegQueryInfoKeyW,
__in_opt PFN_REGQUERYVALUEEXW pfnRegQueryValueExW,
__in_opt PFN_REGSETVALUEEXW pfnRegSetValueExW,
__in_opt PFN_REGDELETEVALUEW pfnRegDeleteValueW
);
HRESULT DAPI RegCreate(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__out HKEY* phk
);
HRESULT DAPI RegCreateEx(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__in BOOL fVolatile,
__in_opt SECURITY_ATTRIBUTES* pSecurityAttributes,
__out HKEY* phk,
__out_opt BOOL* pfCreated
);
HRESULT DAPI RegOpen(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in DWORD dwAccess,
__out HKEY* phk
);
HRESULT DAPI RegDelete(
__in HKEY hkRoot,
__in_z LPCWSTR wzSubKey,
__in REG_KEY_BITNESS kbKeyBitness,
__in BOOL fDeleteTree
);
HRESULT DAPI RegKeyEnum(
__in HKEY hk,
__in DWORD dwIndex,
__deref_out_z LPWSTR* psczKey
);
HRESULT DAPI RegValueEnum(
__in HKEY hk,
__in DWORD dwIndex,
__deref_out_z LPWSTR* psczName,
__out_opt DWORD *pdwType
);
HRESULT DAPI RegGetType(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD *pdwType
);
HRESULT DAPI RegReadBinary(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_bcount_opt(*pcbBuffer) BYTE** ppbBuffer,
__out SIZE_T *pcbBuffer
);
HRESULT DAPI RegReadString(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_z LPWSTR* psczValue
);
HRESULT DAPI RegReadStringArray(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__deref_out_ecount_opt(pcStrings) LPWSTR** prgsczStrings,
__out DWORD *pcStrings
);
HRESULT DAPI RegReadVersion(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD64* pdw64Version
);
HRESULT DAPI RegReadNumber(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD* pdwValue
);
HRESULT DAPI RegReadQword(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__out DWORD64* pqwValue
);
HRESULT DAPI RegWriteBinary(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_bcount(cbBuffer) const BYTE *pbBuffer,
__in DWORD cbBuffer
);
HRESULT DAPI RegWriteString(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI RegWriteStringArray(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in_ecount(cValues) LPWSTR *rgwzStrings,
__in DWORD cStrings
);
HRESULT DAPI RegWriteStringFormatted(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in __format_string LPCWSTR szFormat,
...
);
HRESULT DAPI RegWriteNumber(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in DWORD dwValue
);
HRESULT DAPI RegWriteQword(
__in HKEY hk,
__in_z_opt LPCWSTR wzName,
__in DWORD64 qwValue
);
HRESULT DAPI RegQueryKey(
__in HKEY hk,
__out_opt DWORD* pcSubKeys,
__out_opt DWORD* pcValues
);
#ifdef __cplusplus
}
#endif
+43 -43
View File
@@ -1,43 +1,43 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI ResGetStringLangId(
__in_opt LPCWSTR wzPath,
__in UINT uID,
__out WORD *pwLangId
);
HRESULT DAPI ResReadString(
__in HINSTANCE hinst,
__in UINT uID,
__deref_out_z LPWSTR* ppwzString
);
HRESULT DAPI ResReadStringAnsi(
__in HINSTANCE hinst,
__in UINT uID,
__deref_out_z LPSTR* ppszString
);
HRESULT DAPI ResReadData(
__in_opt HINSTANCE hinst,
__in_z LPCSTR szDataName,
__deref_out_bcount(*pcb) PVOID *ppv,
__out DWORD *pcb
);
HRESULT DAPI ResExportDataToFile(
__in_z LPCSTR szDataName,
__in_z LPCWSTR wzTargetFile,
__in DWORD dwCreationDisposition
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI ResGetStringLangId(
__in_opt LPCWSTR wzPath,
__in UINT uID,
__out WORD *pwLangId
);
HRESULT DAPI ResReadString(
__in HINSTANCE hinst,
__in UINT uID,
__deref_out_z LPWSTR* ppwzString
);
HRESULT DAPI ResReadStringAnsi(
__in HINSTANCE hinst,
__in UINT uID,
__deref_out_z LPSTR* ppszString
);
HRESULT DAPI ResReadData(
__in_opt HINSTANCE hinst,
__in_z LPCSTR szDataName,
__deref_out_bcount(*pcb) PVOID *ppv,
__out DWORD *pcb
);
HRESULT DAPI ResExportDataToFile(
__in_z LPCSTR szDataName,
__in_z LPCWSTR wzTargetFile,
__in DWORD dwCreationDisposition
);
#ifdef __cplusplus
}
#endif
+31 -31
View File
@@ -1,31 +1,31 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI ResWriteString(
__in_z LPCWSTR wzResourceFile,
__in DWORD dwDataId,
__in_z LPCWSTR wzData,
__in WORD wLangId
);
HRESULT DAPI ResWriteData(
__in_z LPCWSTR wzResourceFile,
__in_z LPCSTR szDataName,
__in PVOID pData,
__in DWORD cbData
);
HRESULT DAPI ResImportDataFromFile(
__in_z LPCWSTR wzTargetFile,
__in_z LPCWSTR wzSourceFile,
__in_z LPCSTR szDataName
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI ResWriteString(
__in_z LPCWSTR wzResourceFile,
__in DWORD dwDataId,
__in_z LPCWSTR wzData,
__in WORD wLangId
);
HRESULT DAPI ResWriteData(
__in_z LPCWSTR wzResourceFile,
__in_z LPCSTR szDataName,
__in PVOID pData,
__in DWORD cbData
);
HRESULT DAPI ResImportDataFromFile(
__in_z LPCWSTR wzTargetFile,
__in_z LPCWSTR wzSourceFile,
__in_z LPCSTR szDataName
);
#ifdef __cplusplus
}
#endif
+54 -54
View File
@@ -1,54 +1,54 @@
#pragma once
// 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.
#include <sys\stat.h>
#include <fdi.h>
#ifdef __cplusplus
extern "C" {
#endif
// defines
#define FILETABLESIZE 40
// structs
struct MEM_FILE
{
LPCBYTE vpStart;
UINT uiCurrent;
UINT uiLength;
};
typedef enum FAKE_FILE_TYPE { NORMAL_FILE, MEMORY_FILE } FAKE_FILE_TYPE;
typedef HRESULT (*REX_CALLBACK_PROGRESS)(BOOL fBeginFile, LPCWSTR wzFileId, LPVOID pvContext);
typedef VOID (*REX_CALLBACK_WRITE)(UINT cb);
struct FAKE_FILE // used __in internal file table
{
BOOL fUsed;
FAKE_FILE_TYPE fftType;
MEM_FILE mfFile; // State for memory file
HANDLE hFile; // Handle for disk file
};
// functions
HRESULT RexInitialize();
void RexUninitialize();
HRESULT RexExtract(
__in_z LPCSTR szResource,
__in_z LPCWSTR wzExtractId,
__in_z LPCWSTR wzExtractDir,
__in_z LPCWSTR wzExtractName,
__in REX_CALLBACK_PROGRESS pfnProgress,
__in REX_CALLBACK_WRITE pfnWrite,
__in LPVOID pvContext
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <sys\stat.h>
#include <fdi.h>
#ifdef __cplusplus
extern "C" {
#endif
// defines
#define FILETABLESIZE 40
// structs
struct MEM_FILE
{
LPCBYTE vpStart;
UINT uiCurrent;
UINT uiLength;
};
typedef enum FAKE_FILE_TYPE { NORMAL_FILE, MEMORY_FILE } FAKE_FILE_TYPE;
typedef HRESULT (*REX_CALLBACK_PROGRESS)(BOOL fBeginFile, LPCWSTR wzFileId, LPVOID pvContext);
typedef VOID (*REX_CALLBACK_WRITE)(UINT cb);
struct FAKE_FILE // used __in internal file table
{
BOOL fUsed;
FAKE_FILE_TYPE fftType;
MEM_FILE mfFile; // State for memory file
HANDLE hFile; // Handle for disk file
};
// functions
HRESULT RexInitialize();
void RexUninitialize();
HRESULT RexExtract(
__in_z LPCSTR szResource,
__in_z LPCWSTR wzExtractId,
__in_z LPCWSTR wzExtractDir,
__in_z LPCWSTR wzExtractName,
__in REX_CALLBACK_PROGRESS pfnProgress,
__in REX_CALLBACK_WRITE pfnWrite,
__in LPVOID pvContext
);
#ifdef __cplusplus
}
#endif
+46 -46
View File
@@ -1,46 +1,46 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _RMU_SESSION *PRMU_SESSION;
HRESULT DAPI RmuJoinSession(
__out PRMU_SESSION *ppSession,
__in_z LPCWSTR wzSessionKey
);
HRESULT DAPI RmuAddFile(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzPath
);
HRESULT DAPI RmuAddProcessById(
__in PRMU_SESSION pSession,
__in DWORD dwProcessId
);
HRESULT DAPI RmuAddProcessesByName(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzProcessName
);
HRESULT DAPI RmuAddService(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzServiceName
);
HRESULT DAPI RmuRegisterResources(
__in PRMU_SESSION pSession
);
HRESULT DAPI RmuEndSession(
__in PRMU_SESSION pSession
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _RMU_SESSION *PRMU_SESSION;
HRESULT DAPI RmuJoinSession(
__out PRMU_SESSION *ppSession,
__in_z LPCWSTR wzSessionKey
);
HRESULT DAPI RmuAddFile(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzPath
);
HRESULT DAPI RmuAddProcessById(
__in PRMU_SESSION pSession,
__in DWORD dwProcessId
);
HRESULT DAPI RmuAddProcessesByName(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzProcessName
);
HRESULT DAPI RmuAddService(
__in PRMU_SESSION pSession,
__in_z LPCWSTR wzServiceName
);
HRESULT DAPI RmuRegisterResources(
__in PRMU_SESSION pSession
);
HRESULT DAPI RmuEndSession(
__in PRMU_SESSION pSession
);
#ifdef __cplusplus
}
#endif
+89 -89
View File
@@ -1,89 +1,89 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseRssChannel(p) if (p) { RssFreeChannel(p); }
#define ReleaseNullRssChannel(p) if (p) { RssFreeChannel(p); p = NULL; }
struct RSS_UNKNOWN_ATTRIBUTE
{
LPWSTR wzNamespace;
LPWSTR wzAttribute;
LPWSTR wzValue;
RSS_UNKNOWN_ATTRIBUTE* pNext;
};
struct RSS_UNKNOWN_ELEMENT
{
LPWSTR wzNamespace;
LPWSTR wzElement;
LPWSTR wzValue;
RSS_UNKNOWN_ATTRIBUTE* pAttributes;
RSS_UNKNOWN_ELEMENT* pNext;
};
struct RSS_ITEM
{
LPWSTR wzTitle;
LPWSTR wzLink;
LPWSTR wzDescription;
LPWSTR wzGuid;
FILETIME ftPublished;
LPWSTR wzEnclosureUrl;
DWORD dwEnclosureSize;
LPWSTR wzEnclosureType;
RSS_UNKNOWN_ELEMENT* pUnknownElements;
};
struct RSS_CHANNEL
{
LPWSTR wzTitle;
LPWSTR wzLink;
LPWSTR wzDescription;
DWORD dwTimeToLive;
RSS_UNKNOWN_ELEMENT* pUnknownElements;
DWORD cItems;
RSS_ITEM rgItems[1];
};
HRESULT DAPI RssInitialize(
);
void DAPI RssUninitialize(
);
HRESULT DAPI RssParseFromString(
__in_z LPCWSTR wzRssString,
__out RSS_CHANNEL **ppChannel
);
HRESULT DAPI RssParseFromFile(
__in_z LPCWSTR wzRssFile,
__out RSS_CHANNEL **ppChannel
);
// Adding this until we have the updated specstrings.h
#ifndef __in_xcount
#define __in_xcount(size)
#endif
void DAPI RssFreeChannel(
__in_xcount(pChannel->cItems) RSS_CHANNEL *pChannel
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseRssChannel(p) if (p) { RssFreeChannel(p); }
#define ReleaseNullRssChannel(p) if (p) { RssFreeChannel(p); p = NULL; }
struct RSS_UNKNOWN_ATTRIBUTE
{
LPWSTR wzNamespace;
LPWSTR wzAttribute;
LPWSTR wzValue;
RSS_UNKNOWN_ATTRIBUTE* pNext;
};
struct RSS_UNKNOWN_ELEMENT
{
LPWSTR wzNamespace;
LPWSTR wzElement;
LPWSTR wzValue;
RSS_UNKNOWN_ATTRIBUTE* pAttributes;
RSS_UNKNOWN_ELEMENT* pNext;
};
struct RSS_ITEM
{
LPWSTR wzTitle;
LPWSTR wzLink;
LPWSTR wzDescription;
LPWSTR wzGuid;
FILETIME ftPublished;
LPWSTR wzEnclosureUrl;
DWORD dwEnclosureSize;
LPWSTR wzEnclosureType;
RSS_UNKNOWN_ELEMENT* pUnknownElements;
};
struct RSS_CHANNEL
{
LPWSTR wzTitle;
LPWSTR wzLink;
LPWSTR wzDescription;
DWORD dwTimeToLive;
RSS_UNKNOWN_ELEMENT* pUnknownElements;
DWORD cItems;
RSS_ITEM rgItems[1];
};
HRESULT DAPI RssInitialize(
);
void DAPI RssUninitialize(
);
HRESULT DAPI RssParseFromString(
__in_z LPCWSTR wzRssString,
__out RSS_CHANNEL **ppChannel
);
HRESULT DAPI RssParseFromFile(
__in_z LPCWSTR wzRssFile,
__out RSS_CHANNEL **ppChannel
);
// Adding this until we have the updated specstrings.h
#ifndef __in_xcount
#define __in_xcount(size)
#endif
void DAPI RssFreeChannel(
__in_xcount(pChannel->cItems) RSS_CHANNEL *pChannel
);
#ifdef __cplusplus
}
#endif
+261 -261
View File
@@ -1,261 +1,261 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#include <sqlce_oledb.h>
#include <sqlce_sync.h>
#include <sqlce_err.h>
typedef void* SCE_DATABASE_HANDLE;
typedef void* SCE_ROW_HANDLE;
typedef void* SCE_QUERY_HANDLE;
typedef void* SCE_QUERY_RESULTS_HANDLE;
extern const int SCE_ROW_HANDLE_BYTES;
extern const int SCE_QUERY_HANDLE_BYTES;
extern const int SCE_QUERY_RESULTS_HANDLE_BYTES;
#define ReleaseSceRow(prrh) if (prrh) { SceFreeRow(prrh); }
#define ReleaseNullSceRow(prrh) if (prrh) { SceFreeRow(prrh); prrh = NULL; }
#define ReleaseSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); }
#define ReleaseNullSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); pqh = NULL; }
#define ReleaseSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); }
#define ReleaseNullSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); pqh = NULL; }
struct SCE_COLUMN_SCHEMA
{
LPCWSTR wzName;
DBTYPE dbtColumnType;
DWORD dwLength;
BOOL fPrimaryKey; // If this column is the primary key
BOOL fNullable;
BOOL fAutoIncrement;
LPWSTR wzRelationName;
DWORD dwForeignKeyTable;
DWORD dwForeignKeyColumn;
};
struct SCE_INDEX_SCHEMA
{
LPWSTR wzName;
DWORD *rgColumns;
DWORD cColumns;
};
struct SCE_TABLE_SCHEMA
{
LPCWSTR wzName;
DWORD cColumns;
SCE_COLUMN_SCHEMA *rgColumns;
DWORD cIndexes;
SCE_INDEX_SCHEMA *rgIndexes;
// Internal to SCEUtil - consumers shouldn't access or modify
// TODO: enforce / hide in a handle of some sort?
IRowset *pIRowset;
IRowsetChange *pIRowsetChange;
};
struct SCE_DATABASE_SCHEMA
{
DWORD cTables;
SCE_TABLE_SCHEMA *rgTables;
};
struct SCE_DATABASE
{
SCE_DATABASE_HANDLE sdbHandle;
SCE_DATABASE_SCHEMA *pdsSchema;
};
HRESULT DAPI SceCreateDatabase(
__in_z LPCWSTR sczFile,
__deref_out SCE_DATABASE **ppDatabase
);
HRESULT DAPI SceOpenDatabase(
__in_z LPCWSTR sczFile,
__in LPCWSTR wzSchemaType,
__in DWORD dwExpectedVersion,
__deref_out SCE_DATABASE **ppDatabase,
__in BOOL fReadOnly
);
HRESULT DAPI SceEnsureDatabase(
__in_z LPCWSTR sczFile,
__in LPCWSTR wzSchemaType,
__in DWORD dwExpectedVersion,
__in SCE_DATABASE_SCHEMA *pdsSchema,
__deref_out SCE_DATABASE **ppDatabase
);
HRESULT DAPI SceIsTableEmpty(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__out BOOL *pfEmpty
);
HRESULT DAPI SceGetFirstRow(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceGetNextRow(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceBeginTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceCommitTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceRollbackTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceDeleteRow(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI ScePrepareInsert(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceFinishUpdate(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle
);
HRESULT DAPI SceSetColumnBinary(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI SceSetColumnDword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const DWORD dwValue
);
HRESULT DAPI SceSetColumnQword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const DWORD64 qwValue
);
HRESULT DAPI SceSetColumnBool(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const BOOL fValue
);
HRESULT DAPI SceSetColumnString(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI SceSetColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const SYSTEMTIME *pst
);
HRESULT DAPI SceSetColumnEmpty(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex
);
HRESULT DAPI SceGetColumnBinary(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out_opt BYTE **ppbBuffer,
__inout SIZE_T *pcbBuffer
);
HRESULT DAPI SceGetColumnDword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out DWORD *pdwValue
);
HRESULT DAPI SceGetColumnQword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out DWORD64 *pqwValue
);
HRESULT DAPI SceGetColumnBool(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out BOOL *pfValue
);
HRESULT DAPI SceGetColumnString(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out_z LPWSTR *psczValue
);
HRESULT DAPI SceGetColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out SYSTEMTIME *pst
);
HRESULT DAPI SceBeginQuery(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__in DWORD dwIndex,
__deref_out_bcount(SCE_QUERY_HANDLE_BYTES) SCE_QUERY_HANDLE *psqhHandle
);
HRESULT DAPI SceSetQueryColumnBinary(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI SceSetQueryColumnDword(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const DWORD dwValue
);
HRESULT DAPI SceSetQueryColumnQword(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const DWORD64 qwValue
);
HRESULT DAPI SceSetQueryColumnBool(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const BOOL fValue
);
HRESULT DAPI SceSetQueryColumnString(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in_z_opt LPCWSTR wzString
);
HRESULT DAPI SceSetQueryColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in const SYSTEMTIME *pst
);
HRESULT DAPI SceSetQueryColumnEmpty(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle
);
HRESULT DAPI SceRunQueryExact(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceRunQueryRange(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle,
__deref_out_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE *psqrhHandle
);
HRESULT DAPI SceGetNextResultRow(
__in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
void DAPI SceCloseTable(
__in SCE_TABLE_SCHEMA *pTable
);
HRESULT DAPI SceCloseDatabase(
__in SCE_DATABASE *pDatabase
);
void DAPI SceFreeRow(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle
);
void DAPI SceFreeQuery(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle
);
void DAPI SceFreeQueryResults(
__in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#include <sqlce_oledb.h>
#include <sqlce_sync.h>
#include <sqlce_err.h>
typedef void* SCE_DATABASE_HANDLE;
typedef void* SCE_ROW_HANDLE;
typedef void* SCE_QUERY_HANDLE;
typedef void* SCE_QUERY_RESULTS_HANDLE;
extern const int SCE_ROW_HANDLE_BYTES;
extern const int SCE_QUERY_HANDLE_BYTES;
extern const int SCE_QUERY_RESULTS_HANDLE_BYTES;
#define ReleaseSceRow(prrh) if (prrh) { SceFreeRow(prrh); }
#define ReleaseNullSceRow(prrh) if (prrh) { SceFreeRow(prrh); prrh = NULL; }
#define ReleaseSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); }
#define ReleaseNullSceQuery(pqh) if (pqh) { SceFreeQuery(pqh); pqh = NULL; }
#define ReleaseSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); }
#define ReleaseNullSceQueryResults(pqh) if (pqh) { SceFreeQueryResults(pqh); pqh = NULL; }
struct SCE_COLUMN_SCHEMA
{
LPCWSTR wzName;
DBTYPE dbtColumnType;
DWORD dwLength;
BOOL fPrimaryKey; // If this column is the primary key
BOOL fNullable;
BOOL fAutoIncrement;
LPWSTR wzRelationName;
DWORD dwForeignKeyTable;
DWORD dwForeignKeyColumn;
};
struct SCE_INDEX_SCHEMA
{
LPWSTR wzName;
DWORD *rgColumns;
DWORD cColumns;
};
struct SCE_TABLE_SCHEMA
{
LPCWSTR wzName;
DWORD cColumns;
SCE_COLUMN_SCHEMA *rgColumns;
DWORD cIndexes;
SCE_INDEX_SCHEMA *rgIndexes;
// Internal to SCEUtil - consumers shouldn't access or modify
// TODO: enforce / hide in a handle of some sort?
IRowset *pIRowset;
IRowsetChange *pIRowsetChange;
};
struct SCE_DATABASE_SCHEMA
{
DWORD cTables;
SCE_TABLE_SCHEMA *rgTables;
};
struct SCE_DATABASE
{
SCE_DATABASE_HANDLE sdbHandle;
SCE_DATABASE_SCHEMA *pdsSchema;
};
HRESULT DAPI SceCreateDatabase(
__in_z LPCWSTR sczFile,
__deref_out SCE_DATABASE **ppDatabase
);
HRESULT DAPI SceOpenDatabase(
__in_z LPCWSTR sczFile,
__in LPCWSTR wzSchemaType,
__in DWORD dwExpectedVersion,
__deref_out SCE_DATABASE **ppDatabase,
__in BOOL fReadOnly
);
HRESULT DAPI SceEnsureDatabase(
__in_z LPCWSTR sczFile,
__in LPCWSTR wzSchemaType,
__in DWORD dwExpectedVersion,
__in SCE_DATABASE_SCHEMA *pdsSchema,
__deref_out SCE_DATABASE **ppDatabase
);
HRESULT DAPI SceIsTableEmpty(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__out BOOL *pfEmpty
);
HRESULT DAPI SceGetFirstRow(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceGetNextRow(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceBeginTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceCommitTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceRollbackTransaction(
__in SCE_DATABASE *pDatabase
);
HRESULT DAPI SceDeleteRow(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI ScePrepareInsert(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceFinishUpdate(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle
);
HRESULT DAPI SceSetColumnBinary(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI SceSetColumnDword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const DWORD dwValue
);
HRESULT DAPI SceSetColumnQword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const DWORD64 qwValue
);
HRESULT DAPI SceSetColumnBool(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const BOOL fValue
);
HRESULT DAPI SceSetColumnString(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in_z_opt LPCWSTR wzValue
);
HRESULT DAPI SceSetColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex,
__in const SYSTEMTIME *pst
);
HRESULT DAPI SceSetColumnEmpty(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in DWORD dwColumnIndex
);
HRESULT DAPI SceGetColumnBinary(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out_opt BYTE **ppbBuffer,
__inout SIZE_T *pcbBuffer
);
HRESULT DAPI SceGetColumnDword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out DWORD *pdwValue
);
HRESULT DAPI SceGetColumnQword(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out DWORD64 *pqwValue
);
HRESULT DAPI SceGetColumnBool(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out BOOL *pfValue
);
HRESULT DAPI SceGetColumnString(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out_z LPWSTR *psczValue
);
HRESULT DAPI SceGetColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle,
__in DWORD dwColumnIndex,
__out SYSTEMTIME *pst
);
HRESULT DAPI SceBeginQuery(
__in SCE_DATABASE *pDatabase,
__in DWORD dwTableIndex,
__in DWORD dwIndex,
__deref_out_bcount(SCE_QUERY_HANDLE_BYTES) SCE_QUERY_HANDLE *psqhHandle
);
HRESULT DAPI SceSetQueryColumnBinary(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer
);
HRESULT DAPI SceSetQueryColumnDword(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const DWORD dwValue
);
HRESULT DAPI SceSetQueryColumnQword(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const DWORD64 qwValue
);
HRESULT DAPI SceSetQueryColumnBool(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in const BOOL fValue
);
HRESULT DAPI SceSetQueryColumnString(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle,
__in_z_opt LPCWSTR wzString
);
HRESULT DAPI SceSetQueryColumnSystemTime(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowHandle,
__in const SYSTEMTIME *pst
);
HRESULT DAPI SceSetQueryColumnEmpty(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle
);
HRESULT DAPI SceRunQueryExact(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
HRESULT DAPI SceRunQueryRange(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE *psqhHandle,
__deref_out_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE *psqrhHandle
);
HRESULT DAPI SceGetNextResultRow(
__in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle,
__deref_out_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE *pRowHandle
);
void DAPI SceCloseTable(
__in SCE_TABLE_SCHEMA *pTable
);
HRESULT DAPI SceCloseDatabase(
__in SCE_DATABASE *pDatabase
);
void DAPI SceFreeRow(
__in_bcount(SCE_ROW_HANDLE_BYTES) SCE_ROW_HANDLE rowReadHandle
);
void DAPI SceFreeQuery(
__in_bcount(SCE_QUERY_BYTES) SCE_QUERY_HANDLE sqhHandle
);
void DAPI SceFreeQueryResults(
__in_bcount(SCE_QUERY_RESULTS_BYTES) SCE_QUERY_RESULTS_HANDLE sqrhHandle
);
#ifdef __cplusplus
}
#endif
+47 -47
View File
@@ -1,47 +1,47 @@
#pragma once
// 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.
#ifndef REFKNOWNFOLDERID
#define REFKNOWNFOLDERID REFGUID
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef BOOL (STDAPICALLTYPE *PFN_SHELLEXECUTEEXW)(
__inout LPSHELLEXECUTEINFOW lpExecInfo
);
void DAPI ShelFunctionOverride(
__in_opt PFN_SHELLEXECUTEEXW pfnShellExecuteExW
);
HRESULT DAPI ShelExec(
__in_z LPCWSTR wzTargetPath,
__in_opt LPCWSTR wzParameters,
__in_opt LPCWSTR wzVerb,
__in_opt LPCWSTR wzWorkingDirectory,
__in int nShowCmd,
__in_opt HWND hwndParent,
__out_opt HANDLE* phProcess
);
HRESULT DAPI ShelExecUnelevated(
__in_z LPCWSTR wzTargetPath,
__in_z_opt LPCWSTR wzParameters,
__in_z_opt LPCWSTR wzVerb,
__in_z_opt LPCWSTR wzWorkingDirectory,
__in int nShowCmd
);
HRESULT DAPI ShelGetFolder(
__out_z LPWSTR* psczFolderPath,
__in int csidlFolder
);
HRESULT DAPI ShelGetKnownFolder(
__out_z LPWSTR* psczFolderPath,
__in REFKNOWNFOLDERID rfidFolder
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifndef REFKNOWNFOLDERID
#define REFKNOWNFOLDERID REFGUID
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef BOOL (STDAPICALLTYPE *PFN_SHELLEXECUTEEXW)(
__inout LPSHELLEXECUTEINFOW lpExecInfo
);
void DAPI ShelFunctionOverride(
__in_opt PFN_SHELLEXECUTEEXW pfnShellExecuteExW
);
HRESULT DAPI ShelExec(
__in_z LPCWSTR wzTargetPath,
__in_opt LPCWSTR wzParameters,
__in_opt LPCWSTR wzVerb,
__in_opt LPCWSTR wzWorkingDirectory,
__in int nShowCmd,
__in_opt HWND hwndParent,
__out_opt HANDLE* phProcess
);
HRESULT DAPI ShelExecUnelevated(
__in_z LPCWSTR wzTargetPath,
__in_z_opt LPCWSTR wzParameters,
__in_z_opt LPCWSTR wzVerb,
__in_z_opt LPCWSTR wzWorkingDirectory,
__in int nShowCmd
);
HRESULT DAPI ShelGetFolder(
__out_z LPWSTR* psczFolderPath,
__in int csidlFolder
);
HRESULT DAPI ShelGetKnownFolder(
__out_z LPWSTR* psczFolderPath,
__in REFKNOWNFOLDERID rfidFolder
);
#ifdef __cplusplus
}
#endif
+136 -136
View File
@@ -1,136 +1,136 @@
#pragma once
// 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.
#include <cguid.h>
#include <oledberr.h>
#include <sqloledb.h>
#ifdef __cplusplus
extern "C" {
#endif
// Adding this until the SQL annotations are published to specstrings.h
#ifndef __sql_command
#define __sql_command
#endif
// structs
struct SQL_FILESPEC
{
WCHAR wzName[MAX_PATH];
WCHAR wzFilename[MAX_PATH];
WCHAR wzSize[MAX_PATH];
WCHAR wzMaxSize[MAX_PATH];
WCHAR wzGrow[MAX_PATH];
};
// functions
HRESULT DAPI SqlConnectDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out IDBCreateSession** ppidbSession
);
HRESULT DAPI SqlStartTransaction(
__in IDBCreateSession* pidbSession,
__out IDBCreateCommand** ppidbCommand,
__out ITransaction** ppit
);
HRESULT DAPI SqlEndTransaction(
__in ITransaction* pit,
__in BOOL fCommit
);
HRESULT DAPI SqlDatabaseExists(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDatabaseExists(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlDatabaseEnsureExists(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDatabaseEnsureExists(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlCreateDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionCreateDatabase(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlDropDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDropDatabase(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionExecuteQuery(
__in IDBCreateSession* pidbSession,
__in __sql_command LPCWSTR wzSql,
__out_opt IRowset** ppirs,
__out_opt DBROWCOUNT* pcRows,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlCommandExecuteQuery(
__in IDBCreateCommand* pidbCommand,
__in __sql_command LPCWSTR wzSql,
__out IRowset** ppirs,
__out DBROWCOUNT* pcRows
);
HRESULT DAPI SqlGetErrorInfo(
__in IUnknown* pObjectWithError,
__in REFIID IID_InterfaceWithError,
__in DWORD dwLocaleId,
__out_opt BSTR* pbstrErrorSource,
__out_opt BSTR* pbstrErrorDescription
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include <cguid.h>
#include <oledberr.h>
#include <sqloledb.h>
#ifdef __cplusplus
extern "C" {
#endif
// Adding this until the SQL annotations are published to specstrings.h
#ifndef __sql_command
#define __sql_command
#endif
// structs
struct SQL_FILESPEC
{
WCHAR wzName[MAX_PATH];
WCHAR wzFilename[MAX_PATH];
WCHAR wzSize[MAX_PATH];
WCHAR wzMaxSize[MAX_PATH];
WCHAR wzGrow[MAX_PATH];
};
// functions
HRESULT DAPI SqlConnectDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out IDBCreateSession** ppidbSession
);
HRESULT DAPI SqlStartTransaction(
__in IDBCreateSession* pidbSession,
__out IDBCreateCommand** ppidbCommand,
__out ITransaction** ppit
);
HRESULT DAPI SqlEndTransaction(
__in ITransaction* pit,
__in BOOL fCommit
);
HRESULT DAPI SqlDatabaseExists(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDatabaseExists(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlDatabaseEnsureExists(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDatabaseEnsureExists(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlCreateDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionCreateDatabase(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__in_opt const SQL_FILESPEC* psfDatabase,
__in_opt const SQL_FILESPEC* psfLog,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlDropDatabase(
__in_z LPCWSTR wzServer,
__in_z LPCWSTR wzInstance,
__in_z LPCWSTR wzDatabase,
__in BOOL fIntegratedAuth,
__in_z LPCWSTR wzUser,
__in_z LPCWSTR wzPassword,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionDropDatabase(
__in IDBCreateSession* pidbSession,
__in_z LPCWSTR wzDatabase,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlSessionExecuteQuery(
__in IDBCreateSession* pidbSession,
__in __sql_command LPCWSTR wzSql,
__out_opt IRowset** ppirs,
__out_opt DBROWCOUNT* pcRows,
__out_opt BSTR* pbstrErrorDescription
);
HRESULT DAPI SqlCommandExecuteQuery(
__in IDBCreateCommand* pidbCommand,
__in __sql_command LPCWSTR wzSql,
__out IRowset** ppirs,
__out DBROWCOUNT* pcRows
);
HRESULT DAPI SqlGetErrorInfo(
__in IUnknown* pObjectWithError,
__in REFIID IID_InterfaceWithError,
__in DWORD dwLocaleId,
__out_opt BSTR* pbstrErrorSource,
__out_opt BSTR* pbstrErrorDescription
);
#ifdef __cplusplus
}
#endif
+45 -45
View File
@@ -1,45 +1,45 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum SRP_ACTION
{
SRP_ACTION_UNKNOWN,
SRP_ACTION_UNINSTALL,
SRP_ACTION_INSTALL,
SRP_ACTION_MODIFY,
} SRP_ACTION;
/********************************************************************
SrpInitialize - initializes system restore point functionality.
*******************************************************************/
DAPI_(HRESULT) SrpInitialize(
__in BOOL fInitializeComSecurity
);
/********************************************************************
SrpUninitialize - uninitializes system restore point functionality.
*******************************************************************/
DAPI_(void) SrpUninitialize();
/********************************************************************
SrpCreateRestorePoint - creates a system restore point.
*******************************************************************/
DAPI_(HRESULT) SrpCreateRestorePoint(
__in_z LPCWSTR wzApplicationName,
__in SRP_ACTION action
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
typedef enum SRP_ACTION
{
SRP_ACTION_UNKNOWN,
SRP_ACTION_UNINSTALL,
SRP_ACTION_INSTALL,
SRP_ACTION_MODIFY,
} SRP_ACTION;
/********************************************************************
SrpInitialize - initializes system restore point functionality.
*******************************************************************/
DAPI_(HRESULT) SrpInitialize(
__in BOOL fInitializeComSecurity
);
/********************************************************************
SrpUninitialize - uninitializes system restore point functionality.
*******************************************************************/
DAPI_(void) SrpUninitialize();
/********************************************************************
SrpCreateRestorePoint - creates a system restore point.
*******************************************************************/
DAPI_(HRESULT) SrpCreateRestorePoint(
__in_z LPCWSTR wzApplicationName,
__in SRP_ACTION action
);
#ifdef __cplusplus
}
#endif
+311 -311
View File
@@ -1,311 +1,311 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseStr(pwz) if (pwz) { StrFree(pwz); }
#define ReleaseNullStr(pwz) if (pwz) { StrFree(pwz); pwz = NULL; }
#define ReleaseBSTR(bstr) if (bstr) { ::SysFreeString(bstr); }
#define ReleaseNullBSTR(bstr) if (bstr) { ::SysFreeString(bstr); bstr = NULL; }
#define ReleaseStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); } }
#define ReleaseNullStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); c = 0; rg = NULL; } }
#define ReleaseNullStrSecure(pwz) if (pwz) { StrSecureZeroFreeString(pwz); pwz = NULL; }
#define DeclareConstBSTR(bstr_const, wz) const WCHAR bstr_const[] = { 0x00, 0x00, sizeof(wz)-sizeof(WCHAR), 0x00, wz }
#define UseConstBSTR(bstr_const) const_cast<BSTR>(bstr_const + 4)
HRESULT DAPI StrAlloc(
__deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
__in DWORD_PTR cch
);
HRESULT DAPI StrAllocSecure(
__deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
__in DWORD_PTR cch
);
HRESULT DAPI StrTrimCapacity(
__deref_out_z LPWSTR* ppwz
);
HRESULT DAPI StrTrimWhitespace(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource
);
HRESULT DAPI StrAnsiAlloc(
__deref_out_ecount_part(cch, 0) LPSTR* ppz,
__in DWORD_PTR cch
);
HRESULT DAPI StrAnsiTrimCapacity(
__deref_out_z LPSTR* ppz
);
HRESULT DAPI StrAnsiTrimWhitespace(
__deref_out_z LPSTR* ppz,
__in_z LPCSTR szSource
);
HRESULT DAPI StrAllocString(
__deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocStringSecure(
__deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAnsiAllocString(
__deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource,
__in UINT uiCodepage
);
HRESULT DAPI StrAllocStringAnsi(
__deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
__in_z LPCSTR szSource,
__in DWORD_PTR cchSource,
__in UINT uiCodepage
);
HRESULT DAPI StrAnsiAllocStringAnsi(
__deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
__in_z LPCSTR szSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocPrefix(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzPrefix,
__in DWORD_PTR cchPrefix
);
HRESULT DAPI StrAllocConcat(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocConcatSecure(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAnsiAllocConcat(
__deref_out_z LPSTR* ppz,
__in_z LPCSTR pzSource,
__in DWORD_PTR cchSource
);
HRESULT __cdecl StrAllocFormatted(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAllocConcatFormatted(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAllocFormattedSecure(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAnsiAllocFormatted(
__deref_out_z LPSTR* ppsz,
__in __format_string LPCSTR szFormat,
...
);
HRESULT DAPI StrAllocFormattedArgs(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
__in va_list args
);
HRESULT DAPI StrAllocFormattedArgsSecure(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
__in va_list args
);
HRESULT DAPI StrAnsiAllocFormattedArgs(
__deref_out_z LPSTR* ppsz,
__in __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI StrAllocFromError(
__inout LPWSTR *ppwzMessage,
__in HRESULT hrError,
__in_opt HMODULE hModule,
...
);
HRESULT DAPI StrMaxLength(
__in LPCVOID p,
__out DWORD_PTR* pcch
);
HRESULT DAPI StrSize(
__in LPCVOID p,
__out DWORD_PTR* pcb
);
HRESULT DAPI StrFree(
__in LPVOID p
);
HRESULT DAPI StrReplaceStringAll(
__inout LPWSTR* ppwzOriginal,
__in_z LPCWSTR wzOldSubString,
__in_z LPCWSTR wzNewSubString
);
HRESULT DAPI StrReplaceString(
__inout LPWSTR* ppwzOriginal,
__inout DWORD* pdwStartIndex,
__in_z LPCWSTR wzOldSubString,
__in_z LPCWSTR wzNewSubString
);
HRESULT DAPI StrHexEncode(
__in_ecount(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__out_ecount(cchDest) LPWSTR wzDest,
__in DWORD_PTR cchDest
);
HRESULT DAPI StrAllocHexEncode(
__in_ecount(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__deref_out_ecount_z(2*(cbSource+1)) LPWSTR* ppwzDest
);
HRESULT DAPI StrHexDecode(
__in_z LPCWSTR wzSource,
__out_bcount(cbDest) BYTE* pbDest,
__in DWORD_PTR cbDest
);
HRESULT DAPI StrAllocHexDecode(
__in_z LPCWSTR wzSource,
__out_bcount(*pcbDest) BYTE** ppbDest,
__out_opt DWORD* pcbDest
);
HRESULT DAPI StrAllocBase85Encode(
__in_bcount_opt(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__deref_out_z LPWSTR* pwzDest
);
HRESULT DAPI StrAllocBase85Decode(
__in_z LPCWSTR wzSource,
__deref_out_bcount(*pcbDest) BYTE** hbDest,
__out DWORD_PTR* pcbDest
);
HRESULT DAPI MultiSzLen(
__in_ecount(*pcch) __nullnullterminated LPCWSTR pwzMultiSz,
__out DWORD_PTR* pcch
);
HRESULT DAPI MultiSzPrepend(
__deref_inout_ecount(*pcchMultiSz) __nullnullterminated LPWSTR* ppwzMultiSz,
__inout_opt DWORD_PTR *pcchMultiSz,
__in __nullnullterminated LPCWSTR pwzInsert
);
HRESULT DAPI MultiSzFindSubstring(
__in __nullnullterminated LPCWSTR pwzMultiSz,
__in __nullnullterminated LPCWSTR pwzSubstring,
__out_opt DWORD_PTR* pdwIndex,
__deref_opt_out_z LPCWSTR* ppwzFoundIn
);
HRESULT DAPI MultiSzFindString(
__in __nullnullterminated LPCWSTR pwzMultiSz,
__in __nullnullterminated LPCWSTR pwzString,
__out_opt DWORD_PTR* pdwIndex,
__deref_opt_out __nullnullterminated LPCWSTR* ppwzFound
);
HRESULT DAPI MultiSzRemoveString(
__deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
__in DWORD_PTR dwIndex
);
HRESULT DAPI MultiSzInsertString(
__deref_inout_z LPWSTR* ppwzMultiSz,
__inout_opt DWORD_PTR *pcchMultiSz,
__in DWORD_PTR dwIndex,
__in_z LPCWSTR pwzInsert
);
HRESULT DAPI MultiSzReplaceString(
__deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
__in DWORD_PTR dwIndex,
__in_z LPCWSTR pwzString
);
LPCWSTR DAPI wcsistr(
__in_z LPCWSTR wzString,
__in_z LPCWSTR wzCharSet
);
HRESULT DAPI StrStringToInt16(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out SHORT* psOut
);
HRESULT DAPI StrStringToUInt16(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out USHORT* pusOut
);
HRESULT DAPI StrStringToInt32(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out INT* piOut
);
HRESULT DAPI StrStringToUInt32(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out UINT* puiOut
);
HRESULT DAPI StrStringToInt64(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out LONGLONG* pllOut
);
HRESULT DAPI StrStringToUInt64(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out ULONGLONG* pullOut
);
void DAPI StrStringToUpper(
__inout_z LPWSTR wzIn
);
void DAPI StrStringToLower(
__inout_z LPWSTR wzIn
);
HRESULT DAPI StrAllocStringToUpperInvariant(
__deref_out_z LPWSTR* pscz,
__in_z LPCWSTR wzSource,
__in int cchSource
);
HRESULT DAPI StrAllocStringToLowerInvariant(
__deref_out_z LPWSTR* pscz,
__in_z LPCWSTR wzSource,
__in int cchSource
);
HRESULT DAPI StrArrayAllocString(
__deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
__inout LPUINT pcStrArray,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrArrayFree(
__in_ecount(cStrArray) LPWSTR *rgsczStrArray,
__in UINT cStrArray
);
HRESULT DAPI StrSplitAllocArray(
__deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
__inout LPUINT pcStrArray,
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzDelim
);
HRESULT DAPI StrSecureZeroString(
__in LPWSTR pwz
);
HRESULT DAPI StrSecureZeroFreeString(
__in LPWSTR pwz
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseStr(pwz) if (pwz) { StrFree(pwz); }
#define ReleaseNullStr(pwz) if (pwz) { StrFree(pwz); pwz = NULL; }
#define ReleaseBSTR(bstr) if (bstr) { ::SysFreeString(bstr); }
#define ReleaseNullBSTR(bstr) if (bstr) { ::SysFreeString(bstr); bstr = NULL; }
#define ReleaseStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); } }
#define ReleaseNullStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); c = 0; rg = NULL; } }
#define ReleaseNullStrSecure(pwz) if (pwz) { StrSecureZeroFreeString(pwz); pwz = NULL; }
#define DeclareConstBSTR(bstr_const, wz) const WCHAR bstr_const[] = { 0x00, 0x00, sizeof(wz)-sizeof(WCHAR), 0x00, wz }
#define UseConstBSTR(bstr_const) const_cast<BSTR>(bstr_const + 4)
HRESULT DAPI StrAlloc(
__deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
__in DWORD_PTR cch
);
HRESULT DAPI StrAllocSecure(
__deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
__in DWORD_PTR cch
);
HRESULT DAPI StrTrimCapacity(
__deref_out_z LPWSTR* ppwz
);
HRESULT DAPI StrTrimWhitespace(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource
);
HRESULT DAPI StrAnsiAlloc(
__deref_out_ecount_part(cch, 0) LPSTR* ppz,
__in DWORD_PTR cch
);
HRESULT DAPI StrAnsiTrimCapacity(
__deref_out_z LPSTR* ppz
);
HRESULT DAPI StrAnsiTrimWhitespace(
__deref_out_z LPSTR* ppz,
__in_z LPCSTR szSource
);
HRESULT DAPI StrAllocString(
__deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocStringSecure(
__deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAnsiAllocString(
__deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource,
__in UINT uiCodepage
);
HRESULT DAPI StrAllocStringAnsi(
__deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
__in_z LPCSTR szSource,
__in DWORD_PTR cchSource,
__in UINT uiCodepage
);
HRESULT DAPI StrAnsiAllocStringAnsi(
__deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
__in_z LPCSTR szSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocPrefix(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzPrefix,
__in DWORD_PTR cchPrefix
);
HRESULT DAPI StrAllocConcat(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAllocConcatSecure(
__deref_out_z LPWSTR* ppwz,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrAnsiAllocConcat(
__deref_out_z LPSTR* ppz,
__in_z LPCSTR pzSource,
__in DWORD_PTR cchSource
);
HRESULT __cdecl StrAllocFormatted(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAllocConcatFormatted(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAllocFormattedSecure(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
...
);
HRESULT __cdecl StrAnsiAllocFormatted(
__deref_out_z LPSTR* ppsz,
__in __format_string LPCSTR szFormat,
...
);
HRESULT DAPI StrAllocFormattedArgs(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
__in va_list args
);
HRESULT DAPI StrAllocFormattedArgsSecure(
__deref_out_z LPWSTR* ppwz,
__in __format_string LPCWSTR wzFormat,
__in va_list args
);
HRESULT DAPI StrAnsiAllocFormattedArgs(
__deref_out_z LPSTR* ppsz,
__in __format_string LPCSTR szFormat,
__in va_list args
);
HRESULT DAPI StrAllocFromError(
__inout LPWSTR *ppwzMessage,
__in HRESULT hrError,
__in_opt HMODULE hModule,
...
);
HRESULT DAPI StrMaxLength(
__in LPCVOID p,
__out DWORD_PTR* pcch
);
HRESULT DAPI StrSize(
__in LPCVOID p,
__out DWORD_PTR* pcb
);
HRESULT DAPI StrFree(
__in LPVOID p
);
HRESULT DAPI StrReplaceStringAll(
__inout LPWSTR* ppwzOriginal,
__in_z LPCWSTR wzOldSubString,
__in_z LPCWSTR wzNewSubString
);
HRESULT DAPI StrReplaceString(
__inout LPWSTR* ppwzOriginal,
__inout DWORD* pdwStartIndex,
__in_z LPCWSTR wzOldSubString,
__in_z LPCWSTR wzNewSubString
);
HRESULT DAPI StrHexEncode(
__in_ecount(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__out_ecount(cchDest) LPWSTR wzDest,
__in DWORD_PTR cchDest
);
HRESULT DAPI StrAllocHexEncode(
__in_ecount(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__deref_out_ecount_z(2*(cbSource+1)) LPWSTR* ppwzDest
);
HRESULT DAPI StrHexDecode(
__in_z LPCWSTR wzSource,
__out_bcount(cbDest) BYTE* pbDest,
__in DWORD_PTR cbDest
);
HRESULT DAPI StrAllocHexDecode(
__in_z LPCWSTR wzSource,
__out_bcount(*pcbDest) BYTE** ppbDest,
__out_opt DWORD* pcbDest
);
HRESULT DAPI StrAllocBase85Encode(
__in_bcount_opt(cbSource) const BYTE* pbSource,
__in DWORD_PTR cbSource,
__deref_out_z LPWSTR* pwzDest
);
HRESULT DAPI StrAllocBase85Decode(
__in_z LPCWSTR wzSource,
__deref_out_bcount(*pcbDest) BYTE** hbDest,
__out DWORD_PTR* pcbDest
);
HRESULT DAPI MultiSzLen(
__in_ecount(*pcch) __nullnullterminated LPCWSTR pwzMultiSz,
__out DWORD_PTR* pcch
);
HRESULT DAPI MultiSzPrepend(
__deref_inout_ecount(*pcchMultiSz) __nullnullterminated LPWSTR* ppwzMultiSz,
__inout_opt DWORD_PTR *pcchMultiSz,
__in __nullnullterminated LPCWSTR pwzInsert
);
HRESULT DAPI MultiSzFindSubstring(
__in __nullnullterminated LPCWSTR pwzMultiSz,
__in __nullnullterminated LPCWSTR pwzSubstring,
__out_opt DWORD_PTR* pdwIndex,
__deref_opt_out_z LPCWSTR* ppwzFoundIn
);
HRESULT DAPI MultiSzFindString(
__in __nullnullterminated LPCWSTR pwzMultiSz,
__in __nullnullterminated LPCWSTR pwzString,
__out_opt DWORD_PTR* pdwIndex,
__deref_opt_out __nullnullterminated LPCWSTR* ppwzFound
);
HRESULT DAPI MultiSzRemoveString(
__deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
__in DWORD_PTR dwIndex
);
HRESULT DAPI MultiSzInsertString(
__deref_inout_z LPWSTR* ppwzMultiSz,
__inout_opt DWORD_PTR *pcchMultiSz,
__in DWORD_PTR dwIndex,
__in_z LPCWSTR pwzInsert
);
HRESULT DAPI MultiSzReplaceString(
__deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
__in DWORD_PTR dwIndex,
__in_z LPCWSTR pwzString
);
LPCWSTR DAPI wcsistr(
__in_z LPCWSTR wzString,
__in_z LPCWSTR wzCharSet
);
HRESULT DAPI StrStringToInt16(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out SHORT* psOut
);
HRESULT DAPI StrStringToUInt16(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out USHORT* pusOut
);
HRESULT DAPI StrStringToInt32(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out INT* piOut
);
HRESULT DAPI StrStringToUInt32(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out UINT* puiOut
);
HRESULT DAPI StrStringToInt64(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out LONGLONG* pllOut
);
HRESULT DAPI StrStringToUInt64(
__in_z LPCWSTR wzIn,
__in DWORD cchIn,
__out ULONGLONG* pullOut
);
void DAPI StrStringToUpper(
__inout_z LPWSTR wzIn
);
void DAPI StrStringToLower(
__inout_z LPWSTR wzIn
);
HRESULT DAPI StrAllocStringToUpperInvariant(
__deref_out_z LPWSTR* pscz,
__in_z LPCWSTR wzSource,
__in int cchSource
);
HRESULT DAPI StrAllocStringToLowerInvariant(
__deref_out_z LPWSTR* pscz,
__in_z LPCWSTR wzSource,
__in int cchSource
);
HRESULT DAPI StrArrayAllocString(
__deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
__inout LPUINT pcStrArray,
__in_z LPCWSTR wzSource,
__in DWORD_PTR cchSource
);
HRESULT DAPI StrArrayFree(
__in_ecount(cStrArray) LPWSTR *rgsczStrArray,
__in UINT cStrArray
);
HRESULT DAPI StrSplitAllocArray(
__deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
__inout LPUINT pcStrArray,
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzDelim
);
HRESULT DAPI StrSecureZeroString(
__in LPWSTR pwz
);
HRESULT DAPI StrSecureZeroFreeString(
__in LPWSTR pwz
);
#ifdef __cplusplus
}
#endif
+21 -21
View File
@@ -1,21 +1,21 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseServiceHandle(h) if (h) { ::CloseServiceHandle(h); h = NULL; }
HRESULT DAPI SvcQueryConfig(
__in SC_HANDLE sch,
__out QUERY_SERVICE_CONFIGW** ppConfig
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseServiceHandle(h) if (h) { ::CloseServiceHandle(h); h = NULL; }
HRESULT DAPI SvcQueryConfig(
__in SC_HANDLE sch,
__out QUERY_SERVICE_CONFIGW** ppConfig
);
#ifdef __cplusplus
}
#endif
File diff suppressed because it is too large. Load diff
+34 -34
View File
@@ -1,34 +1,34 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI TimeFromString(
__in_z LPCWSTR wzTime,
__out FILETIME* pFileTime
);
HRESULT DAPI TimeFromString3339(
__in_z LPCWSTR wzTime,
__out FILETIME* pFileTime
);
HRESULT DAPI TimeCurrentTime(
__deref_out_z LPWSTR* ppwz,
__in BOOL fGMT
);
HRESULT DAPI TimeCurrentDateTime(
__deref_out_z LPWSTR* ppwz,
__in BOOL fGMT
);
HRESULT DAPI TimeSystemDateTime(
__deref_out_z LPWSTR* ppwz,
__in const SYSTEMTIME *pst,
__in BOOL fGMT
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI TimeFromString(
__in_z LPCWSTR wzTime,
__out FILETIME* pFileTime
);
HRESULT DAPI TimeFromString3339(
__in_z LPCWSTR wzTime,
__out FILETIME* pFileTime
);
HRESULT DAPI TimeCurrentTime(
__deref_out_z LPWSTR* ppwz,
__in BOOL fGMT
);
HRESULT DAPI TimeCurrentDateTime(
__deref_out_z LPWSTR* ppwz,
__in BOOL fGMT
);
HRESULT DAPI TimeSystemDateTime(
__deref_out_z LPWSTR* ppwz,
__in const SYSTEMTIME *pst,
__in BOOL fGMT
);
#ifdef __cplusplus
}
#endif
+100 -100
View File
@@ -1,100 +1,100 @@
#pragma once
// 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.
#include "wininet.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum URI_PROTOCOL
{
URI_PROTOCOL_UNKNOWN,
URI_PROTOCOL_FILE,
URI_PROTOCOL_FTP,
URI_PROTOCOL_HTTP,
URI_PROTOCOL_HTTPS,
URI_PROTOCOL_LOCAL,
URI_PROTOCOL_UNC
} URI_PROTOCOL;
typedef struct _URI_INFO
{
INTERNET_SCHEME scheme;
LPWSTR sczHostName;
INTERNET_PORT port;
LPWSTR sczUser;
LPWSTR sczPassword;
LPWSTR sczPath;
LPWSTR sczQueryString;
} URI_INFO;
HRESULT DAPI UriCanonicalize(
__inout_z LPWSTR* psczUri
);
HRESULT DAPI UriCrack(
__in_z LPCWSTR wzUri,
__out_opt INTERNET_SCHEME* pScheme,
__deref_opt_out_z LPWSTR* psczHostName,
__out_opt INTERNET_PORT* pPort,
__deref_opt_out_z LPWSTR* psczUser,
__deref_opt_out_z LPWSTR* psczPassword,
__deref_opt_out_z LPWSTR* psczPath,
__deref_opt_out_z LPWSTR* psczQueryString
);
HRESULT DAPI UriCrackEx(
__in_z LPCWSTR wzUri,
__in URI_INFO* pUriInfo
);
void DAPI UriInfoUninitialize(
__in URI_INFO* pUriInfo
);
HRESULT DAPI UriCreate(
__inout_z LPWSTR* psczUri,
__in INTERNET_SCHEME scheme,
__in_z_opt LPWSTR wzHostName,
__in INTERNET_PORT port,
__in_z_opt LPWSTR wzUser,
__in_z_opt LPWSTR wzPassword,
__in_z_opt LPWSTR wzPath,
__in_z_opt LPWSTR wzQueryString
);
HRESULT DAPI UriCanonicalize(
__inout_z LPWSTR* psczUri
);
HRESULT DAPI UriFile(
__deref_out_z LPWSTR* psczFile,
__in_z LPCWSTR wzUri
);
HRESULT DAPI UriProtocol(
__in_z LPCWSTR wzUri,
__out URI_PROTOCOL* pProtocol
);
HRESULT DAPI UriRoot(
__in_z LPCWSTR wzUri,
__out LPWSTR* ppwzRoot,
__out_opt URI_PROTOCOL* pProtocol
);
HRESULT DAPI UriResolve(
__in_z LPCWSTR wzUri,
__in_opt LPCWSTR wzBaseUri,
__out LPWSTR* ppwzResolvedUri,
__out_opt const URI_PROTOCOL* pResolvedProtocol
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#include "wininet.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum URI_PROTOCOL
{
URI_PROTOCOL_UNKNOWN,
URI_PROTOCOL_FILE,
URI_PROTOCOL_FTP,
URI_PROTOCOL_HTTP,
URI_PROTOCOL_HTTPS,
URI_PROTOCOL_LOCAL,
URI_PROTOCOL_UNC
} URI_PROTOCOL;
typedef struct _URI_INFO
{
INTERNET_SCHEME scheme;
LPWSTR sczHostName;
INTERNET_PORT port;
LPWSTR sczUser;
LPWSTR sczPassword;
LPWSTR sczPath;
LPWSTR sczQueryString;
} URI_INFO;
HRESULT DAPI UriCanonicalize(
__inout_z LPWSTR* psczUri
);
HRESULT DAPI UriCrack(
__in_z LPCWSTR wzUri,
__out_opt INTERNET_SCHEME* pScheme,
__deref_opt_out_z LPWSTR* psczHostName,
__out_opt INTERNET_PORT* pPort,
__deref_opt_out_z LPWSTR* psczUser,
__deref_opt_out_z LPWSTR* psczPassword,
__deref_opt_out_z LPWSTR* psczPath,
__deref_opt_out_z LPWSTR* psczQueryString
);
HRESULT DAPI UriCrackEx(
__in_z LPCWSTR wzUri,
__in URI_INFO* pUriInfo
);
void DAPI UriInfoUninitialize(
__in URI_INFO* pUriInfo
);
HRESULT DAPI UriCreate(
__inout_z LPWSTR* psczUri,
__in INTERNET_SCHEME scheme,
__in_z_opt LPWSTR wzHostName,
__in INTERNET_PORT port,
__in_z_opt LPWSTR wzUser,
__in_z_opt LPWSTR wzPassword,
__in_z_opt LPWSTR wzPath,
__in_z_opt LPWSTR wzQueryString
);
HRESULT DAPI UriCanonicalize(
__inout_z LPWSTR* psczUri
);
HRESULT DAPI UriFile(
__deref_out_z LPWSTR* psczFile,
__in_z LPCWSTR wzUri
);
HRESULT DAPI UriProtocol(
__in_z LPCWSTR wzUri,
__out URI_PROTOCOL* pProtocol
);
HRESULT DAPI UriRoot(
__in_z LPCWSTR wzUri,
__out LPWSTR* ppwzRoot,
__out_opt URI_PROTOCOL* pProtocol
);
HRESULT DAPI UriResolve(
__in_z LPCWSTR wzUri,
__in_opt LPCWSTR wzBaseUri,
__out LPWSTR* ppwzResolvedUri,
__out_opt const URI_PROTOCOL* pResolvedProtocol
);
#ifdef __cplusplus
}
#endif
+32 -32
View File
@@ -1,32 +1,32 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI UserBuildDomainUserName(
__out_ecount_z(cchDest) LPWSTR wzDest,
__in int cchDest,
__in_z LPCWSTR pwzName,
__in_z LPCWSTR pwzDomain
);
HRESULT DAPI UserCheckIsMember(
__in_z LPCWSTR pwzName,
__in_z LPCWSTR pwzDomain,
__in_z LPCWSTR pwzGroupName,
__in_z LPCWSTR pwzGroupDomain,
__out LPBOOL lpfMember
);
HRESULT DAPI UserCreateADsPath(
__in_z LPCWSTR wzObjectDomain,
__in_z LPCWSTR wzObjectName,
__out BSTR *pbstrAdsPath
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
HRESULT DAPI UserBuildDomainUserName(
__out_ecount_z(cchDest) LPWSTR wzDest,
__in int cchDest,
__in_z LPCWSTR pwzName,
__in_z LPCWSTR pwzDomain
);
HRESULT DAPI UserCheckIsMember(
__in_z LPCWSTR pwzName,
__in_z LPCWSTR pwzDomain,
__in_z LPCWSTR pwzGroupName,
__in_z LPCWSTR pwzGroupDomain,
__out LPBOOL lpfMember
);
HRESULT DAPI UserCreateADsPath(
__in_z LPCWSTR wzObjectDomain,
__in_z LPCWSTR wzObjectName,
__out BSTR *pbstrAdsPath
);
#ifdef __cplusplus
}
#endif
+14 -14
View File
@@ -1,14 +1,14 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
BOOL WIXAPI IsVerboseLogging();
HRESULT WIXAPI SetVerboseLoggingAtom(BOOL bValue);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
BOOL WIXAPI IsVerboseLogging();
HRESULT WIXAPI SetVerboseLoggingAtom(BOOL bValue);
#ifdef __cplusplus
}
#endif
+369 -369
View File
@@ -1,369 +1,369 @@
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define WIXAPI __stdcall
#define ExitTrace WcaLogError
#define ExitTrace1 WcaLogError
#define ExitTrace2 WcaLogError
#define ExitTrace3 WcaLogError
#include "dutil.h"
#define MessageExitOnLastError(x, e, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; } }
#define MessageExitOnLastError1(x, e, f, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; } }
#define MessageExitOnFailure(x, e, s) if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 0); goto LExit; }
#define MessageExitOnFailure1(x, e, f, s) if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 1, s); goto LExit; }
#define MessageExitOnFailure2(x, e, f, s, t) if (FAILED(x)) { ExitTrace2(x, f, s, t); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 2, s, t); goto LExit; }
#define MessageExitOnFailure3(x, e, f, s, t, u) if (FAILED(x)) { ExitTrace2(x, f, s, t, u); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 3, s, t, u); goto LExit; }
#define MessageExitOnNullWithLastError(p, x, e, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; }
#define MessageExitOnNullWithLastError1(p, x, e, f, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; }
#define MessageExitOnNullWithLastError2(p, x, e, f, s, t) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s, t); WcaErrorMessage(e, x, MB_OK, 2, s, t); goto LExit; }
// Generic action enum.
typedef enum WCA_ACTION
{
WCA_ACTION_NONE,
WCA_ACTION_INSTALL,
WCA_ACTION_UNINSTALL,
} WCA_ACTION;
typedef enum WCA_CASCRIPT
{
WCA_CASCRIPT_SCHEDULED,
WCA_CASCRIPT_ROLLBACK,
} WCA_CASCRIPT;
typedef enum WCA_CASCRIPT_CLOSE
{
WCA_CASCRIPT_CLOSE_PRESERVE,
WCA_CASCRIPT_CLOSE_DELETE,
} WCA_CASCRIPT_CLOSE;
typedef enum WCA_TODO
{
WCA_TODO_UNKNOWN,
WCA_TODO_INSTALL,
WCA_TODO_UNINSTALL,
WCA_TODO_REINSTALL,
} WCA_TODO;
typedef struct WCA_CASCRIPT_STRUCT
{
LPWSTR pwzScriptPath;
HANDLE hScriptFile;
} *WCA_CASCRIPT_HANDLE;
void WIXAPI WcaGlobalInitialize(
__in HINSTANCE hInst
);
void WIXAPI WcaGlobalFinalize();
HRESULT WIXAPI WcaInitialize(
__in MSIHANDLE hInstall,
__in_z PCSTR szCustomActionLogName
);
UINT WIXAPI WcaFinalize(
__in UINT iReturnValue
);
BOOL WIXAPI WcaIsInitialized();
MSIHANDLE WIXAPI WcaGetInstallHandle();
MSIHANDLE WIXAPI WcaGetDatabaseHandle();
const char* WIXAPI WcaGetLogName();
void WIXAPI WcaSetReturnValue(
__in UINT iReturnValue
);
BOOL WIXAPI WcaCancelDetected();
#define LOG_BUFFER 2048
typedef enum LOGLEVEL
{
LOGMSG_TRACEONLY, // Never written to the log file (except in DEBUG builds)
LOGMSG_VERBOSE, // Written to log when LOGVERBOSE
LOGMSG_STANDARD // Written to log whenever informational logging is enabled
} LOGLEVEL;
void __cdecl WcaLog(
__in LOGLEVEL llv,
__in_z __format_string PCSTR fmt, ...
);
BOOL WIXAPI WcaDisplayAssert(
__in LPCSTR sz
);
void __cdecl WcaLogError(
__in HRESULT hr,
__in LPCSTR szMessage,
...
);
UINT WIXAPI WcaProcessMessage(
__in INSTALLMESSAGE eMessageType,
__in MSIHANDLE hRecord
);
UINT __cdecl WcaErrorMessage(
__in int iError,
__in HRESULT hrError,
__in UINT uiType,
__in DWORD cArgs,
...
);
HRESULT WIXAPI WcaProgressMessage(
__in UINT uiCost,
__in BOOL fExtendProgressBar
);
BOOL WIXAPI WcaIsInstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
BOOL WIXAPI WcaIsReInstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
BOOL WIXAPI WcaIsUninstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
HRESULT WIXAPI WcaSetComponentState(
__in_z LPCWSTR wzComponent,
__in INSTALLSTATE isState
);
HRESULT WIXAPI WcaTableExists(
__in_z LPCWSTR wzTable
);
HRESULT WIXAPI WcaOpenView(
__in_z LPCWSTR wzSql,
__out MSIHANDLE* phView
);
HRESULT WIXAPI WcaExecuteView(
__in MSIHANDLE hView,
__in MSIHANDLE hRec
);
HRESULT WIXAPI WcaOpenExecuteView(
__in_z LPCWSTR wzSql,
__out MSIHANDLE* phView
);
HRESULT WIXAPI WcaFetchRecord(
__in MSIHANDLE hView,
__out MSIHANDLE* phRec
);
HRESULT WIXAPI WcaFetchSingleRecord(
__in MSIHANDLE hView,
__out MSIHANDLE* phRec
);
HRESULT WIXAPI WcaGetProperty(
__in_z LPCWSTR wzProperty,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetFormattedProperty(
__in_z LPCWSTR wzProperty,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetFormattedString(
__in_z LPCWSTR wzString,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetIntProperty(
__in_z LPCWSTR wzProperty,
__inout int* piData
);
HRESULT WIXAPI WcaGetTargetPath(
__in_z LPCWSTR wzFolder,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaSetProperty(
__in_z LPCWSTR wzPropertyName,
__in_z LPCWSTR wzPropertyValue
);
HRESULT WIXAPI WcaSetIntProperty(
__in_z LPCWSTR wzPropertyName,
__in int nPropertyValue
);
BOOL WIXAPI WcaIsPropertySet(
__in LPCSTR szProperty
);
BOOL WIXAPI WcaIsUnicodePropertySet(
__in LPCWSTR wzProperty
);
HRESULT WIXAPI WcaGetRecordInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout int* piData
);
HRESULT WIXAPI WcaGetRecordString(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetRecordFormattedInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__out int* piData
);
HRESULT WIXAPI WcaGetRecordFormattedString(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaAllocStream(
__deref_out_bcount_part(cbData, 0) BYTE** ppbData,
__in DWORD cbData
);
HRESULT WIXAPI WcaFreeStream(
__in BYTE* pbData
);
HRESULT WIXAPI WcaGetRecordStream(
__in MSIHANDLE hRecBinary,
__in UINT uiField,
__deref_out_bcount_full(*pcbData) BYTE** ppbData,
__out DWORD* pcbData
);
HRESULT WIXAPI WcaSetRecordString(
__in MSIHANDLE hRec,
__in UINT uiField,
__in_z LPCWSTR wzData
);
HRESULT WIXAPI WcaSetRecordInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__in int iValue
);
HRESULT WIXAPI WcaDoDeferredAction(
__in_z LPCWSTR wzAction,
__in_z LPCWSTR wzCustomActionData,
__in UINT uiCost
);
DWORD WIXAPI WcaCountOfCustomActionDataRecords(
__in_z LPCWSTR wzData
);
HRESULT WIXAPI WcaReadStringFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__deref_out_z LPWSTR* ppwzString
);
HRESULT WIXAPI WcaReadIntegerFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__out int* piResult
);
HRESULT WIXAPI WcaReadStreamFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__deref_out_bcount(*pcbData) BYTE** ppbData,
__out DWORD_PTR* pcbData
);
HRESULT WIXAPI WcaWriteStringToCaData(
__in_z LPCWSTR wzString,
__deref_inout_z LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaWriteIntegerToCaData(
__in int i,
__deref_out_z_opt LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaWriteStreamToCaData(
__in_bcount(cbData) const BYTE* pbData,
__in DWORD cbData,
__deref_inout_z_opt LPWSTR* ppwzCustomActionData
);
HRESULT __cdecl WcaAddTempRecord(
__inout MSIHANDLE* phTableView,
__inout MSIHANDLE* phColumns,
__in_z LPCWSTR wzTable,
__out_opt MSIDBERROR* pdbError,
__in UINT uiUniquifyColumn,
__in UINT cColumns,
...
);
HRESULT WIXAPI WcaDumpTable(
__in_z LPCWSTR wzTable
);
HRESULT WIXAPI WcaDeferredActionRequiresReboot();
BOOL WIXAPI WcaDidDeferredActionRequireReboot();
HRESULT WIXAPI WcaCaScriptCreateKey(
__out LPWSTR* ppwzScriptKey
);
HRESULT WIXAPI WcaCaScriptCreate(
__in WCA_ACTION action,
__in WCA_CASCRIPT script,
__in BOOL fImpersonated,
__in_z LPCWSTR wzScriptKey,
__in BOOL fAppend,
__out WCA_CASCRIPT_HANDLE* phScript
);
HRESULT WIXAPI WcaCaScriptOpen(
__in WCA_ACTION action,
__in WCA_CASCRIPT script,
__in BOOL fImpersonated,
__in_z LPCWSTR wzScriptKey,
__out WCA_CASCRIPT_HANDLE* phScript
);
void WIXAPI WcaCaScriptClose(
__in_opt WCA_CASCRIPT_HANDLE hScript,
__in WCA_CASCRIPT_CLOSE closeOperation
);
HRESULT WIXAPI WcaCaScriptReadAsCustomActionData(
__in WCA_CASCRIPT_HANDLE hScript,
__out LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaCaScriptWriteString(
__in WCA_CASCRIPT_HANDLE hScript,
__in_z LPCWSTR wzValue
);
HRESULT WIXAPI WcaCaScriptWriteNumber(
__in WCA_CASCRIPT_HANDLE hScript,
__in DWORD dwValue
);
void WIXAPI WcaCaScriptFlush(
__in WCA_CASCRIPT_HANDLE hScript
);
void WIXAPI WcaCaScriptCleanup(
__in_z LPCWSTR wzProductCode,
__in BOOL fImpersonated
);
HRESULT WIXAPI QuietExec(
__inout_z LPWSTR wzCommand,
__in DWORD dwTimeout
);
HRESULT WIXAPI QuietExecEx(
__inout_z LPWSTR wzCommand,
__in DWORD dwTimeout,
__in BOOL fLogCommand,
__in BOOL fLogOutput
);
WCA_TODO WIXAPI WcaGetComponentToDo(
__in_z LPCWSTR wzComponentId
);
#ifdef __cplusplus
}
#endif
#pragma once
// 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.
#ifdef __cplusplus
extern "C" {
#endif
#define WIXAPI __stdcall
#define ExitTrace WcaLogError
#define ExitTrace1 WcaLogError
#define ExitTrace2 WcaLogError
#define ExitTrace3 WcaLogError
#include "dutil.h"
#define MessageExitOnLastError(x, e, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; } }
#define MessageExitOnLastError1(x, e, f, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; } }
#define MessageExitOnFailure(x, e, s) if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 0); goto LExit; }
#define MessageExitOnFailure1(x, e, f, s) if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 1, s); goto LExit; }
#define MessageExitOnFailure2(x, e, f, s, t) if (FAILED(x)) { ExitTrace2(x, f, s, t); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 2, s, t); goto LExit; }
#define MessageExitOnFailure3(x, e, f, s, t, u) if (FAILED(x)) { ExitTrace2(x, f, s, t, u); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 3, s, t, u); goto LExit; }
#define MessageExitOnNullWithLastError(p, x, e, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; }
#define MessageExitOnNullWithLastError1(p, x, e, f, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; }
#define MessageExitOnNullWithLastError2(p, x, e, f, s, t) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s, t); WcaErrorMessage(e, x, MB_OK, 2, s, t); goto LExit; }
// Generic action enum.
typedef enum WCA_ACTION
{
WCA_ACTION_NONE,
WCA_ACTION_INSTALL,
WCA_ACTION_UNINSTALL,
} WCA_ACTION;
typedef enum WCA_CASCRIPT
{
WCA_CASCRIPT_SCHEDULED,
WCA_CASCRIPT_ROLLBACK,
} WCA_CASCRIPT;
typedef enum WCA_CASCRIPT_CLOSE
{
WCA_CASCRIPT_CLOSE_PRESERVE,
WCA_CASCRIPT_CLOSE_DELETE,
} WCA_CASCRIPT_CLOSE;
typedef enum WCA_TODO
{
WCA_TODO_UNKNOWN,
WCA_TODO_INSTALL,
WCA_TODO_UNINSTALL,
WCA_TODO_REINSTALL,
} WCA_TODO;
typedef struct WCA_CASCRIPT_STRUCT
{
LPWSTR pwzScriptPath;
HANDLE hScriptFile;
} *WCA_CASCRIPT_HANDLE;
void WIXAPI WcaGlobalInitialize(
__in HINSTANCE hInst
);
void WIXAPI WcaGlobalFinalize();
HRESULT WIXAPI WcaInitialize(
__in MSIHANDLE hInstall,
__in_z PCSTR szCustomActionLogName
);
UINT WIXAPI WcaFinalize(
__in UINT iReturnValue
);
BOOL WIXAPI WcaIsInitialized();
MSIHANDLE WIXAPI WcaGetInstallHandle();
MSIHANDLE WIXAPI WcaGetDatabaseHandle();
const char* WIXAPI WcaGetLogName();
void WIXAPI WcaSetReturnValue(
__in UINT iReturnValue
);
BOOL WIXAPI WcaCancelDetected();
#define LOG_BUFFER 2048
typedef enum LOGLEVEL
{
LOGMSG_TRACEONLY, // Never written to the log file (except in DEBUG builds)
LOGMSG_VERBOSE, // Written to log when LOGVERBOSE
LOGMSG_STANDARD // Written to log whenever informational logging is enabled
} LOGLEVEL;
void __cdecl WcaLog(
__in LOGLEVEL llv,
__in_z __format_string PCSTR fmt, ...
);
BOOL WIXAPI WcaDisplayAssert(
__in LPCSTR sz
);
void __cdecl WcaLogError(
__in HRESULT hr,
__in LPCSTR szMessage,
...
);
UINT WIXAPI WcaProcessMessage(
__in INSTALLMESSAGE eMessageType,
__in MSIHANDLE hRecord
);
UINT __cdecl WcaErrorMessage(
__in int iError,
__in HRESULT hrError,
__in UINT uiType,
__in DWORD cArgs,
...
);
HRESULT WIXAPI WcaProgressMessage(
__in UINT uiCost,
__in BOOL fExtendProgressBar
);
BOOL WIXAPI WcaIsInstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
BOOL WIXAPI WcaIsReInstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
BOOL WIXAPI WcaIsUninstalling(
__in INSTALLSTATE isInstalled,
__in INSTALLSTATE isAction
);
HRESULT WIXAPI WcaSetComponentState(
__in_z LPCWSTR wzComponent,
__in INSTALLSTATE isState
);
HRESULT WIXAPI WcaTableExists(
__in_z LPCWSTR wzTable
);
HRESULT WIXAPI WcaOpenView(
__in_z LPCWSTR wzSql,
__out MSIHANDLE* phView
);
HRESULT WIXAPI WcaExecuteView(
__in MSIHANDLE hView,
__in MSIHANDLE hRec
);
HRESULT WIXAPI WcaOpenExecuteView(
__in_z LPCWSTR wzSql,
__out MSIHANDLE* phView
);
HRESULT WIXAPI WcaFetchRecord(
__in MSIHANDLE hView,
__out MSIHANDLE* phRec
);
HRESULT WIXAPI WcaFetchSingleRecord(
__in MSIHANDLE hView,
__out MSIHANDLE* phRec
);
HRESULT WIXAPI WcaGetProperty(
__in_z LPCWSTR wzProperty,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetFormattedProperty(
__in_z LPCWSTR wzProperty,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetFormattedString(
__in_z LPCWSTR wzString,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetIntProperty(
__in_z LPCWSTR wzProperty,
__inout int* piData
);
HRESULT WIXAPI WcaGetTargetPath(
__in_z LPCWSTR wzFolder,
__out LPWSTR* ppwzData
);
HRESULT WIXAPI WcaSetProperty(
__in_z LPCWSTR wzPropertyName,
__in_z LPCWSTR wzPropertyValue
);
HRESULT WIXAPI WcaSetIntProperty(
__in_z LPCWSTR wzPropertyName,
__in int nPropertyValue
);
BOOL WIXAPI WcaIsPropertySet(
__in LPCSTR szProperty
);
BOOL WIXAPI WcaIsUnicodePropertySet(
__in LPCWSTR wzProperty
);
HRESULT WIXAPI WcaGetRecordInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout int* piData
);
HRESULT WIXAPI WcaGetRecordString(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaGetRecordFormattedInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__out int* piData
);
HRESULT WIXAPI WcaGetRecordFormattedString(
__in MSIHANDLE hRec,
__in UINT uiField,
__inout LPWSTR* ppwzData
);
HRESULT WIXAPI WcaAllocStream(
__deref_out_bcount_part(cbData, 0) BYTE** ppbData,
__in DWORD cbData
);
HRESULT WIXAPI WcaFreeStream(
__in BYTE* pbData
);
HRESULT WIXAPI WcaGetRecordStream(
__in MSIHANDLE hRecBinary,
__in UINT uiField,
__deref_out_bcount_full(*pcbData) BYTE** ppbData,
__out DWORD* pcbData
);
HRESULT WIXAPI WcaSetRecordString(
__in MSIHANDLE hRec,
__in UINT uiField,
__in_z LPCWSTR wzData
);
HRESULT WIXAPI WcaSetRecordInteger(
__in MSIHANDLE hRec,
__in UINT uiField,
__in int iValue
);
HRESULT WIXAPI WcaDoDeferredAction(
__in_z LPCWSTR wzAction,
__in_z LPCWSTR wzCustomActionData,
__in UINT uiCost
);
DWORD WIXAPI WcaCountOfCustomActionDataRecords(
__in_z LPCWSTR wzData
);
HRESULT WIXAPI WcaReadStringFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__deref_out_z LPWSTR* ppwzString
);
HRESULT WIXAPI WcaReadIntegerFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__out int* piResult
);
HRESULT WIXAPI WcaReadStreamFromCaData(
__deref_in LPWSTR* ppwzCustomActionData,
__deref_out_bcount(*pcbData) BYTE** ppbData,
__out DWORD_PTR* pcbData
);
HRESULT WIXAPI WcaWriteStringToCaData(
__in_z LPCWSTR wzString,
__deref_inout_z LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaWriteIntegerToCaData(
__in int i,
__deref_out_z_opt LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaWriteStreamToCaData(
__in_bcount(cbData) const BYTE* pbData,
__in DWORD cbData,
__deref_inout_z_opt LPWSTR* ppwzCustomActionData
);
HRESULT __cdecl WcaAddTempRecord(
__inout MSIHANDLE* phTableView,
__inout MSIHANDLE* phColumns,
__in_z LPCWSTR wzTable,
__out_opt MSIDBERROR* pdbError,
__in UINT uiUniquifyColumn,
__in UINT cColumns,
...
);
HRESULT WIXAPI WcaDumpTable(
__in_z LPCWSTR wzTable
);
HRESULT WIXAPI WcaDeferredActionRequiresReboot();
BOOL WIXAPI WcaDidDeferredActionRequireReboot();
HRESULT WIXAPI WcaCaScriptCreateKey(
__out LPWSTR* ppwzScriptKey
);
HRESULT WIXAPI WcaCaScriptCreate(
__in WCA_ACTION action,
__in WCA_CASCRIPT script,
__in BOOL fImpersonated,
__in_z LPCWSTR wzScriptKey,
__in BOOL fAppend,
__out WCA_CASCRIPT_HANDLE* phScript
);
HRESULT WIXAPI WcaCaScriptOpen(
__in WCA_ACTION action,
__in WCA_CASCRIPT script,
__in BOOL fImpersonated,
__in_z LPCWSTR wzScriptKey,
__out WCA_CASCRIPT_HANDLE* phScript
);
void WIXAPI WcaCaScriptClose(
__in_opt WCA_CASCRIPT_HANDLE hScript,
__in WCA_CASCRIPT_CLOSE closeOperation
);
HRESULT WIXAPI WcaCaScriptReadAsCustomActionData(
__in WCA_CASCRIPT_HANDLE hScript,
__out LPWSTR* ppwzCustomActionData
);
HRESULT WIXAPI WcaCaScriptWriteString(
__in WCA_CASCRIPT_HANDLE hScript,
__in_z LPCWSTR wzValue
);
HRESULT WIXAPI WcaCaScriptWriteNumber(
__in WCA_CASCRIPT_HANDLE hScript,
__in DWORD dwValue
);
void WIXAPI WcaCaScriptFlush(
__in WCA_CASCRIPT_HANDLE hScript
);
void WIXAPI WcaCaScriptCleanup(
__in_z LPCWSTR wzProductCode,
__in BOOL fImpersonated
);
HRESULT WIXAPI QuietExec(
__inout_z LPWSTR wzCommand,
__in DWORD dwTimeout
);
HRESULT WIXAPI QuietExecEx(
__inout_z LPWSTR wzCommand,
__in DWORD dwTimeout,
__in BOOL fLogCommand,
__in BOOL fLogOutput
);
WCA_TODO WIXAPI WcaGetComponentToDo(
__in_z LPCWSTR wzComponentId
);
#ifdef __cplusplus
}
#endif
Loaded 100 of 738 files, more files were not shown because too many files have changed in this diff. Show more