diff --git a/msvs/RedisServer.sln b/msvs/RedisServer.sln index a58836d469f65e29768d6696096a0fc88794069f..6b291a0dd258efc4b85357f3fdacc70e4c2497e9 100644 --- a/msvs/RedisServer.sln +++ b/msvs/RedisServer.sln @@ -197,11 +197,13 @@ Global {74A69E5D-6540-43CC-9975-20989BF19EB0}.Release|x64.Build.0 = Release|x64 {74A69E5D-6540-43CC-9975-20989BF19EB0}.Release|x86.ActiveCfg = Release|x64 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|Mixed Platforms.Build.0 = Debug|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|Win32.ActiveCfg = Debug|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|x64.ActiveCfg = Debug|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|x86.ActiveCfg = Debug|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Debug|x86.Build.0 = Debug|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Release|Mixed Platforms.Build.0 = Release|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Release|Win32.ActiveCfg = Release|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Release|x64.ActiveCfg = Release|x86 {1A5CC75A-CB72-4741-8881-77CC039FFCE1}.Release|x86.ActiveCfg = Release|x86 diff --git a/msvs/RedisWindowsX64/RedisWindowsX64.wixproj b/msvs/RedisWindowsX64/RedisWindowsX64.wixproj index bd0efc4fd9fb9d293d9c85f9185becb7db76079e..8373c65a38494054b6a5fc61563ac24a5bb4d310 100644 --- a/msvs/RedisWindowsX64/RedisWindowsX64.wixproj +++ b/msvs/RedisWindowsX64/RedisWindowsX64.wixproj @@ -8,6 +8,11 @@ 2.0 Redis-Windows-x64 Package + + $(MSBuildProjectDirectory)\lib\wix39-binaries\ + $(WixToolPath)wix.targets + $(WixToolPath)WixTasks.dll + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/LuxTasks.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/LuxTasks.dll new file mode 100644 index 0000000000000000000000000000000000000000..e4f9ecc85772368bcfbdbf8883180c7097cced26 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/LuxTasks.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.Cab.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.Cab.dll new file mode 100644 index 0000000000000000000000000000000000000000..e4d34c75e2874972c6d2c8da37be2ecc572b90ff Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.Cab.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.dll new file mode 100644 index 0000000000000000000000000000000000000000..7852138084d16585dd7568561e5c74c0d06cb0bd Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Compression.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Resources.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..532df8d7307cfbba8140efcef0dbc7c83f514e31 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.Resources.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.Package.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.Package.dll new file mode 100644 index 0000000000000000000000000000000000000000..4878f102ac541ba19254e6ded962bafd246e3d29 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.Package.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.dll new file mode 100644 index 0000000000000000000000000000000000000000..6d016292bfab235c3dfaa434da08b028c9b14a1d Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/Microsoft.Deployment.WindowsInstaller.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixBalExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixBalExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..f36c1283dba999902747160e5d87670db0a1146d Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixBalExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixComPlusExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixComPlusExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..fbb0b7cd656d98a85826692974804f0dfec5177a Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixComPlusExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixDependencyExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDependencyExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..1fd41070ef1ab397d4eb637024dac5aee3c7d5db Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDependencyExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixDifxAppExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDifxAppExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..e2baaf38da3f8318a9423d549ff2c76ff7017b42 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDifxAppExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixDirectXExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDirectXExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..25750fefec56208899ee3f4fee5cdb312263335c Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixDirectXExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixFirewallExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixFirewallExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc303c205534c9f3d47013b85d5b0a04c7532be3 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixFirewallExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixGamingExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixGamingExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc9e3d89bc91c5ca9654726fd50bb2224413c728 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixGamingExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixIIsExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixIIsExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..f4c0b7f644920715061f8542d60c6179ac2b6e31 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixIIsExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixLuxExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixLuxExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..f2cf3f3511cfc80818d6a8d3809367b286c09ff4 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixLuxExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixMsmqExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixMsmqExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..952b0d355c98852544c114622a608a674bd63b68 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixMsmqExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixNetFxExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixNetFxExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..10e15553ca27075db0a3146d9a5fd36728aef2a8 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixNetFxExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixPSExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixPSExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ff13717ea077babf0b3adbf3847ae59ccec0540 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixPSExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixSqlExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixSqlExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..8f4e0f845b765920ab50f45d1765fc1af1abe3d1 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixSqlExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixTagExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixTagExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..d319d8208822be7406e33e654ec73e0c34679a81 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixTagExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixTasks.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixTasks.dll new file mode 100644 index 0000000000000000000000000000000000000000..8ffdd663d6c090335b383e29ea5b99b28d8168b8 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixTasks.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixUIExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixUIExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..250df6d23888f7eb9dadaad993bdb0e8233ad1d2 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixUIExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixUtilExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixUtilExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..b6aea256ceeca94600a40ba7cd9a024f0a9ef2ad Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixUtilExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/WixVSExtension.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/WixVSExtension.dll new file mode 100644 index 0000000000000000000000000000000000000000..d07306587af5c99f321c4b1c7cf11d3c36dd5dc5 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/WixVSExtension.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/candle.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/candle.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/candle.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/darice.cub b/msvs/RedisWindowsX64/lib/wix39-binaries/darice.cub new file mode 100644 index 0000000000000000000000000000000000000000..dab45677f49c4e4376970b786d6a06ede84d93b9 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/darice.cub differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/dark.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/dark.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..08e9d2677dbace13ae868d78e9f266f8d58cf801 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/dark.exe.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x64.wixlib b/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x64.wixlib new file mode 100644 index 0000000000000000000000000000000000000000..01b552bce5280556390edb64141564ea910797d9 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x64.wixlib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x86.wixlib b/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x86.wixlib new file mode 100644 index 0000000000000000000000000000000000000000..420cd642e62a9b786dd1904b31b4f0649932c9f3 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/difxapp_x86.wixlib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTF.chm b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTF.chm new file mode 100644 index 0000000000000000000000000000000000000000..1e870d2f11c939453825de8e54e56f14ed513ed6 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTF.chm differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTFAPI.chm b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTFAPI.chm new file mode 100644 index 0000000000000000000000000000000000000000..9594ff2ee4a9f08be5c967a1589d1b78bb027b7c Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/DTFAPI.chm differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/Dependency.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/Dependency.xsd new file mode 100644 index 0000000000000000000000000000000000000000..7112807c6299f62e6b8cf87e005dbdd734896703 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/Dependency.xsd @@ -0,0 +1,226 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Dependency Extension. + + + + + + Describes the information for this product or feature that serves as a dependency of other products or features. + + + + + + + + + + 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. + + + 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. + + + By default this uses the Product/@Id attribute value, which may be automatically generated. + + + How To: Author product dependencies + + + + + + + + + + + Dependency provider identity. If this attribute is not specified, an identifier will be generated automatically. + + + + + + + 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. + + + + + + + The version of the package. For MSI packages, the ProductVersion will be used by default + and this attribute should not be specified. + + + + + + + Optional display name of the package. For MSI packages, the ProductName will be used by default. + + + + + + + + + Describes a dependency on a provider for the current component or package. + + + + + + + + + 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. + + + 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. + + + + How To: Author product dependencies + + + + + + + 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. + + + + + + + The unique registry key name for the dependency provider to require during installation of this product. + + + + + + + The minimum version of the dependency provider required to be installed. The default is unbound. + + + + + + + The maximum version of the dependency provider required to be installed. The default is unbound. + + + + + + + Set to "yes" to make the range of dependency provider versions required include the value specified in Minimum. + + + + + + + Set to "yes" to make the range of dependency provider versions required include the value specified in Maximum. + + + + + + + + + References existing authoring for a dependency on a provider for the current component or package. + + + + + 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. + + + + How To: Author product dependencies + + + + + + + The identifier of the Requires element to reference. + + + + + + + + + Optional attribute to explicitly author the provider key for the entire bundle. + + + + + + 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. + + + 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. + + + + + + + + + + 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. + + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/WiX.chm b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/WiX.chm new file mode 100644 index 0000000000000000000000000000000000000000..459b2dcccb62796a5f59b44daed2bcd0666a0509 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/WiX.chm differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/bal.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/bal.xsd new file mode 100644 index 0000000000000000000000000000000000000000..b87acfec0b882b5721cc043d65943a4f907d0f2c --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/bal.xsd @@ -0,0 +1,234 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Burn User Experience Extension. + + + + + + + + + Conditions for a bundle. The condition is specified in the inner text of the element. + + + + + + + + + + + + The condition that must evaluate to true for the installation to continue. + + + + + + Set the value to the text to display when the condition fails and the installation must be terminated. + + + + + + + + + + + + Configures WixStandardBootstrapperApplication for a Bundle. + + + + + + + + + + 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. + + + + + + + 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. + + + + + + + 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. + + + + + + + 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. + + + + + + Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl. + + + + + URL target of the license link. Cannot be used simultaneously with LicenseFile. This attribute can be empty to hide the license link completely. + + + + + Source file of the logo graphic. + + + + + Source file of the side logo graphic. + + + + + Source file of the theme XML. + + + + + Source file of the theme localization .wxl file. + + + + + If set to "yes", the Options button will not be shown and the user will not be able to choose an installation directory. + + + + + 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. + + + + + If set to "yes", the Repair button will not be shown in the maintenance-mode UI. + + + + + If set to "yes", the application version will be displayed on the UI. + + + + + + + + + When set to "yes", the Prereq BA will plan the package to be installed if its InstallCondition is "true" or empty. + + + + + + + + + + + + + + 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'." + + + + + + + + + + + Configures the ManagedBootstrapperApplicationHost for a Bundle. + + + + + + + + + Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl. + + + + + URL target of the license link. Cannot be used simultaneously with LicenseFile. + + + + + Source file of the logo graphic. + + + + + Source file of the theme XML. + + + + + Source file of the theme localization .wxl file. + + + + + + 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. + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/complus.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/complus.xsd new file mode 100644 index 0000000000000000000000000000000000000000..63a86e5296a46f2c8ec06f21ac4681fd9462d83b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/complus.xsd @@ -0,0 +1,949 @@ + + + + + + The source code schema for the Windows Installer XML Toolset COM+ Extension. + + + + + + + + + + + + + + + Defines a COM+ partition. If this element is a child of a + Component element, the partition will be created in association with this + component. If the element is a child of any of the Fragment, Module or Product + elements it is considered to be a locater, referencing an existing partition. + + + + + + + + + + + + + Identifier for the element. + + + + + Id for the partition. This attribute can be omitted, in + which case an id will be generated on install. If the element is a locater, + this attribute can be omitted if a value is provided for the Name attribute. + + + + + Name of the partition. This attribute can be omitted if + the element is a locater, and a value is provided for the PartitionId + attribute. + + + + + + + + + + + + + + + + + + Defines a COM+ partition role. Partition roles can not be + created; this element can only be used as a locater to reference an existing + role. + + + + + + + + + + + + Identifier for the element. + + + + + The id of a ComPlusPartition element representing the partition + the role belongs to. + + + + + Name of the partition role. + + + + + + + + + + + + This element represents a user membership in a partition + role. When the parent component of this element is installed, the user will be + added to the associated partition role. + + + + + + Identifier for the element. + + + + + The id of a ComPlusPartitionRole element representing the + partition the user should be added to. + + + + + Foreign key into the User table. + + + + + + + + + + + + This element represents a security group membership in a + partition role. When the parent component of this element is installed, the + security group will be added to the associated partition role. + + + + + + Identifier for the element. + + + + + The id of a ComPlusPartitionRole element representing the + partition the user should be added to. + + + + + Foreign key into the Group table. + + + + + + + + + + + + Represents a default partition definition for a user. When + the parent component of this element is installed, the default partition of the + user will be set to the referenced partition. + + + + + + Identifier for the element. + + + + + The id of a ComPlusPartition element representing the + partition that will be the default partition for the user. + + + + + Foreign key into the User table. + + + + + + + + + + + + + + + Defines a COM+ application. If this element is a descendent + of a Component element, the application will be created in association with + this component. If the element is a child of any of the Fragment, Module or + Product elements it is considered to be a locater, referencing an existing + application. + + If the element is a child of a ComPlusPartition element, + or have its Partition attribute set, the application will be installed under + the referenced partition. + + + + + + + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusPartition + element, this attribute can be provided with the id of a ComPlusPartition + element representing the partition the application belongs to. + + + + + Id for the application. This attribute can be omitted, in + which case an id will be generated on install. If the element is a locater, + this attribute can be omitted if a value is provided for the Name attribute. + + + + + Name of the application. This attribute can be omitted if + the element is a locater, and a value is provided for the PartitionId + attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines an application role. If this element is a descendent + of a Component element, the application role will be created in association + with this component. If the element is a child of any of the Fragment, Module + or Product elements it is considered to be a locater, referencing an existing + application role. + + + + + + + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusApplication + element, this attribute should be provided with the id of a + ComPlusApplication element representing the application the role belongs to. + + + + + Name of the application role. + + + + + + + + + + + + + This element represents a user membership in an + application role. When the parent component of this element is installed, the + user will be added to the associated application role. This element must be a descendent + of a Component element; it can not be a child of a ComPlusApplicationRole + locater element. To reference a locater element use the ApplicationRole + attribute. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusApplicationRole + element, this attribute should be provided with the id of a + ComPlusApplicationRole element representing the application role the user is + to be added to. + + + + + Foreign key into the User table. + + + + + + + + + + + + This element represents a security group membership in an + application role. When the parent component of this element is installed, the + user will be added to the associated application role. This element must be a + descendent of a Component element; it can not be a child of a + ComPlusApplicationRole locater element. To reference a locater element use the + ApplicationRole attribute. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusApplicationRole + element, this attribute should be provided with the id of a + ComPlusApplicationRole element representing the application role the user is + to be added to. + + + + + Foreign key into the Group table. + + + + + + + + + Represents a DLL or assembly to be registered with COM+. If + this element is a child of a ComPlusApplication element, the assembly will be + registered in this application. Other ways the Application attribute must be + set to an application. The element must be a descendent of a Component element, + it can not be a child of a ComPlusApplication locator element. + + + + + + When installing a native assembly, all components + contained in the assembly must be represented as ComPlusComponent elements + under this element. Any component not listed will not be removed during + uninstall. + + + + The fields DllPath, TlbPath and PSDllPath are formatted + fields that should contain file paths to there respective file types. A typical + value for DllPath for example, should be something like “[#MyAssembly_dll]”, + where “MyAssembly_dll” is the key of the dll file in the File table. + + + + Warning: The assembly name provided in the AssemblyName + attribute must be a fully specified assembly name, if a partial name is + provided a random assembly matching the partial name will be selected. + + + + + + + + + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusApplication + element, this attribute should be provided with the id of a ComPlusApplication + element representing the application the assembly is to be registered in. + This attribute can be omitted for a .NET assembly even if the application is + not a child of a ComPlusApplication element. + + + + + The name of the assembly used to identify the assembly in + the GAC. This attribute can be provided only if DllPathFromGAC is set to + “yes”. + + + + + The path to locate the assembly DLL during registration. + This attribute should be provided if DllPathFromGAC is not set to “yes”. + + + + + An optional path to an external type lib for the assembly. + This attribute must be provided if the Type attribute is set to “.net”. + + + + + An optional path to an external proxy/stub DLL for the assembly. + + + + + + + + + + + + + + + Indicates that the assembly is to be installed as an event + class DLL. This attribute is only valid for native assemblies. The assembly + will be installed with the COM+ catalog’s InstallEventClass() function. + + + + + Indicates that the DLL path should be extracted from the + GAC instead for being provided in the DllPath attribute. If this attribute is + set to “yes”, the name of the assembly can be provided using the AssemblyName + attribute. Or, if this AssemblyName attribute is missing, the name will be + extracted from the MsiAssemblyName table using the id of the parent Component + element. + + + + + Indicates that the assembly should be installed in the + commit custom action instead of the normal deferred custom action. This is + necessary when installing .NET assemblies to the GAC in the same + installation, as the assemblies are not visible in the GAC until after the + InstallFinalize action has run. + + + + + + + + + Defines a dependency between two assemblies. This element + affects the order in which assembles are registered. Any assemblies referenced + by this element are guarantied to be registered before, and unregistered after, + the assembly referenced by the parent ComPlusAssembly element. + + + + It is only necessary to explicitly specify dependencies between + assemblies contained in the same package (MSI or MSM). Assemblies merged in to a + package from a merge module will always be installed before any assemblies + specified in the base package. Assemblies merged in from different merge + modules are sequenced using the ModuleDependency MSI table. It is not possible + to have cross dependencies between merge modules or have an assembly in a merge + module depend on an assembly in the base package. + + + + + + + Reference to the id of the assembly required by the parent + ComPlusAssembly element. + + + + + + + + Represents a COM+ component in an assembly. + + + + + + + + + + + + Identifier for the element. + + + + + CLSID of the component. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a role assignment to a COM+ component. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusComponent + element, this attribute should be provided with the id of a ComPlusComponent + element representing the component the role is to be added to. + + + + + Id of the ComPlusApplicationRole element representing the + role that shall be granted access to the component. + + + + + + + + Represents an interface for a COM+ component. + + + + + + + + + + + Identifier for the element. + + + + + IID of the interface. + + + + + + + + + + + + + + Represents a role assignment to an interface. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusInterface + element, this attribute should be provided with the id of a ComPlusInterface + element representing the interface the role is to be added to. + + + + + Id of the ComPlusApplicationRole element representing the + role that shall be granted access to the interface. + + + + + + + + + Represents a method for an interface. + + + + + + + + + + Identifier for the element. + + + + + + + Dispatch id of the method. If this attribute is not set a + value must be provided for the Name attribute. + + + + + + + Name of the method. If this attribute is not set a value + must be provided for the Index attribute. + + + + + + + + + + + + + + + Represents a role assignment to a COM+ method. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusMethod element, + this attribute should be provided with the id of a ComPlusMethod element + representing the method the role is to be added to. + + + + + Id of the ComPlusApplicationRole element representing the + role that shall be granted access to the method. + + + + + + + + + + + + Defines an event subscription for a COM+ component. + + + + + + Identifier for the element. + + + + + If the element is not a child of a ComPlusComponent + element, this attribute should be provided with the id of a ComPlusComponent + element representing the component the subscription is to be created for. + + + + + Id of the subscription. If a value is not provided for + this attribute, an id will be generated during installation. + + + + + Name of the subscription. + + + + + CLSID of the event class for the subscription. If a value + for this attribute is not provided, a value for the PublisherID attribute + must be provided. + + + + + Publisher id for the subscription. If a value for this + attribute is not provided, a value for the EventCLSID attribute must be + provided. + + + + + + + + + + + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + + + Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF". + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/difxapp.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/difxapp.xsd new file mode 100644 index 0000000000000000000000000000000000000000..940f1d5a381d03b837935770029972c16cc413c5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/difxapp.xsd @@ -0,0 +1,113 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Driver Install Frameworks for Applications Extension. + + + + + + + + + + + + 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. + + + + + + + Specifies that the DIFxApp CustomActions should add an entry in the Add/Remove Programs Control + Panel applet. The default is 'yes'. + + + + + + + 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". + + + + + + + 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 http://www.microsoft.com/whdc/driver/install/difxtools.mspx + for more information. + + + + + + + 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". + + + + + + + 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'. + + + + + + + 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. + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/firewall.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/firewall.xsd new file mode 100644 index 0000000000000000000000000000000000000000..a358d1b69107ab8ff2bbf0a459ea638609ec80e5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/firewall.xsd @@ -0,0 +1,216 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Firewall Extension. + + + + + + + + + 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 + About Windows Firewall API. + + + + + + + + + + + + Explicitly-listed remote addresses that this exception allows through the + firewall. + + + + + + + + + Unique ID of this firewall exception. + + + + + + + + Name of this firewall exception, visible to the user in the firewall + control panel. + + + + + + + + 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. + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + If "yes," failures to register this firewall exception will be silently + ignored. If "no" (the default), failures will cause rollback. + + + + + + + + Profile type for this firewall exception. Default is "all". + + + + + + + + + + + + + + + Description for this firewall rule displayed in Windows Firewall manager in + Windows Vista and later. + + + + + + + + + + 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 + + RemoteAddresses Property. + For Windows Vista and Windows Server 2008, see + + RemoteAddresses Property. + + + + + + + + A remote address. + + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/gaming.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/gaming.xsd new file mode 100644 index 0000000000000000000000000000000000000000..11fe8244fddea5003dbfebe6bb7a5434800784af --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/gaming.xsd @@ -0,0 +1,132 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Gaming Extension. + + + + + + + + + Registers this extension for the + rich saved games + property handler on Windows Vista and later. + + + + + + + + + + + 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 + The Windows Vista Game Explorer. + 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. + + + + + + + + + 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. + + + + + + + + The game's instance ID. + + + + + Identifier of the file that contains the game's GDF resource, if it doesn't exist in the parent file. + + + + + Identifier of the file that is the game's executable, if it isn't the parent file. + + + + + + + + + Creates a shortcut to the parent File and registers it as a "play task" in Game Explorer. For more information, see + + Game Explorer Tasks + . PlayTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7. + + + + + + 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. + + + + + Command-line arguments to be passed to the game executable for this task. + + + + + + + + + Creates an Internet shortcut and registers it as a "support task" in Game Explorer. For more information, see + + Game Explorer Tasks + . SupportTask should not be used when authoring the tasks in the GDF using ExtendedProperties\GameTasks available in Windows 7. + + + + + + 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. + + + + + URI for this task. + + + + + + + + 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. + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/iis.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/iis.xsd new file mode 100644 index 0000000000000000000000000000000000000000..6fb3b5d312da97b8991c8bfe260e934f571f1c49 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/iis.xsd @@ -0,0 +1,1109 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Internet Information Services Extension. + + + + + + + + + + + + + + WebDirProperties used by one or more WebSites. Lists properties common to IIS web sites and vroots. Corresponding properties can be viewed through the IIS Manager snap-in. One property entry can be reused by multiple sites or vroots using the Id field as a reference, using WebVirtualDir.DirProperties, WebSite.DirProperties, or WebDir.DirProperties. + + + + + + + + + + + Sets the Enable Anonymous Access checkbox, which maps anonymous users to a Windows user account. When setting this to 'yes' you should also provide the user account using the AnonymousUser attribute, and determine what setting to use for the IIsControlledPassword attribute. Defaults to 'no.' + + + + + Reference to the Id attribute on the User element to be used as the anonymous user for the directory. See the User element for more information. + + + + + Sets whether IIS should control the password used for the Windows account specified in the AnonymousUser attribute. Defaults to 'no.' + + + + + Sets the Windows Authentication option, which enables integrated Windows authentication to be used on the site. Defaults to 'no.' + + + + + Sets the Digest Authentication option, which allows using digest authentication with domain user accounts. Defaults to 'no.' + + + + + Sets the Basic Authentication option, which allows clients to provide credentials in plaintext over the wire. Defaults to 'no.' + + + + + Sets the Passport Authentication option, which allows clients to provide credentials via a .Net Passport account. Defaults to 'no.' + + + + + Sets whether visits to this site should be logged. Defaults to 'no.' + + + + + Sets the Index Resource option, which specifies whether this web directory should be indexed. Defaults to 'no.' + + + + + The list of default documents to set for this web directory, in comma-delimited format. + + + + + Sets the option for whether to send detailed ASP errors back to the client on script error. Default is 'no.' + + + + + Value to set the HttpExpires attribute to for a Web Dir in the metabase. + + + + + Integer value specifying the cache control maximum age value. + + + + + Custom HTTP 1.1 cache control directives. + + + + + Specifies whether IIs will return custom errors for this directory. + + + + + A value of true indicates that file access requires SSL file permission processing, with or without a client certificate. This corresponds to AccessSSL flag for AccessSSLFlags IIS metabase property. + + + + + A value of true indicates that file access requires SSL file permission processing with a minimum key size of 128 bits, with or without a client certificate. This corresponds to AccessSSL128 flag for AccessSSLFlags IIS metabase property. + + + + + This corresponds to AccessSSLMapCert flag for AccessSSLFlags IIS metabase property. + + + + + This corresponds to AccessSSLNegotiateCert flag for AccessSSLFlags IIS metabase property. + + + + + This corresponds to AccessSSLRequireCert flag for AccessSSLFlags IIS metabase property. + + + + + Comma delimited list, in order of precedence, of Windows authentication providers that IIS will attempt to use: NTLM, Kerberos, Negotiate, and others. + + + + + + + + Custom Web Errors used by WebSites and Virtual Directories. + + + You can only use error code and sub code combinations which are supported by IIS. Attempting to set a custom error for + an error code and sub code combination that is not supported by IIS (in the default list of error codes) will result in + an installation failure. + + + + + + + HTTP 1.1 error code. + + + + + Error sub code. Set to 0 to get the wild card "*". + + + + + File to be sent to the client for this error code and sub code. This can be formatted. For example: [#FileId]. + + + + + URL to be sent to the client for this error code and sub code. This can be formatted. + + + + + + + + Custom HTTP Header definition for IIS resources such as WebSite and WebVirtualDir. + + + + + Primary key for custom HTTP Header entry. This will default to the Name attribute. + + + + + Name of the custom HTTP Header. + + + + + Value for the custom HTTP Header. This attribute can contain a formatted string that is processed at install time to insert the values of properties using [PropertyName] syntax. Also supported are environment variables, file installation paths, and component installation directories; see Formatted for details. + + + + + + + + MimeMap definition for IIS resources. + + + + + Id for the MimeMap. + + + + + Mime-type covered by the MimeMap. + + + + + Extension covered by the MimeMap. Must begin with a dot. + + + + + + + + + + + IIs Filter for a Component + + + + + The unique Id for the web filter. + + + + + The name of the filter to be used in IIS. + + + + + + The path of the filter executable file. + This should usually be a value like '[!FileId]', where 'FileId' is the file identifier + of the filter executable file. + + + + + + + Specifies the parent website for this filter (if there is one). + If this is a global filter, then this attribute should not be specified. + + + + + + Description of the filter. + + + + + Sets the MD_FILTER_FLAGS metabase key for the filter. This must be an integer. See MSDN 'FilterFlags' documentation for more details. + + + + + + The legal values are "first", "last", or a number. + If a number is specified, it must be greater than 0. + + + + + + + + + Extension for WebApplication + + + + + usually a Property that resolves to short file name path + + + + + Extension being registered. Do not prefix with a '.' (e.g. you should use "html", not ".html"). To register for all extensions, use Extension="*". To register a wildcard application map (which handles all requests, even those for directories or files with no extension) omit the Extension attribute completely. + + + + + + + + + + + + + + + + + + + + IIS6 Application Pool + + + + + + + + Id of the AppPool. + + + + + Name of the AppPool to be shown in IIs. + + + + + User account to run the AppPool as. To use this, you must set the Identity attribute to 'other'. + + + + + How often, in minutes, you want the AppPool to be recycled. + + + + + How often, in requests, you want the AppPool to be recycled. + + + + + Specifies the amount of virtual memory (in KB) that a worker process can use before the worker process recycles. The maximum value supported for this attribute is 4,294,967 KB. + + + + + Specifies the amount of private memory (in KB) that a worker process can use before the worker process recycles. The maximum value supported for this attribute is 4,294,967 KB. + + + + + Shutdown worker process after being idle for (time in minutes). + + + + + Limit the kernel request queue (number of requests). + + + + + Maximum CPU usage (percent). + + + + + Refresh CPU usage numbers (in minutes). + + + + + Action taken when CPU exceeds maximum CPU use (as defined with MaxCpuUsage and RefreshCpu). + + + + + + + + + + + Maximum number of worker processes. + + + + + Identity you want the AppPool to run under (applicationPoolIdentity is only available on IIS7). Use the 'other' value in conjunction with the User attribute to specify non-standard user. + + + + + + + + + + + + + + + Specifies the request-processing mode that is used to process requests for managed content. Only available on IIS7, ignored on IIS6. + See http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/applicationPoolDefaults for valid values. + This attribute may be set via a formatted Property (e.g. [MyProperty]). + + + + + + + Specifies the .NET Framework version to be used by the application pool. Only available on IIS7, ignored on IIS6. + See http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/applicationPoolDefaults for valid values. + This attribute may be set via a formatted Property (e.g. [MyProperty]). + + + + + + + + + IIS6 Application Pool Recycle Times on 24 hour clock. + + + + + + + + + + + + + + + + Used to install and uninstall certificates. + + + + + + + + + + + Unique identifier for this certificate in the installation package. + + + + + + + Name of the certificate that will be installed or uninstalled in the specified store. + This attribute may be set via a formatted Property (e.g. [MyProperty]). + + + + + + + + + + Contains the certificates of certificate authorities that the user trusts to issue certificates to others. Certificates in these stores are normally supplied with the operating system or by the user's network administrator. + + + + + + + Use the "personal" value instead. + + + + + + + Contains personal certificates. These certificates will usually have an associated private key. This store is often + referred to as the "MY" certificate store. + + + + + + + + Contains the certificates of certificate authorities that the user trusts to issue certificates to others. Certificates in these stores are normally supplied with the operating system or by the user's network administrator. Certificates in this store are typically self-signed. + + + + + + + Contains the certificates of those that the user normally sends enveloped messages to or receives signed messages from. + See MSDN documentation for more information. + + + + + + + Contains the certificates of those directly trusted people and resources. + See MSDN documentation for more information. + + + + + + + Contains the certificates of those publishers who are trusted. + See MSDN documentation for more information. + + + + + + + + + + + + + + + + + + + This attribute controls whether the CertificatePath attribute is a path to a certificate file (Request='no') or the + certificate authority to request the certificate from (Request='yes'). + + + + + + + Reference to a Binary element that will store the certificate as a stream inside the package. This attribute cannot be specified with + the CertificatePath attribute. + + + + + + + + + + If the Request attribute is "no" then this attribute is the path to the certificate file outside of the package. + If the Request attribute is "yes" then this atribute is the certificate authority to request the certificate from. + This attribute may be set via a formatted Property (e.g. [MyProperty]). + + + + + + + If the Binary stream or path to the file outside of the package is a password protected PFX file, the password for that + PFX must be specified here. This attribute may be set via a formatted Property (e.g. [MyProperty]). + + + + + + + + + + Associates a certificate with the parent WebSite. The Certificate element should be + in the same Component as the parent WebSite. + + + + + + + + + + The identifier of the referenced Certificate. + + + + + + + + + + + + Here is an explanation of the acceptable values for each property and their meaning: + + + For the Ids IIs5IsolationMode and LogInUTF8, no value should be specified since + the presence of this property indicates that the setting should be set. + + + For the MaxGlobalBandwidth Id, the value should be specified in kilobytes. The + value should be a base 10 number. + + + ETagChangeNumber sets the machine-specific portion of ETag as a number. This value, + when synchronized across servers in a web farm, allows the web farm to return an + identical ETag for a given resource regardless of the server that handled the + request. The value should be a base 10 number. + + + + + IIS Properties + + + + + + + + + + + + + + + + The value to be used for the WebProperty specified in the Id attribute. See + the remarks section for information on acceptable values for each Id. + + + + + + + + + + + + + + Defines properties for a web application. These properties can be used for more than one application defined in a web site or vroot, by defining this element in a common location and referring to it by setting the WebApplication attribute of the WebSite and WebVirtualDir elements. + + + + + + + + + Sets the name of this application. + + + + + + Sets the application isolation level for this application for pre-IIS 6 applications. + + + + + + + + Means the application executes within the IIS process. + + + + + + + Executes pooled in a separate process. + + + + + + + Means execution alone in a separate process. + + + + + + + + + Sets the Enable Session State option. When enabled, you can set the session timeout using the SessionTimeout attribute. + + + + + Sets the timeout value for sessions in minutes. + + + + + Sets the option that enables response buffering in the application, which allows ASP script to set response headers anywhere in the script. + + + + + Sets the parent paths option, which allows a client to use relative paths to reach parent directories from this application. + + + + + Sets the default script language for the site. + + + + + + + + + + + Sets the timeout value in seconds for executing ASP scripts. + + + + + Enable ASP server-side script debugging. + + + + + Enable ASP client-side script debugging. + + + + + References the Id attribute of a WebAppPool element to use as the application pool for this application in IIS 6 applications. + + + + + + + + WebAddress for WebSite + + + + + + + The IP address to locate an existing WebSite or create a new WebSite. When the WebAddress is part of a WebSite element + used to locate an existing web site the following rules are used: + + When this attribute is not specified only the "All Unassigned" IP address will be located. + When this attribute is explicitly specified only the specified IP address will be located. + When this attribute has the value "*" then any IP address including the "All Unassigned" IP address will be located + + When the WebAddress is part of a WebSite element used to create a new web site the following rules are used: + + When this attribute is not specified or the value is "*" the "All Unassigned" IP address will be used. + When this attribute is explicitly specified the IP address will use that value. + + The IP attribute can contain a formatted string that is processed at install time to insert the values of properties using + [PropertyName] syntax. + + + + + + + + Determines if this address represents a secure binding. The default is 'no'. + + + + + + + + + + + Defines an IIS virtual directory. When this element is a child of WebSite element, the virtual directory is defined within that web site. Otherwise this virtual directory must reference a WebSite element via the WebSite attribute + + + + + + + + + + + + + + References the Id attribute for a WebSite in which this virtual directory belongs. Required when this element is not a child of WebSite element. + + + + + Sets the application name, which is the URL relative path used to access this virtual directory + + + + + References the Id attribute for a Directory element that points to the content for this virtual directory. + + + + + + References the Id attribute for a WebDirProperties element that specifies the security and access properties for this virtual directory. + This attribute may not be specified if a WebDirProperties element is directly nested in this element. + + + + + + References the Id attribute for a WebApplication element that specifies web application settings for this virtual directory. If a WebApplication child is not specified, the virtual directory does not host web applications. + + + + + + + + + + + Defines a subdirectory within an IIS web site. When this element is a child of WebSite, the web directory is defined within that web site. Otherwise the web directory must reference a WebSite element via the WebSite attribute. + + + + + + + + + + References the Id attribute for a WebSite element in which this directory belongs. Required when this element is not a child of a WebSite element. + + + + + Specifies the name of this web directory. + + + + + + References the Id attribute for a WebDirProperties element that specifies the security and access properties for this web directory. + This attribute may not be specified if a WebDirProperties element is directly nested in this element. + + + + + + + + + + + + + + + + Nesting WebSite under a Component element will result in a WebSite being installed to the machine as the package is installed. + + Nesting WebSite under Product, Fragment, or Module + results in a web site "locator" record being created in + the IIsWebSite table. This means that the web site + itself is neither installed nor uninstalled by the MSI + package. It does make the database available for referencing + from a WebApplication, WebVirtualDir or WebDir record. This allows an MSI to install + WebApplications, WebVirtualDirs or WebDirs to already existing web sites on the machine. + The install will fail if the web site does not exist in these cases. + + + + + IIs Web Site + + + + + + + + + + + + + + + + + + Identifier for the WebSite. Used within the MSI package only. + + + + + Specifies whether to automatically start the web site. + + + + + Specifies whether to configure the web site if it already exists. Note: This will not affect uninstall behavior. If the web site exists on uninstall, it will be removed. + + + + + Sets the timeout value for connections in seconds. + + + + + This is the name of the web site that will show up in the IIS management console. + + + + + Root directory of the web site. Resolved to a directory in the Directory table at install time by the server custom actions. + + + + + + References the Id attribute for a WebDirProperties element that specifies the security and access properties for this website root directory. + This attribute may not be specified if a WebDirProperties element is directly nested in this element. + + + + + + Sequence that the web site is to be created in. + + + + + + Optional attribute to directly specify the site id of the WebSite. Use this to ensure all web + sites in a web garden get the same site id. If a number is provided, the site id must be unique + on all target machines. If "*" is used, the Description attribute will be hashed to create a unique + value for the site id. This value must be a positive number or a "*" or a formatted value that resolves + to "-1" (for the same behavior as "*") or a positive number or blank. If this attribute is absent then + the web site will be located using the WebAddress element associated with the web site. + + + + + + Specifies whether to start the web site on install. + + + + + Reference to a WebApplication that is to be installed as part of this web site. + + + + + Reference to WebLog definition. + + + + + + + + + + + + + WebLog definition. + + + + + Identifier for the WebLog. + + + + + + + + + Microsoft IIS Log File Format + + + + + + + NCSA Common Log File Format + + + + + + + Disables logging. + + + + + + + ODBC Logging + + + + + + + W3C Extended Log File Format + + + + + + + + + + + + + + + The WebServiceExtension property is used by the Web server to determine whether a Web service extension is permitted to run. + + + + + + Usually a Property that resolves to short file name path + + + + + Description of the extension. + + + + + String used to identify groups of extensions. + + + + + Indicates if the extension is allowed or denied. + + + + + Indicates if the UI is allowed to delete the extension from the list of not. Default: Not deletable. + + + + + + + + Values of this type are any integers between 0 and 100, inclusive. + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + + + Values of this type will either be "default", "yes", or "no". + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/lux.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/lux.xsd new file mode 100644 index 0000000000000000000000000000000000000000..e6687eb95ddb35fe478e690bec8f12d4e9f837f1 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/lux.xsd @@ -0,0 +1,226 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Lux Extension. + + + + + + + + + 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. + + + + + + + + + + Child UnitTest elements are validated when the parent mutation is being executed. + + + + + + + + + Value of the WIXLUX_RUNNING_MUTATION property set by the mutation. + + + + + + + + + + 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. + + + + + + + + + + + Child UnitTest elements are used to test multi-value properties. Note that Property + and ValueDelimiter or NameValueDelimiter must be specified in the parent element. + + + + + + + + + + + Identifier of the unit test. If you omit this attribute, a stable identifier is generated for you. + + + + + + + + Identifier of the custom action to be tested. + + + + + + + + Name of the property set by the custom action. + + + + + + + + The operator to apply to the property and value. Default is "equal." + + + + + + + + (Default) Compares Property to Value and succeeds if they are equal. + + + + + + + Compares Property to Value and succeeds if they are NOT equal. + + + + + + + Compares Property to Value and succeeds if they are equal (ignoring case). + + + + + + + Compares Property to Value and succeeds if they are NOT equal (ignoring case). + + + + + + + + + + + The value to compare to the property. + + + + + + + + One character that is used to separate values in a multi-value property. + + + + + + + + One character that is used to separate values in a name/value-pair multi-value property. + + + + + + + + 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. + + + + + + + + + + Conditions for a unit test. + + + + + + + + + + + + + An expression that must evaluate to true to succeed. Cannot be specified if Property is specified. + + + + + + + + + + + + + Identifies a unit test to be linked into a project. + + + + + + + + + + + Identifier of the unit test to be included. + + + + + + + \ No newline at end of file diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/msmq.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/msmq.xsd new file mode 100644 index 0000000000000000000000000000000000000000..e255e869a4de9eaf6fad2c63e2bb3b3085dcb977 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/msmq.xsd @@ -0,0 +1,126 @@ + + + + + + The source code schema for the Windows Installer XML Toolset MSMQ Extension. + + + + + + + + + + + + + + + + + + + + + + + Default: No. + + + + + + Default: No. + + + + + + + + + + + + + + + + + + + Default: No. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/netfx.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/netfx.xsd new file mode 100644 index 0000000000000000000000000000000000000000..4739c876fece2c085c00f9f4eda1b467ebc1282f --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/netfx.xsd @@ -0,0 +1,240 @@ + + + + + + The source code schema for the Windows Installer XML Toolset .NET Framework Extension. + + + + + + + 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 NGen. + + + + + + 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. + + + 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. + + + Note for patches: 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. + + + 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. + + + + + + + + + The identifier for this NativeImage. + + + + + + + + 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. + + + 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. + + + + + + + + + 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. + + + 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. + + + 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"). + + + 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). + + + + + + + + Set to "yes" to generate native images that can be used under a debugger. + The default value is "no". + + + + + + + Set to "no" to generate the minimum number of native images. + The default value is "yes". + + + + + + + Sets the platform(s) for which native images will be generated. + + + + + + + + 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. + + + + + + + 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. + + + + + + + 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. + + + + + + + + + + Sets the priority of generating the native images for this assembly. + + + + + + + + This is the highest priority, it means that image generation occurs syncronously + during the setup process. This option will slow down setup performance. + + + + + + + This will queue image generation to the NGen service to occur immediately. + This option will slow down setup performance. + + + + + + + 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. + + + + + + + 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. + + + + + + + + + + Set to "yes" to generate native images that can be used under a profiler. + The default value is "no". + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/ps.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/ps.xsd new file mode 100644 index 0000000000000000000000000000000000000000..d2092fce9506b60d8405b120c6eb37d4fddc7f3a --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/ps.xsd @@ -0,0 +1,206 @@ + + + + + + The source code schema for the Windows Installer XML Toolset PowerShell Extension. + + + + + + + Identifies the parent File as a formats XML file for the referenced PowerShell snap-in. + + + + + A formats XML file that defines output formats for objects on the pipeline. + + + + + + + + Reference to the formats File ID. This is required when nested under the SnapIn element. + + + + + + + Reference to the PowerShell snap-in ID for which this formats file is associated. This is required when nested under the File element. + + + + + + + + + Identifies the parent File as a types XML file for the referenced PowerShell snap-in. + + + + + A types XML file used by the extensible type system. + + + + + + + + Reference to the types File ID. This is required when nested under the SnapIn element. + + + + + + + Reference to the PowerShell snap-in ID for which this types file is associated. This is required when nested under the File element. + + + + + + + + + Identifies the parent File as a PowerShell snap-in to be registered on the system. + + + + + PowerShell 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. + + + + + + + + + + + + The identifier for this PowerShell snap-in. + + + + + + + The fully-qualified name of the assembly. + + + + + + + + + + The full type name of a class that is used to register a list of cmdlets and providers. + + + + + + + A brief description of the snap-in. + + + + + + + An embedded resource that contains a brief description of the snap-in. + This resource must be embedded in the current snap-in assembly. + + + + + + + The required version of PowerShell that must be installed and is associated with the + snap-in registration. The default value is "1.0". + + + + + + + The name of the snap-in vendor. + + + + + + + An embedded resource that contains the name of the snap-in vendor. + This resource must be embedded in the current snap-in assembly. + + + + + + + The version of the snapin. If not specified, this is taken from the assembly name. + + + + + + + + + The version of this extension required to compile the defining source. + + + + + + + + + + + Values should be in the format ResourceName,StringName, where ResourceName + is the name of the embedded resource in your assembly sans the ".resources" extension, and StringName + is the name of the string resource in the embedded resource. + + + Example: UtilityMshSnapInResources,Description + + + + + + + + + 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. + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/sql.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/sql.xsd new file mode 100644 index 0000000000000000000000000000000000000000..2129b0455625fd550fdc11cb4d9428113c1ab550 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/sql.xsd @@ -0,0 +1,347 @@ + + + + + + The source code schema for the Windows Installer XML Toolset SQL Server Extension. + + + + + + + + + + + + + + + Nesting SqlDatabase under a Component element will result in a SqlDatabase being installed to the machine as the package is installed. + + 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. + + + 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. + + + + + + SQL Database + + + + + + + + + + + + + + + + + + + The name of the database. The value can be a literal value or derived from a + Property element using the Formatted + syntax. + + + + + + + + + + + Specifies whether to create the database when the associated component is reinstalled. Setting CreateOnInstall to yes does not imply CreateOnReinstall is set to yes. CreateOnReinstall must be set in addition to CreateOnInstall for it to be created during both install and reinstall. + + + + + + + + + + + Specifies whether to drop the database when the associated component is reinstalled. Setting DropOnInstall to yes does not imply DropOnReinstall is set to yes. DropOnReinstall must be set in addition to DropOnInstall for it to be dropped during both install and reinstall. + + + + + + + + + + + + + + + File specification for a Sql database. + + + + + ID of the file specification. + + + + + Specifies the logical name for the database file. + + + + + Specifies the operating-system file name for the database file. + + + + + + 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. + + + + + + + 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. + + + + + + + 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. + + + + + + + + + File specification for a Sql database. + + + + + ID of the log file specification. + + + + + Specifies the logical name for the log file. + + + + + Specifies the operating-system file name for the log file. + + + + + + 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. + + + + + + + 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. + + + + + + + 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. + + + + + + + + + + + + SQL Script + + + + + + required when not child of SqlDatabase + + + + + + + Reference to Binary stream that contains the SQL script to execute. + + + + + Specifies to execute the script when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes. + + + + + Specifies whether to execute the script when the associated component is reinstalled. Setting ExecuteOnInstall to yes does not 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. + + + + + Specifies to execute the script when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + Continue executing scripts even if this one fails. + + + + + 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. + + + + + + + + + + + SQL String + + + + + + + + + + + + + Specifies to execute the string when the associated component is installed. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes. + + + + + + Specifies whether to execute the string when the associated component is reinstalled. Setting ExecuteOnInstall to yes does not 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. + + + + + + Specifies to execute the string when the associated component is uninstalled. This attribute is mutually exclusive with the RollbackOnInstall, RollbackOnReinstall and RollbackOnUninstall attributes. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + Continue executing strings even if this one fails. + + + + + 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. + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/tag.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/tag.xsd new file mode 100644 index 0000000000000000000000000000000000000000..801226f152195acecd4e20d12270138aff0bf172 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/tag.xsd @@ -0,0 +1,148 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Software Id Tag Extension. + + + + + + + + + This extension implements the ISO/IEC 19770-2 specification. A SWID tag file + will be generated an inserted into the Product or Bundle. + + + + + + + + + + + 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. + + + + + + + The regid for the software id tag. A regid follows the format: "regid" + "." + + YYYY-MM + "." + reverse domain order. The YYYY-MM is the year and month the + domain was first owned. For example: "regid.1995-08.com.example". + + + + + + 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 not set this attribute. + + + + + Indicates whether the software requires a license. The default is + "no". + + + + + + Defines the type of software tag being defined. One of the following values may be used: "group", + "application", "patch", or "component". The default is "application" when the Tag element is a child of + the Product element. The default is "group" or "application" when the Tag element is under a Bundle element + based on the contents of the bundle's chain. The Bundle/Tag@Type will be "application" unless there are one + or more packages that define a software Tag@Type of "application" or "group". + + + + + + + + + + Allows an ISO/IEC 19770-2 SWID tag file to be referenced in a Patch. + + + + + + + + + + The regid for the software id tag. A regid follows the format: "regid" + "." + + YYYY-MM + "." + reverse domain order. The YYYY-MM is the year and month the + domain was first owned. For example: "regid.1995-08.com.example". + + + + + + + + + Values of this type will be "application", "component", "feature", "group", or "patch". + + + + + + + Values of this type will be "application", "component", "feature", "group", or "patch". + + + + + + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + + + A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run). + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/thmutil.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/thmutil.xsd new file mode 100644 index 0000000000000000000000000000000000000000..1567228b3ca3b1e964d9f361d569c209d9147879 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/thmutil.xsd @@ -0,0 +1,661 @@ + + + + + + Schema for describing Theme files processsed by thmutil. + + + + + + + + + + + + + + + + + + + Relative path to an image file that can serve as a single source for images in the rest of the + theme. This image is referenced by controls using the SourceX and SourceY attributes. + + + + + + + + Defines a font including the size and color. + + + + + + + + + Name of the font face. + + + + Numeric identifier for the font. Due to limitations in thmutil the first Font must start with "0" and each subsequent Font must increment the Id by 1. Failure to ensure the Font identifiers follow this strict ordering will create unexpected behavior or including crashes. + + + + + Font size. Use negative numbers to specify the font in pixels. + + + + + Font weight. + + + + + Hexadecimal value representing BGR foreground color of the font. "ffffff" is white, "ff0000" is pure blue, "00ff00" is pure green, "0000ff" is pure red and "000000" is black. If this value is absent the foreground will be transparent. + + + + + Hexadecimal value representing BGR background color of the font. "ffffff" is white, "ff0000" is pure blue, "00ff00" is pure green, "0000ff" is pure red and "000000" is black. If this value is absent the background will be transparent. + + + + + Specifies whether the font is underlined. + + + + + + + + + + List of images which can be shared between multiple controls. + + + + + + + + + + + + Name of the ImageList, to be referenced by other controls. + + + + + + + + + Named set of controls that can be shown and hidden collectively. + + + + + + + + + + Relative path to an image file that can serve as a single source for images in the rest of the + theme. This image is referenced by controls using the SourceX and SourceY attributes. + + + + + + + + + Defines the overall look of the main window. + + + + + + + + + Caption for the window. + + + + Numeric identifier to the Font element that serves as the default font for the window. + + + + + Height of the window. + + + + + Hexadecimal window style. If this is not specified the default value is: WS_OVERLAPPED | WS_VISIBLE | WS_MINIMIZEBOX | WS_SYSMENU. + + + + + Relative path to an icon file for the window. Mutually exclusive with IconResource and SourceX and SourceY attributes. + + + + + Identifier that references icon resource in the module for the window. Mutually exclusive with IconFile and SourceX and SourceY attributes. + + + + + X offset of the window background in the Theme/@ImageFile. Mutually exclusive with IconFile and IconResource. + + + + + Y offset of the window background in the Theme/@ImageFile. Mutually exclusive with IconFile and IconResource. + + + + Width of the window. + + + + + + + + + Defines a control that rotates through a set of images on a specfied interval. + + + + + + + + + + + + + . + + + + + Specifies whether the billboard should loop through the images infinitely. + + + + + + + + Defines a button. + + + + + + + + + + Text to display in the button. + + + + + Numeric identifier to the Font element that serves as the font for the control. + + + + + Relative path to an image file to define an graphic button. The image must be 3x the height to represent the button in 3 states: unselected, hover, selected. Mutually exclusive with ImageResource and SourceX and SourceY attributes. + + + + + Identifier that references image resource in the module for the control. The image must be 3x the height to represent the button in 3 states: unselected, hover, selected. Mutually exclusive with ImageFile and SourceX and SourceY attributes. + + + + + + + + + + Defines a checkbox. + + + + + + + + + + Text to display beside the checkbox. + + + + + Numeric identifier to the Font element that serves as the font for the control. + + + + + + + + + + Defines an edit box. + + + + + + + + + + Specifies whether the edit box should auto-complete with file system paths. + + + + + Numeric identifier to the Font element that serves as the font for the control. + + + + + + + + Defines a hyperlink. + + + + + + + + + + Text to display as the link. + + + + + Numeric identifier to the Font element that serves as the unselected font. + + + + + Numeric identifier to the Font element that serves as the font when the control is hovered over. + + + + + Numeric identifier to the Font element that serves as the font when the control is selected. + + + + + + + + + + Defines a text block with support for HTML <a> tags. + + + + + + + + + + Text to display as the link. Use HTML <a href="URL"> to create a link. + + + + + Numeric identifier to the Font element that serves as the unselected font. + + + + + + + + + + Defines an image. + + + + + + + + + + Relative path to an image file. Mutually exclusive with ImageResource and SourceX and SourceY attributes. + + + + + Identifier that references image resource in the module. Mutually exclusive with ImageFile and SourceX and SourceY attributes. + + + + + + + + Defines a listview. + + + + + + + + + + + + + Hexadecimal extended window style. + + + + + The name of the Image List to assign to this listview with type LVSIL_NORMAL. + + + + + The name of the Image List to assign to this listview with type LVSIL_SMALL. + + + + + The name of the Image List to assign to this listview with type LVSIL_STATE. + + + + + The name of the Image List to assign to this listview with type LVSIL_GROUPHEADER. + + + + + + + + Defines a progressbar. + + + + + + + + + + Relative path to an image file for the control. The image must be 4 pixels wide: left pixel is the left side of progress bar, left middle pixel is progress used, right middle pixel is progress unused, right pixel is right side of progress bar. Mutually exclusive with ImageResource and SourceX and SourceY attributes. + + + + + Identifier that references image resource in the module for the control. The image must be 4 pixels wide: left pixel is the left side of progress bar, left middle pixel is progress used, right middle pixel is progress unused, right pixel is right side of progress bar. Mutually exclusive with ImageFile and SourceX and SourceY attributes. + + + + + + + + Defines a rich edit control. + + + + + + + + + + Numeric identifier to the Font element that serves as the font for the control. + + + + + + + + Defines a straight line. + + + + + + + + + + + + + Defines a tab. + + + + + + Caption of the tab. + + + + + + + + + Defines text. + + + + + + + + + + Text to display. + + + + + Specifies the text should be centered horizontally in the width of the control. Default is "no". + + + + + By default ampersands (&) in the text will underline the next character and treat it as an accelerator key. Set this attribute to "yes" to disable that behavior. Default is "no". + + + + + Numeric identifier to the Font element that serves as the font for the control. + + + + + + + + + + Defines a treeview. + + + + + + Specifies whether drag and drop is enabled for the treeview. + + + + + Specifies whether an entire row is selected for the treeivew. + + + + + Specifies whether the treeview will show buttons. + + + + + Specifies whether the row always appears selected even when the treeview has lost focus. + + + + + Specifies whether the root nodes have lines beside them. + + + + + Specifies whether lines appear for all treeview items. + + + + + + + + A column of a list. + + + + + + + + + Text for the column header. + + + + Width of the column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Optional name for the control. + + + + + Height of the control. Non-positive values extend the control to the bottom of the window minus the value. + + + + + Hexadecimal window style for the control. + + + + + Specifies whether the control should be hidden when disabled. + + + + + Specifies whether the control is part of the tab sequence of controls. + + + + + Specifies whether the control is initially visible. + + + + + Width of the control. Non-positive values extend the control to the right of the window minus the value. + + + + + X coordinate for the control from the left of the window. Negative values are coordinates from the right of the window minus the width of the control. + + + + + Y coordinate for the control from the top of the window. Negative values are coordinates from the bottom of the window minus the height of the control. + + + + + + Values of this type will either be "yes" or "no". + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/util.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/util.xsd new file mode 100644 index 0000000000000000000000000000000000000000..443c34eacb03ef2f97182cb0e6bb3821d5a008e1 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/util.xsd @@ -0,0 +1,1615 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Utility Extension. + + + + + + + + + + + Closes applications or schedules a reboot if application cannot be closed. + + + + + + + Condition that determines if the application should be closed. Must be blank or evaluate to true + for the application to be scheduled for closing. + + + + + Identifier for the close application (primary key). If the Id is not specified, one will be generated. + + + + + Name of the exectuable to be closed. This should only be the file name. + + + + + Description to show if application is running and needs to be closed. + + + + + Optionally orders the applications to be closed. + + + + + Optionally sends a close message to the application. Default is no. + + + + + Sends WM_QUERYENDSESSION then WM_ENDSESSION messages to the application. Default is "no". + + + + + Optionally sends a close message to the application from deffered action without impersonation. Default is no. + + + + + Sends WM_QUERYENDSESSION then WM_ENDSESSION messages to the application from a deffered action without impersonation. Default is "no". + + + + + Optionally prompts for reboot if application is still running. The default is "yes". The TerminateProcess attribute must be "no" or not specified if this attribute is "yes". + + + + + + When this attribute is set to "yes", the user will be prompted when the application is still running. The Description attribute must contain the message to + display in the prompt. The prompt occurs before executing any of the other options and gives the options to "Abort", "Retry", or "Ignore". Abort will cancel + the install. Retry will attempt the check again and if the application is still running, prompt again. "Ignore" will continue and execute any other options + set on the CloseApplication element. The default is "no". + + + + + + Property to be set if application is still running. Useful for launch conditions or to conditionalize custom UI to ask user to shut down apps. + + + + + + Attempts to terminates process and return the specified exit code if application is still running after sending any requested close and/or end session messages. + If this attribute is specified, the RebootPrompt attribute must be "no". The default is "no". + + + + + + + Optional time in seconds to wait for the application to exit after the close and/or end session messages. If the application is still running after the timeout then + the RebootPrompt or TerminateProcess attributes will be considered. The default value is "5" seconds. + + + + + + + + + + Describes a component search. + + + + + + + + + + Component to search for. + + + + + Optional ProductCode to determine if the component is installed. + + + + + + Rather than saving the matching key path into the variable, a ComponentSearch can save an attribute of the component instead. + + + + + + + Saves the parent directory for the component's file key path; other types of key path are returned unmodified. + + + + + Saves the state of the component: absent (2), locally installed (3), will run from source (4), or installed in default location (either local or from source) (5) + + + + + Saves the key path of the component if installed. This is the default. + + + + + + + + + + References a ComponentSearch. + + + + + + + + + + + + Describes a directory search. + + + + + + + + + + Directory path to search for. + + + + + + Rather than saving the matching directory path into the variable, a DirectorySearch can save an + attribute of the matching directory instead. + + + + + + + Saves true if a matching directory is found; false otherwise. + + + + + + + + + + References a DirectorySearch. + + + + + + + + + + + + + + + Creates an event source. + + + + + + The number of categories in CategoryMessageFile. CategoryMessageFile + must be specified too. + + + + + + + Name of the category message file. CategoryCount must be specified too. + Note that this is a formatted field, so you can use [#fileId] syntax to + refer to a file being installed. It is also written as a REG_EXPAND_SZ + string, so you can use %environment_variable% syntax to refer to a file + already present on the user's machine. + + + + + + + Name of the event message file. + Note that this is a formatted field, so you can use [#fileId] syntax to + refer to a file being installed. It is also written as a REG_EXPAND_SZ + string, so you can use %environment_variable% syntax to refer to a file + already present on the user's machine. + + + + + + + Marks the EventSource registry as the key path of the component it belongs to. + + + + + + Name of the event source's log. + + + + + Name of the event source. + + + + + + Name of the parameter message file. + Note that this is a formatted field, so you can use [#fileId] syntax to + refer to a file being installed. It is also written as a REG_EXPAND_SZ + string, so you can use %environment_variable% syntax to refer to a file + already present on the user's machine. + + + + + + + Equivalent to EVENTLOG_ERROR_TYPE. + + + + + + + Equivalent to EVENTLOG_AUDIT_FAILURE. + + + + + + + Equivalent to EVENTLOG_INFORMATION_TYPE. + + + + + + + Equivalent to EVENTLOG_AUDIT_SUCCESS. + + + + + + + Equivalent to EVENTLOG_WARNING_TYPE. + + + + + + + + Describes a file search. + + + + + + + + + + File path to search for. + + + + + + Rather than saving the matching file path into the variable, a FileSearch can save an attribute of the matching file instead. + + + + + + + Saves true if a matching file is found; false otherwise. + + + + + Saves the version information for files that have it (.exe, .dll); zero-version (0.0.0.0) otherwise. + + + + + + + + + + References a FileSearch. + + + + + + + + + + + + + + + Creates a file share out of the component's directory. + + + + + + ACL permission + + + + + + Identifier for the file share (primary key). + + + + + Name of the file share. + + + + + Description of the file share. + + + + + + + + Sets ACLs on a FileShare. This element has no Id attribute. + The table and key are taken from the parent element. + + + + + + + + + + + + + + + + + + + + For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent. + + + + + + + + + specifying this will fail to grant read access + + + + + + + + + + + + + Finds user groups on the local machine or specified Active Directory domain. The local machine will be + searched for the group first then fallback to looking in Active Directory. This element is not capable + of creating new groups but can be used to add new or existing users to an existing group. + + + + + + Unique identifier in your installation package for this group. + + + + + A Formatted string that contains the name of the group to be found. + + + + + An optional Formatted string that specifies the domain for the group. + + + + + + + Used to join a user to a group + + + + + + + + + + How To: Create a shortcut to a webpage + + Creates a shortcut to a URL. + + + + + Unique identifier in your installation package for this Internet shortcut. + + + + + Identifier reference to Directory element where shortcut is to be created. This attribute's value defaults to the parent Component directory. + + + + + + The name of the shortcut file, which is visible to the user. (The .lnk + extension is added automatically and by default, is not shown to the user.) + + + + + + + URL that should be opened when the user selects the shortcut. Windows + opens the URL in the appropriate handler for the protocol specified + in the URL. Note that this is a formatted field, so you can use + [#fileId] syntax to refer to a file being installed (using the file: + protocol). + + + + + + Which type of shortcut should be created. + + + + + + Creates .url files using IUniformResourceLocatorW. + + + + + Creates .lnk files using IShellLinkW (default). + + + + + + + + + + + + + Used to create performance categories and configure performance counters. + + + + + + + + Unique identifier in your installation package for this performance counter category. + + + + + Name for the performance counter category. If this attribute is not provided the Id attribute is used as the name of the performance counter category. + + + + + Optional help text for the performance counter category. + + + + + Flag that specifies whether the performance counter category is multi or single instanced. Default is single instance. + + + + + DLL that contains the performance counter. The default is "netfxperf.dll" which should be used for all managed code performance counters. + + + + + Function entry point in to the Library DLL called when opening the performance counter. The default is "OpenPerformanceData" which should be used for all managed code performance counters. + + + + + Function entry point in to the Library DLL called when closing the performance counter. The default is "ClosePerformanceData" which should be used for all managed code performance counters. + + + + + Function entry point in to the Library DLL called when collecting data from the performance counter. The default is "CollectPerformanceData" which should be used for all managed code performance counters. + + + + + Default language for the performance category and contained counters' names and help text. + + + + + + + Creates a performance counter in a performance category. + + + + + Name for the performance counter. + + + + + Optional help text for the performance counter. + + + + + Type of the performance counter. + + + + + Language for the peformance counter name and help. The default is to use the parent PerformanceCategory element's DefaultLanguage attribute. + + + + + + + + + + + Used to install Perfmon counters. + + + + + + + + + + + + Used to install Perfmon Counter Manifests. + Note that this functionality cannot be used with major upgrades that are scheduled after the InstallExecute, + InstallExecuteAgain, or InstallFinalize actions. For more information on major upgrade scheduling, see + RemoveExistingProducts Action. + + + + + + The directory that holds the resource file of the providers in the perfmon counter manifest. Often the resource file path cannot be determined until setup time. Put the directory here and during perfmon manifest registrtion the path will be updated in the registry. If not specified, Perfmon will look for the resource file in the same directory of the perfmon counter manifest file. + + + + + + + + + + Used to install Event Manifests. + + + + + The message file (including path) of all the providers in the event manifest. Often the message file path cannot be determined until setup time. Put your MessageFile here and the messageFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. + + + + + The parameter file (including path) of all the providers in the event manifest. Often the parameter file path cannot be determined until setup time. Put your ParameterFile here and the parameterFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. + + + + + The resource file (including path) of all the providers in the event manifest. Often the resource file path cannot be determined until setup time. Put your ResourceFile here and the resourceFileName attribute of the all the providers in the manifest will be updated with the path before it is registered. + + + + + + + + Sets ACLs on File, Registry, CreateFolder, or ServiceInstall. When under a Registry element, this cannot be used + if the Action attribute's value is remove or removeKeyOnInstall. This element has no Id attribute. + The table and key are taken from the parent element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent. + + + + + + + + + + + + + + + + + + + specifying this will fail to grant read access + + + + + + Required to call the QueryServiceConfig and QueryServiceConfig2 functions to query the service configuration. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the ChangeServiceConfig or ChangeServiceConfig2 function to change the service configuration. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the QueryServiceStatus function to ask the service control manager about the status of the service. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the EnumDependentServices function to enumerate all the services dependent on the service. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the StartService function to start the service. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the ControlService function to stop the service. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the ControlService function to pause or continue the service. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the ControlService function to ask the service to report its status immediately. Only valid under a 'ServiceInstall' parent. + + + + + Required to call the ControlService function to specify a user-defined control code. Only valid under a 'ServiceInstall' parent. + + + + + + + Describes a product search. + + + + + + + + + + The Guid attribute has been deprecated; use the ProductCode or UpgradeCode attribute instead. If this attribute is used, it is assumed to be a ProductCode. + + + + + The ProductCode to use for the search. This attribute must be omitted if UpgradeCode is specified. + + + + + The UpgradeCode to use for the search. This attribute must be omitted if ProductCode is specified. Note that if multiple products are found, the highest versioned product will be used for the result. + + + + + + Rather than saving the product version into the variable, a ProductSearch can save another attribute of the matching product instead. + + + + + + + Saves the version of a matching product if found; 0.0.0.0 otherwise. This is the default. + + + + + Saves the language of a matching product if found; empty otherwise. + + + + + Saves the state of the product: advertised (1), absent (2), or locally installed (5). + + + + + Saves the assignment type of the product: per-user (0), or per-machine (1). + + + + + + + + + + References a ProductSearch. + + + + + + + + + + + + + + + + The custom action that implements RemoveFolderEx does so by writing temporary rows to the RemoveFile table + for each subfolder of the root folder you specify. Because it might dramatically affect Windows Installer's + File Costing, + the temporary rows must be written before the CostInitialize standard action. Unfortunately, MSI doesn't + create properties for the Directory hierarchy in your package until later, in the CostFinalize action. + An easy workaround for a typical use case of removing a folder during uninstall is to write the directory + path to the registry and to load it during uninstall. See + The WiX toolset's "Remember Property" pattern + for an example. + If you use custom actions to set properties, ensure that they are scheduled before the WixRemoveFoldersEx custom action. + + + + Remove a folder and all contained files and folders if the parent component is selected for installation or removal. + The folder must be specified in the Property attribute as the name of a property that will have a value that resolves + to the full path of the folder before the CostInitialize action. Note that Directory ids cannot be used. + For more details, see the Remarks. + + + + + + Primary key used to identify this particular entry. If this is not specified, a stable identifier + will be generated at compile time based on the other attributes. + + + + + + The id of a property that resolves to the full path of the source directory. The property does not have + to exist in the installer database at creation time; it could be created at installation time by a custom + action, on the command line, etc. The property value can contain environment variables surrounded by + percent signs such as from a REG_EXPAND_SZ registry value; environment variables will be expanded before + being evaluated for a full path. + + + + + + + This value determines when the folder may be removed. + + + + + + + + Removes the folder only when the parent component is being installed (msiInstallStateLocal or msiInstallStateSource). + + + + + + + Default: Removes the folder only when the parent component is being removed (msiInstallStateAbsent). + + + + + + + Removes the folder when the parent component is being installed or removed. + + + + + + + + + + + Registers a resource with the Restart Manager. + + + + + + + + + + + The unique identifier for this resource. A unique identifier will + be generated automatically if not specified. + + + + + The full path to the process module to register with the Restart Manager. + This can be a formatted value that resolves to a full path. + + + + + The name of a process to register with the Restart Manager. + This can be a formatted value that resolves to a process name. + + + + + The name of a Windows service to register with the Restart Manager. + This can be a formatted value that resolves to a service name. + + + + + + + Describes a registry search. + + + + + + + + + + Registry root hive to search under. + + + + + + HKEY_LOCAL_MACHINE + + + + + HKEY_CURRENT_USER + + + + + HKEY_CLASSES_ROOT + + + + + HKEY_USERS + + + + + + + + Key to search for. + + + + + Optional value to search for under the given Key. + + + + + What format to return the value in. + + + + + + Returns the unformatted value directly from the registry. For example, a REG_DWORD value of '1' is returned as '1', not '#1'. + + + + + Returns the value formatted as Windows Installer would. For example, a REG_DWORD value of '1' is returned as '#1', not '1'. + + + + + + + + Whether to expand any environment variables in REG_SZ, REG_EXPAND_SZ, or REG_MULTI_SZ values. + + + + + + Rather than saving the matching registry value into the variable, a RegistrySearch can save an attribute of the matching entry instead. + + + + + + + Saves true if a matching registry entry is found; false otherwise. + + + + + Saves the value of the registry key in the variable. This is the default. + + + + + + + + Instructs the search to look in the 64-bit registry when the value is 'yes'. When the value is 'no', the search looks in the 32-bit registry. The default value is 'no'. + + + + + + + References a RegistrySearch. + + + + + + + + + + + + Service configuration information for failure actions. + + + + + + Nesting a ServiceConfig element under a ServiceInstall element will result in the service being installed to be configured. + Nesting a ServiceConfig element under a component element will result in an already installed service to be configured. If the service does not exist prior to the install of the MSI package, the install will fail. + + + + + + + + Required if not under a ServiceInstall element. + + + + + Action to take on the first failure of the service. + + + + + + + + + + + + + Action to take on the second failure of the service. + + + + + + + + + + + + + Action to take on the third failure of the service. + + + + + + + + + + + + + Number of days after which to reset the failure count to zero if there are no failures. + + + + + If any of the three *ActionType attributes is "restart", this specifies the number of seconds to wait before doing so. + + + + + If any of the three *ActionType attributes is "runCommand", this specifies the command to run when doing so. This value is formatted. + + + + + If any of the three *ActionType attributes is "reboot", this specifies the message to broadcast to server users before doing so. + + + + + + + User for all kinds of things. When it is not nested under a component it is included in the MSI so it can be referenced by other elements such as the User attribute in the AppPool element. When it is nested under a Component element, the User will be created on install and can also be used for reference. + + + + + + + + + + + + + + + + + A Formatted string that contains the name of the user account. + + + + + A Formatted string that contains the local machine or Active Directory domain for the user. + + + + + Usually a Property that is passed in on the command-line to keep it more secure. + + + + + The account's password never expires. Equivalent to UF_DONT_EXPIRE_PASSWD. + + + + + The user cannot change the account's password. Equivalent to UF_PASSWD_CANT_CHANGE. + + + + + Indicates whether the user account should be removed or left behind on uninstall. + + + + + Indicates if the install should fail if the user already exists. + + + + + Indicates whether or not the user can logon as a serivce. User creation can be skipped if all that is desired is to set this access right on the user. + + + + + Indicates whether or not the user can logon as a batch job. User creation can be skipped if all that is desired is to set this access right on the user. + + + + + Indicates if the user account properties should be updated if the user already exists. + + + + + Indicates whether the user must change their password on their first login. + + + + + The account is disabled. Equivalent to UF_ACCOUNTDISABLE. + + + + + Indicates whether or not to create the user. User creation can be skipped if all that is desired is to join a user to groups. + + + + + Indicates whether failure to create the user or add the user to a group fails the installation. The default value is "yes". + + + + + + + + Adds or removes .xml file entries. If you use the XmlFile element you must reference WixUtilExtension.dll as it contains the XmlFile custom actions. + + + + + + + + + Identifier for xml file modification. + + + + + The XPath of the element to be modified. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. + + + + + Path of the .xml file to configure. + + + + + Name of XML node to set/add to the specified element. Not setting this attribute causes the element's text value to be set. Otherwise this specified the attribute name that is set. + + + + + + The value to be written. See the Formatted topic for information how to escape square brackets in the value. + + + + + + The type of modification to be made to the XML file when the component is installed. + + + + + + Creates a new element under the element specified in ElementPath. The Name attribute is required in this case and specifies the name of the new element. The Value attribute is not necessary when createElement is specified as the action. If the Value attribute is set, it will cause the new element's text value to be set. + + + + + Deletes a value from the element specified in the ElementPath. If Name is specified, the attribute with that name is deleted. If Name is not specified, the text value of the element specified in the ElementPath is deleted. The Value attribute is ignored if deleteValue is the action specified. + + + + + Sets a value in the element specified in the ElementPath. If Name is specified, and attribute with that name is set to the value specified in Value. If Name is not specified, the text value of the element is set. Value is a required attribute if setValue is the action specified. + + + + + Sets all the values in the elements that match the ElementPath. If Name is specified, attributes with that name are set to the same value specified in Value. If Name is not specified, the text values of the elements are set. Value is a required attribute if setBulkValue is the action specified. + + + + + + + + Specifies whether or not the modification should be removed on uninstall. This has no effect on uninstall if the action was deleteValue. + + + + + Specifies wheter or not the modification should preserve the modified date. Preserving the modified date will allow the file to be patched if no other modifications have been made. + + + + + Specifies the order in which the modification is to be attempted on the XML file. It is important to ensure that new elements are created before you attempt to add an attribute to them. + + + + + + Specify whether the DOM object should use XPath language or the old XSLPattern language (default) as the query language. + + + + + + + + + + + + + + + Adds or removes .xml file entries. If you use the XmlConfig element you must reference WixUtilExtension.dll as it contains the XmlConfig custom actions. + + + + + + + + + + + + Identifier for xml file modification. + + + + + + + + + + + + + The Id of another XmlConfig to add attributes to. In this case, the 'ElementPath', 'Action', 'Node', and 'On' attributes must be omitted. + + + + + The XPath of the parent element being modified. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. + + + + + Path of the .xml file to configure. + + + + + Name of XML node to set/add to the specified element. Not setting this attribute causes the element's text value to be set. Otherwise this specified the attribute name that is set. + + + + + + + + + + + + + + + + + + + + + + Specifies wheter or not the modification should preserve the modified date. Preserving the modified date will allow the file to be patched if no other modifications have been made. + + + + + Specifies the order in which the modification is to be attempted on the XML file. It is important to ensure that new elements are created before you attempt to add an attribute to them. + + + + + + The value to be written. See the Formatted topic for information how to escape square brackets in the value. + + + + + + The XPath to the element being modified. This is required for 'delete' actions. For 'create' actions, VerifyPath is used to decide if the element already exists. Note that this is a formatted field and therefore, square brackets in the XPath must be escaped. In addition, XPaths allow backslashes to be used to escape characters, so if you intend to include literal backslashes, you must escape them as well by doubling them in this attribute. The string is formatted by MSI first, and the result is consumed as the XPath. + + + + + + + + Id of the search for ordering and dependency. + + + + + Name of the variable in which to place the result of the search. + + + + + Condition for evaluating the search. If this evaluates to false, the search is not executed at all. + + + + + Id of the search that this one should come after. + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + + Enumeration of valid languages for performance counters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumeration of valid types for performance counters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/vs.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/vs.xsd new file mode 100644 index 0000000000000000000000000000000000000000..10bb874e6e1edc43bdad82e93dbc0fb589c6406d --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/vs.xsd @@ -0,0 +1,297 @@ + + + + + + The source code schema for the Windows Installer XML Toolset Visual Studio Extension. + + + + + + + Help Namespace for a help collection. The parent file is the key for the HxC (Collection) file. + + + + + + + + + + + + + Primary Key for HelpNamespace. + + + Friendly name for Namespace. + + + Internal Microsoft Help ID for this Namespace. + + + Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module. + + + + + + + + Filter for Help Namespace. + + + + + + + + + + Primary Key for HelpFilter. + + + Query String for Help Filter. + + + Friendly name for Filter. + + + Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module. + + + + + + + + File for Help Namespace. The parent file is the key for HxS (Title) file. + + + + + + + + Primary Key for HelpFile Table. + + + Key for HxR (Attributes) file. + + + Key for HxI (Index) file. + + + Language ID for content file. + + + Internal Microsoft Help ID for this HelpFile. + + + Key for a file that is in the "root" of the samples directory for this HelpFile. + + + Key for HxQ (Query) file. + + + Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module. + + + + + + Plugin for Help Namespace. + + + Key for HxA (Attributes) file of child namespace. + + + Key for HxT file of child namespace. + + + + 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 + + + + Key for HxT file of parent namespace that now includes the new child namespace. + + + Key for the feature parent of this help collection. Required only when plugging into external namespaces. + + + Suppress linking Visual Studio Help namespaces. Help redistributable merge modules will be required. Use this when building a merge module. + + + + + + Create a reference to a HelpFile element in another Fragment. + + + Primary Key for HelpFile Table. + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + Create a reference to a HelpFile element in another Fragment. + + + Primary Key for HelpFilter. + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a HelpCollection element in another Fragment. + + + + + + + + + + + + Primary Key for HelpNamespace Table. + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + 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. + + + + + + + + + + + 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. + + + + + + + Identity of the VSIX package per its internal manifest. If this value is not correct + the VSIX package will not correctly uninstall. + + + + + + + Indicates whether the VSIX package is uninstalled when the parent Component is uninstalled. + The default is 'no'. + + + + + + + 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 + + + + + + + Specifies the version of Visual Studio in which to register the extension. This attribute + is required if the Target attribute is specified. + + + + + + + Indicates whether failure to install the VSIX package causes the installation to rollback. + The default is 'yes'. + + + + + + + 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. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534. + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wix.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wix.xsd new file mode 100644 index 0000000000000000000000000000000000000000..07de5ab0439194b3aaa93fb0ffbcaef6b8bca121 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wix.xsd @@ -0,0 +1,13047 @@ + + + + + + Schema for describing Windows Installer database files (.msi/.msm/.pcp). + + + + + + + + + + This is the top-level container element for every wxs file. Among the possible children, + the Bundle, Product, Module, Patch, and PatchCreation elements are analogous to the main function in a C program. + There can only be one of these present when linking occurs. Product compiles into an msi file, + Module compiles into an msm file, PatchCreation compiles into a pcp file. The Fragment element + is an atomic unit which ultimately links into either a Product, Module, or PatchCreation. The + Fragment can either be completely included or excluded during linking. + + + + + + + + + + + + + + + + + + Required version of the WiX toolset to compile this input file. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional attributes at this point in the schema. + + + + + + + + + This is the top-level container element for every wxi file. + + + + + + + + + + + The root element for creating bundled packages. + + + + + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + A URL for more information about the bundle to display in Programs and Features (also + known as Add/Remove Programs). + + + + + + + The legal copyright found in the version resources of final bundle executable. If + this attribute is not provided the copyright will be set to "Copyright (c) [Bundle/@Manufacturer]. All rights reserved.". + + + + + + Whether Packages and Payloads not assigned to a container should be added to the default attached container or if they should be external. The default is yes. + + + + + + Determines whether the bundle can be modified via the Programs and Features (also known as + Add/Remove Programs). If the value is "button" then Programs and Features will show a single + "Uninstall/Change" button. If the value is "yes" then Programs and Features will only show + the "Uninstall" button". If the value is "no", the default, then a "Change" button is shown. + See the DisableRemove attribute for information how to not display the bundle in Programs + and Features. + + + + + + + Determines whether the bundle can be removed via the Programs and Features (also + known as Add/Remove Programs). If the value is "yes" then the "Uninstall" button will + not be displayed. The default is "no" which ensures there is an "Uninstall" button to + remove the bundle. If the "DisableModify" attribute is also "yes" or "button" then the + bundle will not be displayed in Progams and Features and another mechanism (such as + registering as a related bundle addon) must be used to ensure the bundle can be removed. + + + + + + + + + + + + + + A telephone number for help to display in Programs and Features (also known as + Add/Remove Programs). + + + + + + + A URL to the help for the bundle to display in Programs and Features (also known as + Add/Remove Programs). + + + + + + + Path to an icon that will replace the default icon in the final Bundle executable. + This icon will also be displayed in Programs and Features (also known as Add/Remove + Programs). + + + + + + + The publisher of the bundle to display in Programs and Features (also known as + Add/Remove Programs). + + + + + + + The name of the bundle to display in Programs and Features (also known as Add/Remove + Programs). This name can be accessed and overwritten by a BootstrapperApplication + using the WixBundleName bundle variable. + + + + + + + The name of the parent bundle to display in Installed Updates (also known as Add/Remove + Programs). This name is used to nest or group bundles that will appear as updates. + If the parent name does not actually exist, a virtual parent is created automatically. + + + + + + Path to a bitmap that will be shown as the bootstrapper application is being loaded. If this attribute is not specified, no splash screen will be displayed. + + + + + Set this string to uniquely identify this bundle to its own BA, and to related bundles. The value of this string only matters to the BA, and its value has no direct effect on engine functionality. + + + + + + A URL for updates of the bundle to display in Programs and Features (also + known as Add/Remove Programs). + + + + + + + Unique identifier for a family of bundles. If two bundles have the same UpgradeCode the + bundle with the highest version will be installed. + + + + + + + The version of the bundle. Newer versions upgrade earlier versions of the bundles + with matching UpgradeCodes. If the bundle is registered in Programs and Features + then this attribute will be displayed in the Programs and Features user interface. + + + + + + + The condition of the bundle. If the condition is not met, the bundle will + refuse to run. Conditions are checked before the bootstrapper application is loaded + (before detect), and thus can only reference built-in variables such as + variables which indicate the version of the OS. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Provides information about an .exe so that the BA can request the engine to run it elevated from any secure location. + + + + + + + + The identifier of the ApprovedExeForElevation element. + + + + + + The key path. + For security purposes, the root key will be HKLM and Variables are not supported. + + + + + + + The value name. + For security purposes, Variables are not supported. + + + + + + + Instructs the search to look in the 64-bit registry when the value is 'yes'. + When the value is 'no', the search looks in the 32-bit registry. + The default value is 'no'. + + + + + + + + Overrides the default log settings for a bundle. + + + + + + + + + Disables the default logging in the Bundle. The end user can still generate a + log file by specifying the "-l" command-line argument when installing the + Bundle. + + + + + + + Name of a Variable that will hold the path to the log file. An empty value + will cause the variable to not be set. The default is "WixBundleLog". + + + + + + + File name and optionally a relative path to use as the prefix for the log file. The + default is to use the Bundle/@Name or, if Bundle/@Name is not specified, the value + "Setup". + + + + + + The extension to use for the log. The default is ".log". + + + + + + + Specify one or more catalog files that will be used to verify the contents of the bundle. + + + + + + + + The identifier of the catalog element. + + + + + The catalog file + + + + + + + Contains all the relevant information about the setup UI. + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + The identifier of the BootstrapperApplication element. Only required if you want to reference this element using a BootstrapperApplicationRef element. + + + + + The DLL with the bootstrapper application entry function. + + + + + The relative destination path and file name for the bootstrapper application DLL. The default is the source file name. Use this attribute to rename the bootstrapper application DLL or extract it into a subfolder. + + + + + + + Used to reference a BootstrapperApplication element and optionally add additional payloads to the bootstrapper application. + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + The identifier of the BootstrapperApplication element to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + This element has been deprecated. Use the BootstrapperApplication element instead. + + + + + + + + + + + + + + See the BootstrapperApplication instead. + + + + + See the BootstrapperApplication instead. + + + + + See the BootstrapperApplication instead. + + + + + + + Writes additional information to the Windows registry that can be used to detect the bundle. + This registration is intended primarily for update to an existing product. + + + The attributes are used to write the following registry values to the key: + SOFTWARE\[Manufacturer]\Updates\[ProductFamily]\[Name] + + ThisVersionInstalled: Y + PackageName: >bundle name< + PackageVersion: >bundle version< + Publisher: [Manufacturer] + PublishingGroup: [Department] + ReleaseType: [Classification] + InstalledBy: [LogonUser] + InstalledDate: [Date] + InstallerName: >installer name< + InstallerVersion: >installer version< + + + + + + + + The name of the manufacturer. The default is the Bundle/@Manufacturer attribute, + but may also be a short form, ex: WiX instead of Windows Installer XML. + An error is generated at build time if neither attribute is specified. + + + + + The name of the department or division publishing the update bundle. + The PublishingGroup registry value is not written if this attribute is not specified. + + + + + The name of the family of products being updated. The default is the Bundle/@ParentName attribute. + The corresponding registry key is not created if neither attribute is specified. + + + + + The name of the bundle. The default is the Bundle/@Name attribute, + but may also be a short form, ex: KB12345 instead of Update to Product (KB12345). + An error is generated at build time if neither attribute is specified. + + + + + The release type of the update bundle, such as Update, Security Update, Service Pack, etc. + The default value is Update. + + + + + + + Contains the chain of packages to install. + + + + + + + + + + + + + + + + + Specifies whether the bundle will attempt to rollback packages + executed in the chain. If "yes" is specified then when a vital + package fails to install only that package will rollback and the + chain will stop with the error. The default is "no" which + indicates all packages executed during the chain will be + rolledback to their previous state when a vital package fails. + + + + + + + Specifies whether the bundle will attempt to create a system + restore point when executing the chain. If "yes" is specified then + a system restore point will not be created. The default is "no" which + indicates a system restore point will be created when the bundle is + installed, uninstalled, repaired, modified, etc. If the system restore + point cannot be created, the bundle will log the issue and continue. + + + + + + + Specifies whether the bundle will start installing packages + while other packages are still being cached. If "yes", + packages will start executing when a rollback boundary is + encountered. The default is "no" which dictates all packages + must be cached before any packages will start to be installed. + + + + + + + + Describes a single msi package to install. + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. The extension's + CompilerExtension.ParseElement() + method will be called with the package identifier as the first value in + contextValues. + + + + + + + + + Specifies whether the bundle will show the UI authored into the msi package. The default is "no" + which means all information is routed to the bootstrapper application to provide a unified installation + experience. If "yes" is specified the UI authored into the msi package will be displayed on top of + any bootstrapper application UI. + + + + + + + Specifies whether the bundle will allow individual control over the installation state of Features inside + the msi package. Managing feature selection requires special care to ensure the install, modify, update and + uninstall behavior of the package is always correct. The default is "no". + + + + + + + Override the automatic per-machine detection of MSI packages and force the package to be per-machine. + The default is "no", which allows the tools to detect the expected value. + + + + + + + This attribute has been deprecated. When the value is "yes", the Binder will not read the MSI package + to detect uncompressed files that would otherwise be automatically included in the Bundle as Payloads. + The resulting Bundle may not be able to install the MSI package correctly. The default is "no". + + + + + + + Specifies whether the MSI will be displayed in Programs and Features (also known as Add/Remove Programs). If "yes" is + specified the MSI package information will be displayed in Programs and Features. The default "no" indicates the MSI + will not be displayed. + + + + + + + + Describes a single msp package to install. + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. The extension's + CompilerExtension.ParseElement() + method will be called with the package identifier as the first value in + contextValues. + + + + + + + + + Specifies whether the bundle will show the UI authored into the msp package. The default is "no" + which means all information is routed to the bootstrapper application to provide a unified installation + experience. If "yes" is specified the UI authored into the msp package will be displayed on top of + any bootstrapper application UI. + + + + + + Indicates the package must be executed elevated. The default is "no". + + + + + + Specifies whether to automatically slipstream the patch for any target msi packages in the chain. The default is "no". + Even when the value is "no", you can still author the SlipstreamMsp element under MsiPackage elements as desired. + + + + + + + + Describes a single msu package to install. + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. The extension's + CompilerExtension.ParseElement() + method will be called with the package identifier as the first value in + contextValues. + + + + + + + + + A condition that determines if the package is present on the target system. This condition can use built-in + variables and variables returned by searches. This condition is necessary because Windows doesn't provide a + method to detect the presence of an MsuPackage. Burn uses this condition to determine how to treat this + package during a bundle action; for example, if this condition is false or omitted and the bundle is being + installed, Burn will install this package. + + + + + + + The knowledge base identifier for the MSU. The KB attribute must be specified to enable the MSU package to + be uninstalled. Even then MSU uninstallation is only supported on Windows 7 and later. When the KB attribute + is specified, the Permanent attribute will the control whether the package is uninstalled. + + + + + + + + Describes a single exe package to install. + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. The extension's + CompilerExtension.ParseElement() + method will be called with the package identifier as the first value in + contextValues. + + + + + + + + + A condition that determines if the package is present on the target system. This condition can use built-in + variables and variables returned by searches. This condition is necessary because Windows doesn't provide a + method to detect the presence of an ExePackage. Burn uses this condition to determine how to treat this + package during a bundle action; for example, if this condition is false or omitted and the bundle is being + installed, Burn will install this package. + + + + + + The command-line arguments provided to the ExePackage during install. If this attribute is absent the executable will be launched with no command-line arguments. + + + + + + The command-line arguments to specify to indicate a repair. If the executable package can be repaired but + does not require any special command-line arguments to do so then set the attribute's value to blank. + + + + + + The command-line arguments provided to the ExePackage during uninstall. If this attribute is absent the executable will be launched with no command-line arguments. To prevent an ExePackage from being uninstalled set the Permanent attribute to "yes". + + + + + Indicates the package must be executed elevated. The default is "no". + + + + + Indicates the communication protocol the package supports for extended progress and error reporting. The default is "none". + + + + + + + Describes a rollback boundary in the chain. + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. The extension's + CompilerExtension.ParseElement() + method will be called with the rollback boundary identifier as the 'RollbackBoundaryId' key in + contextValues. + + + + + + + + Identifier for this rollback boundary, for ordering and cross-referencing. If this attribute is + not provided a stable identifier will be generated. + + + + + + + Specifies whether the rollback boundary aborts the chain. The default "yes" indicates that if + the rollback boundary is encountered then the chain will fail and rollback or stop. If "no" + is specified then the chain should continue successfuly at the next rollback boundary. + + + + + + + + + + Location of the package to add to the bundle. The default value is the Name attribute, if provided. + At a minimum, the SourceFile or Name attribute must be specified. + + + + + + + The destination path and file name for this chain payload. Use this attribute to rename the + chain entry point or extract it into a subfolder. The default value is the file name from the + SourceFile attribute, if provided. At a minimum, the Name or SourceFile attribute must be specified. + + + + + + + The URL to use to download the package. The following substitutions are supported: + + {0} is replaced by the package Id. + {1} is replaced by the payload Id. + {2} is replaced by the payload file name. + + + + + + + + Identifier for this package, for ordering and cross-referencing. The default is the Name attribute + modified to be suitable as an identifier (i.e. invalid characters are replaced with underscores). + + + + + + + The identifier of another package that this one should be installed after. By default the After + attribute is set to the previous sibling package in the Chain or PackageGroup element. If this + attribute is specified ensure that a cycle is not created explicitly or implicitly. + + + + + + + The size this package will take on disk in bytes after it is installed. By default, the binder will + calculate the install size by scanning the package (File table for MSIs, Payloads for EXEs) + and use the total for the install size of the package. + + + + + + A condition to evaluate before installing the package. The package will only be installed if the condition evaluates to true. If the condition evaluates to false and the bundle is being installed, repaired, or modified, the package will be uninstalled. + + + + + Whether to cache the package. The default is "yes". + + + + + The identifier to use when caching the package. + + + + + + Specifies the display name to place in the bootstrapper application data manifest for the package. By default, ExePackages + use the ProductName field from the version information, MsiPackages use the ProductName property, and MspPackages use + the DisplayName patch metadata property. Other package types must use this attribute to define a display name in the + bootstrapper application data manifest. + + + + + + + Specifies the description to place in the bootstrapper application data manifest for the package. By default, ExePackages + use the FileName field from the version information, MsiPackages use the ARPCOMMENTS property, and MspPackages use + the Description patch metadata property. Other package types must use this attribute to define a description in the + bootstrapper application data manifest. + + + + + + + Name of a Variable that will hold the path to the log file. An empty value will cause the variable to not + be set. The default is "WixBundleLog_[PackageId]" except for MSU packages which default to no logging. + + + + + + + Name of a Variable that will hold the path to the log file used during rollback. An empty value will cause + the variable to not be set. The default is "WixBundleRollbackLog_[PackageId]" except for MSU packages which + default to no logging. + + + + + + + Specifies whether the package can be uninstalled. The default is "no". + + + + + + + Specifies whether the package must succeed for the chain to continue. The default "yes" + indicates that if the package fails then the chain will fail and rollback or stop. If + "no" is specified then the chain will continue even if the package reports failure. + + + + + + Whether the package payload should be embedded in a container or left as an external payload. + + + + + + By default, a Bundle will use the hash of a package to verify its contents. If this attribute is explicitly set to "no" + and the package is signed with an Authenticode signature the Bundle will verify the contents of the package using the + signature instead. Therefore, the default for this attribute could be considered to be "yes". It is unusual for "yes" to + be the default of an attribute. In this case, the default was changed in WiX v3.9 after experiencing real world issues + with Windows verifying Authenticode signatures. Since the Authenticode signatures are no more secure than hashing the + packages directly, the default was changed. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. The extension's + CompilerExtension.ParseAttribute() + method will be called with the package identifier in + contextValues["PackageId"]. + + + + + + + Describes a package group to a bootstrapper. + + + + + + + + + + + + + + + + Identifier for package group. + + + + + + + Create a reference to PackageGroup element that exists inside a Bundle or Fragment element. + + + + + + + + + + + The identifier of the PackageGroup element to reference. + + + + + The identifier of a package that this group should be installed after. + + + + + + + Allows an MSI property to be set based on the value of a burn engine expression. + + + + + + + + The name of the MSI property to set. + + + + + The value to set the property to. This string is evaluated by the burn engine and can be as simple as a burn engine variable reference or as complex as a full expression. + + + + + + + Specifies a patch included in the same bundle that is installed when the parent MSI package is installed. + + + + + You can also specify that any MspPackage elements in the chain are automatically slipstreamed by setting the Slipstream attribute of an MspPackage to "yes". This will reduce the amount of authoring you need to write and will determine which msi packages can slipstream patches when building a bundle. + + + + + + + The identifier for a MspPackage in the bundle. + + + + + + + Describes a burn engine variable to define. + + + + + + + + + Whether the value of the variable should be hidden. + + + + + The name for the variable. + + + + + Whether the variable should be persisted. + + + + + Starting value for the variable. + + + + + Type of the variable, inferred from the value if not specified. + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Representation of a file that contains one or more files. + + + + + + + + + + + + The URL to use to download the container. This attribute is only valid when the container is detached. The + following substitutions are supported: + + {0} is always null. + {1} is replaced by the container Id. + {2} is replaced by the container file name. + + + + + + + The unique identifier for the container. If this attribute is not specified the Name attribute will be used. + + + + + The file name for this container. A relative path may be provided to place the container in a sub-folder of the bundle. + + + + + + Indicates whether the container is "attached" to the bundle executable or placed external to the bundle extecutable as "detached". If + this attribute is not specified, the default is to create a detached container. + + + + + + + + Create a reference to an existing Container element. + + + + + + + + + The identifier of Container element to reference. + + + + + + + Describes map of exit code returned from executable package to a bootstrapper behavior. + + + + + + + + Exit code returned from executable package. If no value is provided it means all values not explicitly set default to this behavior. + + + + + Choose one of the supported behaviors error codes: success, error, scheduleReboot, forceReboot. + + + + + + + + + + + + + + + Describes a payload to a bootstrapper. + + + + + + + + + + + + + The identifier of Payload element. + + + + + Whether the payload should be embedded in a container or left as an external payload. + + + + + Location of the source file. + + + + + The destination path and file name for this payload. The default is the source file name. + + + + + + The URL to use to download the package. The following substitutions are supported: + + {0} is replaced by the package Id. + {1} is replaced by the payload Id. + {2} is replaced by the payload file name. + + + + + + + + By default, a Bundle will use a package's Authenticode signature to verify the contents. If the package does not + have an Authenticode signature then the Bundle will use a hash of the package instead. Set this attribute to "yes" + to suppress the default behavior and force the Bundle to always use the hash of the package even when the package + is signed. + + + + + + + + Describes a payload group to a bootstrapper. PayloadGroups referenced from within a Bundle are tied to the Bundle. + PayloadGroups referenced from a Fragment are tied to the context of whatever references them such as an ExePackage or MsiPackage. + It is possible to share a PayloadGroup between multiple Packages and/or a Bundle by creating multiple references to it. + + + + + + + + + + + + Identifier for payload group. + + + + + + + Create a reference to PayloadGroup element that exists inside a Bundle or Fragment element. + + + + + + + + + + + The identifier of the PayloadGroup element to reference. + + + + + + + Describes information about a remote file payload that is not available at the time of building the bundle. + The parent must specify DownloadUrl and must not specify SourceFile when using this element. + + + + + + + + + Public key of the authenticode certificate used to sign the RemotePayload. Include this attribute if the remote file is signed. + + + + + Thumbprint of the authenticode certificate used to sign the RemotePayload. Include this attribute if the remote file is signed. + + + + + Description of the file from version resources. + + + + + SHA-1 hash of the RemotePayload. Include this attribute if the remote file is unsigned or SuppressSignatureVerification is set to Yes. + + + + + Product name of the file from version resouces. + + + + + Size of the remote file in bytes. + + + + + Version of the remote file + + + + + + + Create a RelatedBundle element. + + + + + + + + + The identifier of the RelatedBundle group. + + + + + The action to take on bundles related to this one. Detect is the default. + + + + + + + + + + + + + + + Defines the update for a Bundle. + + + + + + + + + + The absolute path or URL to check for an update bundle. Currently the engine provides this value + in the IBootstrapperApplication::OnDetectUpdateBegin() and otherwise ignores the value. In the + future the engine will be able to acquire an update bundle from the location and determine if it + is newer than the current executing bundle. + + + + + + + + + The Product element is analogous to the main function in a C program. When linking, only one Product section + can be given to the linker to produce a successful result. Using this element creates an msi file. + + + + You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + The product code GUID for the product. + + + + + The code page integer value or web name for the resulting MSI. See remarks for more information. + + + + + The decimal language ID (LCID) for the product. + + + + + The manufacturer of the product. + + + + + The descriptive name of the product. + + + + + The upgrade code GUID for the product. + + + + + The product's version string. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + The Module element is analogous to the main function in a C program. When linking, only + one Module section can be given to the linker to produce a successful result. Using this + element creates an msm file. + + + + You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + The name of the merge module (not the file name). + + + + + The code page integer value or web name for the resulting MSM. See remarks for more information. + + + + + This attribute is deprecated. Use the Package/@Id attribute instead. + + + + + The decimal language ID (LCID) of the merge module. + + + + + The major and minor versions of the merge module. + + + + + + + Declares a dependency on another merge module. + + + + + Identifier of the merge module required by the merge module. + + + + + Numeric language ID of the merge module in RequiredID. + + + + + Version of the merge module in RequiredID. + + + + + + + Declares a merge module with which this merge module is incompatible. + + + + + Identifier of the merge module that is incompatible. + + + + + Numeric language ID of the merge module in ExcludedID. All except this language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified. + + + + + Numeric language ID of the merge module in ExcludedID. The specified language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified. + + + + + Minimum version excluded from a range. If not set, all versions before max are excluded. If neither max nor min, no exclusion based on version. + + + + + Maximum version excluded from a range. If not set, all versions after min are excluded. If neither max nor min, no exclusion based on version. + + + + + + + Defines the configurable attributes of merge module. + + + + + Defines the name of the configurable item. + + + + + Specifies the format of the data being changed. + + + + + + + + + + + + + Specifies the type of the data being changed. + + + + + Specifies a semantic context for the requested data. + + + + + Specifies a default value for the item in this record if the merge tool declines to provide a value. + + + + + Does not merge rule according to rules in MSI SDK. + + + + + If yes, null is not a valid entry. + + + + + Display name for authoring. + + + + + Description for authoring. + + + + + Location of chm file for authoring. + + + + + Keyword into chm file for authoring. + + + + + + + Specifies the configurable fields of a module database and provides a template for the configuration of each field. + + + + + Specifies the name of the table being modified in the module database. + + + + + Specifies the primary keys of the target row in the table named in the Table column. If multiple keys, separated by semicolons. + + + + + Specifies the target column in the row named in the Row column. + + + + + Provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column. + + + + + + + + Specifies a table from the merge module that is not merged into an .msi file. + If the table already exists in an .msi file, it is not modified by the merge. + The specified table can therefore contain data that is unneeded after the merge. + To minimize the size of the .msm file, it is recommended that developers remove + unused tables from modules intended for redistribution rather than creating + IgnoreTable elements for those tables. + + + + + + + The name of the table in the merge module that is not to be merged into the .msi file. + + + + + + + + + The Fragment element is the building block of creating an installer database in WiX. Once defined, + the Fragment becomes an immutable, atomic unit which can either be completely included or excluded + from a product. The contents of a Fragment element can be linked into a product by utilizing one + of the many *Ref elements. When linking in a Fragment, it will be necessary to link in all of its + individual units. For instance, if a given Fragment contains two Component elements, you must link + both under features using ComponentRef for each linked Component. Otherwise, you will get a linker + warning and have a floating Component that does not appear under any Feature. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Optional identifier for a Fragment. Should only be set by advanced users to tag sections. + + + + + + + + + The Patch element is analogous to the main function in a C program. When linking, only one Patch section + can be given to the linker to produce a successful result. Using this element creates an MSP file. + + + + You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + The ClientPatchId attribute allows you to specify an easily referenced identity that you can use in product authoring. This identity prefixes properties added by WiX to a patch transform, such as ClientPatchId.PatchCode and ClientPatchId.AllowRemoval. If the patch code GUID is auto-generated you could not reference any properties using this auto-generated prefix. + For example, if you were planning to ship a patch referred to as "QFE1" and needed to write your own registry values for Add/Remove Programs in product authoring such as the UninstallString for this patch, you could author a RegistryValue with the name UninstallString and the value [SystemFolder]msiexec.exe /package [ProductCode] /uninstall [QFE1.PatchCode]. In your patch authoring you would then set ClientPatchId to "QFE1" and WiX will add the QFE1.PatchCode property to the patch transform when the patch is created. If the Id attribute specified the patch code to be generated automatically, you could not reference the prefix.PatchCode property as shown above. + The summary information is automatically populated from attribute values of the Patch element including the code page. If you want to override some of these summary information properties or use a different code page for the summary information itself, author the PatchInformation element. + + + + + + + + + Optional element that allows overriding summary information properties. + + + + + + Indicates whether custom actions can be skipped when applying the patch. + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Patch code for this patch. + + + + + The code page integer value or web name for the resulting MSP. See remarks for more information. + + + + + Whether this is an uninstallable patch. + + + + + Category of updates. Recommended values are Critical Update, Hotfix, Security Rollup, Security Update, Service Pack, Update, Update Rollup. + + + + + An easily referenced identity unique to a patch that can be used in product authoring. See remarks for more information. + + + + + Flag used when creating a binary file patch. Default is "no". Don't use imagehlp.dll. + + + + + Flag used when creating a binary file patch. Default is "no". Don't fail patch due to imagehlp failures. + + + + + Flag used when creating a binary file patch. Default is "no". After matching decorated symbols, try to match remaining by undecorated names. + + + + + Description of the patch. + + + + + A title for the patch that is suitable for public display. In Add/Remove Programs from XP SP2 on. + + + + + Optional comments for browsing. + + + + + Vendor releasing the package + + + + + + Indicates that the patch targets the RTM version of the product or the most recent major + upgrade patch. Author this optional property in minor update patches that contain sequencing + information to indicate that the patch removes all patches up to the RTM version of the + product, or up to the most recent major upgrade patch. This property is available beginning + with Windows Installer 3.1. + + + + + + A URL that provides information specific to this patch. In Add/Remove Programs from XP SP2 on. + + + + + + If this attribute is set to 'yes' in all the patches to be applied in a transaction, the + application of the patch is optimized if possible. Available beginning with Windows Installer 3.1. + + + + + + Name of the application or target product suite. + + + + + When this attribute is set, patches for files greater than approximately 4 MB in size may be made smaller. + + + + + + + Sets information in the patch transform that determines if the transform applies to an installed product and what errors should be ignored when applying the patch transform. + + + A transform contains the differences between the target product and the upgraded product. When a transform or a patch (which contains transforms) is applied, the following properties of the installed product are validated against the properties of the target product stored in a transform. + + ProductCode + ProductLanguage + ProductVersion + UpgradeCode + + Windows Installer simply validates that the ProductCode, ProductLanguage, and UpgradeCode of an installed product are equivalent to those propeties of the target product used to create the transform; however, the ProductVersion can be validated with a greater range of comparisons. + You can compare up to the first three fields of the ProductVersion. Changes to the fourth field are not validated and are useful for small updates. You can also choose how to compare the target ProductVersion used to create the transform with the installed ProductVersion. For example, while the default value of 'Equals' is recommended, if you wanted a minor upgrade patch to apply to the target ProductVersion and all older products with the same ProductCode, you would use 'LesserOrEqual'. + + + + + + + Requires that the installed ProductCode match the target ProductCode used to create the transform. The default is 'yes'. + + + + + Requires that the installed ProductLanguage match the target ProductLanguage used to create the transform. The default is 'no'. + + + + + Determines how many fields of the installed ProductVersion to compare. See remarks for more information. The default is 'Update'. + + + + + + Checks the major version. + + + + + Checks the major and minor versions. + + + + + Checks the major, minor, and update versions. + + + + + + + + Determines how the installed ProductVersion is compared to the target ProductVersion used to create the transform. See remarks for more information. The default is 'Equal'. + + + + + + Installed ProductVersion < target ProductVersion. + + + + + Installed ProductVersion <= target ProductVersion. + + + + + Installed ProductVersion = target ProductVersion. + + + + + Installed ProductVersion >= target ProductVersion. + + + + + Installed ProductVersion > target ProductVersion. + + + + + + + + Requires that the installed UpgradeCode match the target UpgradeCode used to create the transform. The default is 'yes'. + + + + + Ignore errors when adding existing rows. The default is 'yes'. + + + + + Ignore errors when adding existing tables. The default is 'yes'. + + + + + Ignore errors when deleting missing rows. The default is 'yes'. + + + + + Ignore errors when deleting missing tables. The default is 'yes'. + + + + + Ignore errors when updating missing rows. The default is 'yes'. + + + + + Ignore errors when changing the database code page. The default is 'no'. + + + + + + + Indicates whether custom actions can be skipped when applying the patch. + + + + + + + + Skip property (type 51) and directory (type 35) assignment custom actions. + + + + + Skip immediate custom actions that are not property or directory assignment custom actions. + + + + + Skip custom actions that run within the script. + + + + + + + Identifies a set of product versions. + + + + + + + + Identifier for a set of product versions. + + + + + + + Collection of items that should be kept from the differences between two products. + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Identifier which indicates a sequence family to which this patch belongs. + + + + + + Specifies the ProductCode of the product that this family applies to. + + + + + + Used to populate the sequence column of the MsiPatchSequence table in the final MSP file. Specified in x.x.x.x format. See documentation for Sequence column of MsiPatchSequence table in MSI SDK. + + + + + + Set this value to 'yes' to indicate that this patch will supersede all previous patches in this patch family. + The default value is 'no'. + + + + + + + + + Groups together multiple patch families to be used in other locations. + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Identifier for the PatchFamilyGroup. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a PatchFamilyGroup in another Fragment. + + + + + + + + The identifier of the PatchFamilyGroup to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + The PatchCreation element is analogous to the main function in a C program. When linking, only one PatchCreation section + can be given to the linker to produce a successful result. Using this element creates a pcp file. + + + + You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + + + + + + + + + + + + + + + + + + PatchCreation identifier; this is the primary key for identifying patches. + + + + + Use this to set whether the major versions between the upgrade and target images match. See AllowProductVersionMajorMismatches for more information. + + + + + Use this to set whether the product code between the upgrade and target images match. See AllowProductCodeMismatches for more information. + + + + + Use this to set whether Patchwiz should clean the temp folder when finished. See DontRemoveTempFolderWhenFinished for more information. + + + + + The code page integer value or web name for the resulting PCP. See remarks for more information. + + + + + The full path, including file name, of the patch package file that is to be generated. See PatchOutputPath for more information. + + + + + Used to locate the .msp file for the patch if the cached copy is unavailable. See PatchSourceList for more information. + + + + + An 8-digit hex integer representing the combination of patch symbol usage flags to use when creating a binary file patch. See ApiPatchingSymbolFlags for more information. + + + + + Use this to set whether changing files should be included in their entirety. See IncludeWholeFilesOnly for more information. + + + + + + + Properties about the patch to be placed in the Summary Information Stream. These are visible from COM through the IStream interface, and these properties can be seen on the package in Explorer. + + + You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + + + + + + + A short description of the patch that includes the name of the product. + + + + + + + + + + + + + + + + + + + The name of the manufacturer of the patch package. + + + + + A semicolon-delimited list of network or URL locations for alternate sources of the patch. The default is "Installer,Patching,PCP,Database". + + + + + General purpose of the patch package. For example, "This patch contains the logic and data required to install <product>." + + + + + + The value of this attribute conveys whether the package should be opened as read-only. + A database editing tool should not modify a read-only enforced database and should + issue a warning at attempts to modify a read-only recommended database. + + + + + + The code page integer value or web name for summary info strings only. The default is 1252. See remarks for more information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Properties about the patch to be placed in the PatchMetadata table. + + + + + + + + + + A custom property that extends the standard set. + + + + + Indicates whether custom actions can be skipped when applying the patch. + + + + + + + Whether this is an uninstallable patch. + + + + + Category of updates. Recommended values are Critical Update, Hotfix, Security Rollup, Security Update, Service Pack, Update, Update Rollup. + + + + + Creation time of the .msp file in the form mm-dd-yy HH:MM (month-day-year hour:minute). + + + + + Description of the patch. + + + + + A title for the patch that is suitable for public display. In Add/Remove Programs from XP SP2 on. + + + + + Name of the manufacturer. + + + + + + Indicates that the patch targets the RTM version of the product or the most recent major + upgrade patch. Author this optional property in minor update patches that contain sequencing + information to indicate that the patch removes all patches up to the RTM version of the + product, or up to the most recent major upgrade patch. This property is available beginning + with Windows Installer 3.1. + + + + + + A URL that provides information specific to this patch. In Add/Remove Programs from XP SP2 on. + + + + + + If this attribute is set to 'yes' in all the patches to be applied in a transaction, the + application of the patch is optimized if possible. Available beginning with Windows Installer 3.1. + + + + + + Name of the application or target product suite. + + + + + + + A custom property for the PatchMetadata table. + + + + + The name of the company. + + + + + The name of the metadata property. + + + + + Value of the metadata property. + + + + + + + A patch that is deprecated by this patch. + + + + + Patch GUID to be unregistered if it exists on the machine targeted by this patch. + + + + + + + + The product codes for products that can accept the patch. + + + + + + + + + Whether to replace the product codes that can accept the patch from the target packages with the child elements. + + + + + + + + A product code for a product that can accept the patch. + + + + When using the PatchCreation element, if the Id attribute value is '*' or this element is not authored, the product codes of all products referenced by the TargetImages element are used. + When using the Patch element, the Id attribute value must not be '*'. Use the TargetProductCodes/@Replace attribute instead. + + + + + + + + The product code for a product that can accept the patch. This can be '*'. See remarks for more information. + + + + + + + + A property for this patch database. + + + + When authored under the Patch element, the PatchProperty defines entries in the MsiPatchMetadata table. + + + + + + + Name of the company for a custom metadata property. + + + + + Name of the patch property. + + + + + Value of the patch property. + + + + + + + Sequence information for this patch database. Sequence information is generated automatically in most cases, and rarely needs to be set explicitly. + + + + + + + + Identifier which indicates a sequence family to which this patch belongs. + + + + + + Specifies the ProductCode of the product that this family applies to. + This attribute cannot the specified if the TargetImage attribute is specified. + + + + + + Used to populate the sequence column of the MsiPatchSequence table in the final MSP file. Specified in x.x.x.x format. See documentation for Sequence column of MsiPatchSequence table in MSI SDK. + + + + + + Set this value to 'yes' to indicate that this patch will supersede all previous patches in this patch family. + The default value is 'no'. + + + + + + + + + + + + + + Specifies the TargetImage that this family applies to. + This attribute cannot the specified if the ProductCode attribute is specified. + + + + + + + + Group of one or more upgraded images of a product. + + + + + + + + + + + + Entered into the DiskId field of the new Media table record. + + + + + Value to display in the "[1]" of the DiskPrompt Property. Using this attribute will require you to define a DiskPrompt Property. + + + + + Entered into the Source field of the new Media table entry of the upgraded image. + + + + + Identifier for the family. + + + + + Sequence number for the starting file. + + + + + Entered into the VolumeLabel field of the new Media table record. + + + + + + + Contains information about the upgraded images of the product. + + + + + + + + + + + + Identifier to connect target images with upgraded image. + + + + + Full path to location of msi file for upgraded image. + + + + + + + + + + + + Modified copy of the upgraded installation database that contains additional authoring specific to patching. + + + + + + + + + + + + + + Contains information about the target images of the product. + + + + + + + + + Identifier for the target image. + + + + + Full path to the location of the msi file for the target image. + + + + + + + + + + + + Relative order of the target image. + + + + + Product checking to avoid applying irrelevant transforms. + + + + + Files missing from the target image are ignored by the installer. + + + + + + + Information about specific files in a target image. + + + + + + + + + + + + Foreign key into the File table. + + + + + + + Specifies part of a file that is to be ignored during patching. + + + + + Offset of the start of the range. + + + + + Length of the range. + + + + + + + Specifies part of a file that cannot be overwritten during patching. + + + + + Offset of the start of the range. + + + + + Length of the range. + + + + + + + Specifies a file to be protected. + + + + + + + + Foreign key into the File table. + + + + + + + Contains information about specific files that are not part of a regular target image. + + + + + + + + + + + + Foreign key into the File table. + + + + + Full path of the external file. + + + + + + + + + + + + Specifies the order of the external files to use when creating the patch. + + + + + + + Specifies files to either ignore or to specify optional data about a file. + + + + + + + + Foreign key into the File table. + + + + + If yes, the file is ignored during patching, and the next two attributes are ignored. + + + + + Specifies whether patching this file is vital. + + + + + Whether the whole file should be installed, rather than creating a binary patch. + + + + + + + A path to symbols. + + + + + The path. + + + + + + + + Properties about the package to be placed in the Summary Information Stream. These are + visible from COM through the IStream interface, and these properties can be seen on the package in Explorer. + + + + You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See Code Pages for more information. + + + + + + + + The package code GUID for a product or merge module. + When compiling a product, this attribute should not be set in order to allow the package + code to be generated for each build. + When compiling a merge module, this attribute must be set to the modularization guid. + + + + + + Set to 'yes' if the source is an admin image. + + + + + Optional comments for browsing. + + + + + + Set to 'yes' to have compressed files in the source. + This attribute cannot be set for merge modules. + + + + + + The product full name or description. + + + + + Use this attribute to specify the priviliges required to install the package on Windows Vista and above. + + + + + + + Set this value to declare that the package does not require elevated privileges to install. + + + + + + + Set this value to declare that the package requires elevated privileges to install. + This is the default value. + + + + + + + + + Use this attribute to specify the installation scope of this package: per-machine or per-user. + + + + + + + Set this value to declare that the package is a per-machine installation and requires elevated privileges to install. + Sets the ALLUSERS property to 1. + + + + + + + Set this value to declare that the package is a per-user installation and does not require elevated privileges to install. + Sets the package's InstallPrivileges attribute to "limited." + + + + + + + + + + The minimum version of the Windows Installer required to install this package. Take the major version of the required Windows Installer + and multiply by a 100 then add the minor version of the Windows Installer. For example, "200" would represent Windows Installer 2.0 and + "405" would represent Windows Installer 4.5. For 64-bit Windows Installer packages, this property is set to 200 by default as + Windows Installer 2.0 was the first version to support 64-bit packages. + + + + + + Optional keywords for browsing. + + + + + The list of language IDs (LCIDs) supported in the package. + + + + + The vendor releasing the package. + + + + + + The list of platforms supported by the package. This attribute has been deprecated. + Specify the -arch switch at the candle.exe command line or the InstallerPlatform + property in a .wixproj MSBuild project. + + + + + + + The platform supported by the package. Use of this attribute is discouraged; instead, + specify the -arch switch at the candle.exe command line or the InstallerPlatform + property in a .wixproj MSBuild project. + + + + + + + + Set this value to declare that the package is an x86 package. + + + + + + + Set this value to declare that the package is an ia64 package. + This value requires that the InstallerVersion property be set to 200 or greater. + + + + + + + Set this value to declare that the package is an x64 package. + This value requires that the InstallerVersion property be set to 200 or greater. + + + + + + + Set this value to declare that the package is an arm package. + This value requires that the InstallerVersion property be set to 500 or greater. + + + + + + + This value has been deprecated. Use "x86" instead. + + + + + + + This value has been deprecated. Use "ia64" instead. + + + + + + + + + + The value of this attribute conveys whether the package should be opened as read-only. + A database editing tool should not modify a read-only enforced database and should + issue a warning at attempts to modify a read-only recommended database. + + + + + + Set to 'yes' to have short filenames in the source. + + + + + The code page integer value or web name for summary info strings only. See remarks for more information. + + + + + + + + The MsiAssemblyName table specifies the schema for the elements of a strong assembly cache name for a .NET Framework or Win32 assembly. + Consider using the Assembly attribute on File element to have the toolset populate these entries automatically. + + + + + + + + + Name of the attribute associated with the value specified in the Value column. + + + + + Value associated with the name specified in the Name column. + + + + + + + + Identifies the possible signer certificates used to digitally sign patches. + + + + + + + + + + + + + + + Digital signatures that identify installation packages in a multi-product transaction. + + + + + + + + + + + + + + + Adds a digital certificate. + + + + + + + + + Identifier for a certificate file. + + + + + The path to the certificate file. + + + + + + + + Reference to a DigitalCertificate element. This will force the entire referenced Fragment's contents + to be included in the installer database. This is only used for references when patching. + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Adds a digital signature. + + + + + + + + + + + + The path to signature's optional hash file. + + + + + + + + Adds a system file protection update catalog file + + + + + + + + + + + Primary Key to File Table. + + + + + + Filename for catalog file when installed. + + + + + Used to define dependency outside of the package. + + + + + Path to catalog file in binary. + + + + + + + + Provides a many-to-many mapping from the SFPCatalog table to the File table + + + + + + + + + Primary Key to File Table. + + + + + + + + Adds or removes .ini file entries. + + + + + + + + + + Identifier for ini file. + + + + + The type of modification to be made. + + + + + + Creates or updates an .ini entry. + + + + + Creates a new entry or appends a new comma-separated value to an existing entry. + + + + + Creates an .ini entry only if the entry does no already exist. + + + + + Removes an .ini entry. + + + + + Removes a tag from an .ini entry. + + + + + + + + Name of a property, the value of which is the full path of the folder containing the .ini file. Can be name of a directory in the Directory table, a property set by the AppSearch table, or any other property representing a full path. + + + + + The localizable .ini file key within the section. + + + + + + + + + + + + + In prior versions of the WiX toolset, this attribute specified the short name. + This attribute's value may now be either a short or long name. + If a short name is specified, the ShortName attribute may not be specified. + If a long name is specified, the LongName attribute may not be specified. + Also, if this value is a long name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short name. + However, if this name collides with another file or you wish to manually specify + the short name, then the ShortName attribute may be specified. + + + + + + The localizable .ini file section. + + + + + + The short name of the in 8.3 format. + This attribute should only be set if there is a conflict between generated short names + or the user wants to manually specify the short name. + + + + + + + The localizable value to be written or deleted. This attribute must be set if + the Action attribute's value is "addLine", "addTag", or "createLine". + + + + + + + + + ODBCDataSource for a Component + + + + + + + + + + Translates into ODBCSourceAttributes + + + + + + Identifier of the data source. + + + + + Name for the data source. + + + + + Required if not found as child of ODBCDriver element + + + + + Scope for which the data source should be registered. + + + + + + + Data source is registered per machine. + + + + + + + Data source is registered per user. + + + + + + + + + Set 'yes' to force this file to be key path for parent Component + + + + + + + + ODBCDriver for a Component + + + + + + + + + + Translates into ODBCSourceAttributes + + + + + + + Identifier for the driver. + + + + + Name for the driver. + + + + + Required if not found as child of File element + + + + + Required if not found as child of File element or different from File attribute above + + + + + + + + ODBCTranslator for a Component + + + + + + + + + Identifier for the translator. + + + + + Name for the translator. + + + + + Required if not found as child of File element + + + + + Required if not found as child of File element or different from File attribute above + + + + + + + + + + + + + + + + How To: Check the version number of a file during installation + + When the parent DirectorySearch/@Depth attribute is greater than 0, the FileSearch/@Id attribute must be absent or the same as the parent DirectorySearch/@Id attribute value, unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'. + + + Searches for file and assigns to fullpath value of parent Property + + + + + Unique identifier for the file search and external key into the Signature table. If this attribute value is not set then the parent element's @Id attribute is used. + + + + + + In prior versions of the WiX toolset, this attribute specified the short file name. + This attribute's value may now be either a short or long file name. + If a short file name is specified, the ShortName attribute may not be specified. + If a long file name is specified, the LongName attribute may not be specified. + If you wish to manually specify the short file name, then the ShortName + attribute may be specified. + + + + + + + + + + + + + + The short file name of the file in 8.3 format. + There is a Windows Installer bug which prevents the FileSearch functionality from working + if both a short and long file name are specified. Since the Name attribute allows either + a short or long name to be specified, it is the only attribute related to file names which + should be specified. + + + + + + The minimum size of the file. + + + + + The maximum size of the file. + + + + + The minimum version of the file. + + + + + The maximum version of the file. + + + + + The minimum modification date and time of the file. Formatted as YYYY-MM-DDTHH:mm:ss, where YYYY is the year, MM is month, DD is day, 'T' is literal, HH is hour, mm is minute and ss is second. + + + + + The maximum modification date and time of the file. Formatted as YYYY-MM-DDTHH:mm:ss, where YYYY is the year, MM is month, DD is day, 'T' is literal, HH is hour, mm is minute and ss is second. + + + + + The languages supported by the file. + + + + + + + + + + A reference to another FileSearch element must reference the same Id and the same Parent Id. If any of these attribute values are different you must instead use a FileSearch element. + + + References an existing FileSearch element. + + + + + Specify the Id to the FileSearch to reference. + + + + + + + + + + + + + How To: Check the version number of a file during installation + How To: Reference another DirectorySearch element + How To: Get the parent directory of a file search + + Use the AssignToProperty attribute to search for a file but set the outer property to the directory containing the file. When this attribute is set to 'yes', you may only nest a FileSearch element with a unique Id or define no child element. + When the parent DirectorySearch/@Depth attribute is greater than 0, the FileSearch/@Id attribute must be absent or the same as the parent DirectorySearch/@Id attribute value, unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'. + + + Searches for directory and assigns to value of parent Property. + + + + + + + + + + + Unique identifier for the directory search. + + + + + Path on the user's system. Either absolute, or relative to containing directories. + + + + + + Depth below the path that the installer searches for the file or directory specified by the search. See remarks for more information. + + + + + + Set the value of the outer Property to the result of this search. See remarks for more information. + + + + + + + + + + + How To: Reference another DirectorySearch element + + A reference to another DirectorySearch element must reference the same Id, the same Parent Id, and the same Path. If any of these attribute values are different you must instead use a DirectorySearch element. + + + References an existing DirectorySearch element. + + + + + + + + + + + Id of the search being referred to. + + + + + This attribute is the signature of the parent directory of the file or directory in the Signature_ column. If this field is null, and the Path column does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. This field is a key into one of the following tables: the RegLocator, the IniLocator, the CompLocator, or the DrLocator tables. + + + + + Path on the user's system. Either absolute, or relative to containing directories. + + + + + + + + + + + + + Searches for file or directory and assigns to value of parent Property. + + + + + + + + + + + + The component ID of the component whose key path is to be used for the search. + + + + + Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element. + + + + + + + The key path of the component is a directory. + + + + + + + The key path of the component is a file. This is the default value. + + + + + + + + + + + + + + + + + Searches for file, directory or registry key and assigns to value of parent Property + + + + + + + + + + + External key into the Signature table. + + + + + The field in the .ini line. If field is Null or 0, the entire line is read. + + + + + The key value within the section. + + + + + + + + + + + + + In prior versions of the WiX toolset, this attribute specified the short name. + This attribute's value may now be either a short or long name. + If a short name is specified, the ShortName attribute may not be specified. + If a long name is specified, the LongName attribute may not be specified. + Also, if this value is a long name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short name. + However, if you wish to manually specify the short name, then the ShortName + attribute may be specified. + + + + + + The localizable .ini file section. + + + + + + The short name of the file in 8.3 format. + This attribute should only be set if the user wants to manually specify the short name. + + + + + + Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element. + + + + + + A directory location. + + + + + A file location. This is the default value. + + + + + A raw .ini value. + + + + + + + + + + + + + + + How To: Read a registry entry during installation + + + When the Type attribute value is 'directory' the registry value must specify the path to a directory excluding the file name. + When the Type attribute value is 'file' the registry value must specify the path to a file including the file name; + however, if there is no child FileSearch element the parent directory of the file is returned. The FileSearch element requires + that you author the name of the file you are searching for. If you do not know the file name + you must set the Type attribute to 'raw' to return the full file path including the file name. + + + + Searches for file, directory or registry key and assigns to value of parent Property + + + + + + + + + + + Signature to be used for the file, directory or registry key being searched for. + + + + + Root key for the registry value. + + + + + + + HKEY_CLASSES_ROOT + + + + + + + HKEY_CURRENT_USER + + + + + + + HKEY_LOCAL_MACHINE + + + + + + + HKEY_USERS + + + + + + + + + Key for the registry value. + + + + + Registry value name. If this value is null, then the value from the key's unnamed or default value, if any, is retrieved. + + + + + + The value must be 'file' if the child is a FileSearch element, and must be 'directory' if child is a DirectorySearch element. + + + + + + + + The registry value contains the path to a directory. + + + + + + + The registry value contains the path to a file. To return the full file path you must add a FileSearch element as a child of this element; otherwise, the parent directory of the file path is returned. + + + + + + + Sets the raw value from the registry value. Please note that this value will contain a prefix as follows:DWORDStarts with '#' optionally followed by '+' or '-'.REG_BINARYStarts with '#x' and the installer converts and saves each hexadecimal digit (nibble) as an ASCII character prefixed by '#x'.REG_EXPAND_SZStarts with '#%'.REG_MULTI_SZStarts with '[~]' and ends with '[~]'.REG_SZNo prefix, but if the first character of the registry value is '#', the installer escapes the character by prefixing it with another '#'. + + + + + + + + Instructs the search to look in the 64-bit registry when the value is 'yes'. When the value is 'no', the search looks in the 32-bit registry. + The 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'. + + + + + + + + + + + References an existing RegistrySearch element. + + + + + Specify the Id of the RegistrySearch to reference. + + + + + + + Sets the parent of a nested DirectorySearch element to CCP_DRIVE. + + + + + + + + + + + + + + + + Adds a row to the CCPSearch table. + + + + + + + Starts searches from the CCP_DRIVE. + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + How To: Check the version number of a file during installation + + Property value for a Product or Module. + + + + + + + Starts searches from the CCP_DRIVE. + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Unique identifier for Property. + + + + + Sets a default value for the property. The value will be overwritten if the Property is used for a search. + + + + + Adds a row to the CCPSearch table. This attribute is only valid when this Property contains a search element. + + + + + Denotes that the Property is saved during admininistrative installation. See the AdminProperties Property for more information. + + + + + Denotes that the Property can be passed to the server side when doing a managed installation with elevated privileges. See the SecureCustomProperties Property for more information. + + + + + Denotes that the Property is not logged during installation. See the MsiHiddenProperties Property for more information. + + + + + + Use to suppress modularization of this property identifier in merge modules. + Using this functionality is strongly discouraged; it should only be + necessary as a workaround of last resort in rare scenarios. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + How To: Check for .NET Framework versions + + Reference to a Property value. + + + + + Identifier of Property to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Shortcut, default target is parent File, CreateFolder, or Component's Directory + + + + How To: Create a shortcut on the Start Menu + + + + + + + + + + Unique identifier for the shortcut. This value will serve as the primary key for the row. + + + + + Identifier reference to Directory element where shortcut is to be created. When nested under a Component element, this attribute's value will default to the parent directory. Otherwise, this attribute is required. + + + + + + In prior versions of the WiX toolset, this attribute specified the short name. + This attribute's value may now be either a short or long name. + If a short name is specified, the ShortName attribute may not be specified. + If a long name is specified, the LongName attribute may not be specified. + Also, if this value is a long name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short name. + However, if this name collides with another shortcut or you wish to manually specify + the short name, then the ShortName attribute may be specified. + + + + + + + + + + + + + + The short name of the shortcut in 8.3 format. + This attribute should only be set if there is a conflict between generated short names + or the user wants to manually specify the short name. + + + + + + + This attribute can only be set if this Shortcut element is nested under a Component element. + When nested under a Component element, this attribute's value will default to the parent directory. + This attribute's value is the target for a non-advertised shortcut. + This attribute is not valid for advertised shortcuts. + If you specify this value, its value should be a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut. + + + + + + The localizable description for the shortcut. + + + + + The command-line arguments for the shortcut. Note that the resolution of properties + in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the + property already has the intended value when the component owning the shortcut is installed. For example, for the + argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and + the component that owns the shortcut. + + + + + The hotkey for the shortcut. The low-order byte contains the virtual-key code for + the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of + installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a + users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys + for accessibility. + + + + + Identifier reference to Icon element. The Icon identifier should have the same extension + as the file that it points at. For example, a shortcut to an executable (e.g. "my.exe") should reference an Icon with identifier + like "MyIcon.exe" + + + + + Identifier reference to Icon element. + + + + + + + + + The shortcut target will be displayed using the SW_SHOWNORMAL attribute. + + + + + + + The shortcut target will be displayed using the SW_SHOWMINNOACTIVE attribute. + + + + + + + The shortcut target will be displayed using the SW_SHOWMAXIMIZED attribute. + + + + + + + + + Directory identifier (or Property identifier that resolves to a directory) that resolves + to the path of the working directory for the shortcut. + + + + + Specifies if the shortcut should be advertised or not. Note that advertised shortcuts + always point at a particular application, identified by a ProductCode, and should not be shared between applications. + Advertised shortcuts only work for the most recently installed application, and are removed when that application is + removed. The default value is 'no'. + + + + + + The Formatted string providing the full path to the language neutral file containing the MUI Manifest. Generally + authored using [#filekey] form. When this attribute is specified, the DisplayResourceId attribute must also + be provided. + + This attribute is only used on Windows Vista and above. If this attribute is not populated and the install + is running on Vista and above, the value in the Name attribute is used. If this attribute is populated and + the install is running on Vista and above, the value in the Name attribute is ignored. + + + + + + + The display name index for the shortcut. This must be a non-negative number. When this attribute is specified, the + DisplayResourceDll attribute must also be provided. + + This attribute is only used on Windows Vista and above. If this attribute is not specified and the install + is running on Vista and above, the value in the Name attribute is used. If this attribute is specified and + the install is running on Vista and above, the value in the Name attribute is ignored. + + + + + + + The Formatted string providing the full path to the language neutral file containing the MUI Manifest. Generally + authored using [#filekey] form. When this attribute is specified, the DescriptionResourceId attribute must also + be provided. + + This attribute is only used on Windows Vista and above. If this attribute is not specified and the install + is running on Vista and above, the value in the Name attribute is used. If this attribute is provided and + the install is running on Vista and above, the value in the Name attribute is ignored. + + + + + + + The description name index for the shortcut. This must be a non-negative number. When this attribute is specified, + the DescriptionResourceDll attribute must also be populated. + + This attribute is only used on Windows Vista and above. If this attribute is not specified and the install + is running on Vista and above, the value in the Name attribute is used. If this attribute is populated and the + install is running on Vista and above, the value in the Name attribute is ignored. + + + + + + + + + + + + Property values for a shortcut. This element's functionality is available starting with MSI 5.0. + + + + + Unique identifier for MsiShortcutProperty table. If omitted, a stable identifier will be generated from the parent shortcut identifier and Key value. + + + + + A formatted string identifying the property to be set. + + + + + A formatted string supplying the value of the property. + + + + + + + + Sets ACLs on File, Registry, or CreateFolder. When under a Registry element, this cannot be used + if the Action attribute's value is remove or removeKeyOnInstall. This element has no Id attribute. + The table and key are taken from the parent element. + + + + + + + + + + + + + + + + + Bit mask for SPECIFIC_RIGHTS_ALL from WinNT.h (0x0000FFFF). + + + + + + + + + + + + For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent. + + + + + For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent. + + + + + + + + Bit mask for FILE_ALL_ACCESS from WinNT.h (0x001F01FF). + + + + + + + + + + + + + + + + specifying this will fail to grant read access + + + + + + + + Sets ACLs on File, Registry, or CreateFolder. When under a Registry element, this cannot be used + if the Action attribute's value is remove or removeKeyOnInstall. This element is only available + when installing with MSI 5.0. For downlevel support, see the PermissionEx element from the + WixUtilExtension. + + + + + + + + + + + Optional condition that controls whether the permissions are applied. + + + + + + + + Primary key used to identify this particular entry. If this is not specified the parent element's Id attribute + will be used instead. + + + + + + + Security descriptor to apply to parent object. + + + + + + + + + + + + + + Copy or move an existing file on the target machine, or copy a file that is being installed, to another destination. When + this element is nested under a File element, the parent file will be installed, then copied to the specified destination + if the parent component of the file is selected for installation or removal. When this element is nested under + a Component element and no FileId attribute is specified, the file to copy or move must already be on the target machine. + When this element is nested under a Component element and the FileId attribute is specified, the specified file is installed, + then copied to the specified destination if the parent component is selected for installation or removal (use + this option to control the copy of a file in a different component by the parent component's installation state). If the + specified destination directory is the same as the directory containing the original file and the name for the proposed source + file is the same as the original, then no action takes place. + + + + + + Primary key used to identify this particular entry. + + + + + + This attribute cannot be specified if the element is nested under a File element. Set this attribute's value to the identifier + of a file from a different component to copy it based on the install state of the parent component. + + + + + + + This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set + this value to the source directory from which to copy or move an existing file on the target machine. This Directory must + exist in the installer database at creation time. This attribute cannot be specified in conjunction with SourceProperty. + + + + + + + This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set + this value to a property that will have a value that resolves to the full path of the source directory (or full path + including file name if SourceName is not specified). The property does not have to exist in the installer database at + creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute + cannot be specified in conjunction with SourceDirectory. + + + + + + + This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set + this value to the localizable name of the file(s) to be copied or moved. All of the files that + match the wild card will be removed from the specified directory. The value is a filename that may also + contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character. If this + attribute is not specified (and this element is not nested under a File element or specify a FileId attribute) then the + SourceProperty attribute should be set to the name of a property that will resolve to the full path of the source filename. + If the value of this attribute contains a "*" wildcard and the DestinationName attribute is specified, all moved or copied + files retain the file names from their sources. + + + + + + + Set this value to the destination directory where an existing file on the target machine should be moved or copied to. This + Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with + DestinationProperty. + + + + + + + Set this value to a property that will have a value that resolves to the full path of the destination directory. The property + does not have to exist in the installer database at creation time; it could be created at installation time by a custom + action, on the command line, etc. This attribute cannot be specified in conjunction with DestinationDirectory. + + + + + + + In prior versions of the WiX toolset, this attribute specified the short file name. + Now set this value to the localizable name to be given to the original file after it is moved or copied. + If this attribute is not specified, then the destination file is given the same name as the source file. + If a short file name is specified, the DestinationShortName attribute may not be specified. + If a long file name is specified, the DestinationLongName attribute may not be specified. + Also, if this value is a long file name, the DestinationShortName attribute may be omitted to + allow WiX to attempt to generate a unique short file name. + However, if this name collides with another file or you wish to manually specify + the short file name, then the DestinationShortName attribute may be specified. + + + + + + + + + + + + + + The short file name of the file in 8.3 format. + This attribute should only be set if there is a conflict between generated short file names + or you wish to manually specify the short file name. + + + + + + + This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. In other + cases, if the attribute is not specified, the default value is "no" and the file is copied, not moved. Set the value to "yes" + in order to move the file (thus deleting the source file) instead of copying it. + + + + + + + + + File specification for File table, must be child node of Component. + + + + How To: Add a file to your installer + + + + + + + + Used to configure the ACLs for this file. + + + + + Can also configure the ACLs for this file. + + + + + Used to create a duplicate of this file elsewhere. + + + + + Target of the shortcut will be set to this file. + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + The unique identifier for this File element. If you omit Id, it defaults to the file name portion of the Source attribute, if specified. May be referenced as a Property by specifying [#value]. + + + + + + Set this attribute to make this file a companion child of another file. The installation + state of a companion file depends not on its own file versioning information, but on the versioning of its + companion parent. A file that is the key path for its component can not be a companion file (that means + this attribute cannot be set if KeyPath="yes" for this file). The Version attribute cannot be set along + with this attribute since companion files are not installed based on their own version. + + + + + + In prior versions of the WiX toolset, this attribute specified the short file name. + This attribute's value may now be either a short or long file name. + If a short file name is specified, the ShortName attribute may not be specified. + If a long file name is specified, the LongName attribute may not be specified. + Also, if this value is a long file name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short file name. + However, if this name collides with another file or you wish to manually specify + the short file name, then the ShortName attribute may be specified. + Finally, if this attribute is omitted then its default value is the file name portion + of the Source attribute, if one is specified, or the value of the Id attribute, if + the Source attribute is omitted or doesn't contain a file name. + + + + + + + + + + + + + Set to yes in order to force this file to be the key path for the parent component. + + + + + + The short file name of the file in 8.3 format. + This attribute should only be set if there is a conflict between generated short file names + or the user wants to manually specify the short file name. + + + + + + + Set to yes in order to have the file's read-only attribute set when it is installed on the target machine. + + + + + Set to yes in order to have the file's hidden attribute set when it is installed on the target machine. + + + + + Set to yes in order to have the file's system attribute set when it is installed on the target machine. + + + + + If a file is vital, then installation cannot proceed unless the file is successfully installed. The user will have no option to ignore an error installing this file. If an error occurs, they can merely retry to install the file or abort the installation. The default is "yes," unless the -sfdvital switch (candle.exe) or SuppressFileDefaultVital property (.wixproj) is used. + + + + + This attribute should be set to "yes" for every executable file in the installation that has a valid checksum stored in the Portable Executable (PE) file header. Only those files that have this attribute set will be verified for valid checksum during a reinstall. + + + + + Sets the file's source type compression. A setting of "yes" or "no" will override the setting in the Word Count Summary Property. + + + + + A list of paths, separated by semicolons, that represent the paths to be searched to find the imported DLLs. The list is usually a list of properties, with each property enclosed inside square brackets. The value may be set to an empty string. Including this attribute will cause an entry to be generated for the file in the BindImage table. + + + + + The cost of registering the file in bytes. This must be a non-negative number. Including this attribute will cause an entry to be generated for the file in the SelfReg table. + + + + + Causes an entry to be generated for the file in the Font table with no FontTitle specified. This attribute is intended to be used to register the file as a TrueType font. + + + + + Causes an entry to be generated for the file in the Font table with the specified FontTitle. This attribute is intended to be used to register the file as a non-TrueType font. + + + + + This is the default language of this file. The linker will replace this value from the value in the file if the suppress files option is not used. + + + + + This is the default size of this file. The linker will replace this value from the value in the file if the suppress files option is not used. + + + + + This is the default version of this file. The linker will replace this value from the value in the file if the suppress files option is not used. + + + + + + + Specifies if this File is a Win32 Assembly or .NET Assembly that needs to be installed into the + Global Assembly Cache (GAC). If the value is '.net' or 'win32', this file must also be the key path of the Component. + + + + + + + + The file is a .NET Framework assembly. + + + + + + + The file is not a .NET Framework or Win32 assembly. This is the default value. + + + + + + + The file is a Win32 assembly. + + + + + + + + + + Specifies the file identifier of the manifest file that describes this assembly. + The manifest file should be in the same component as the assembly it describes. + This attribute may only be specified if the Assembly attribute is set to '.net' or 'win32'. + + + + + + + Specifies the file identifier of the application file. This assembly will be isolated + to the same directory as the application file. + If this attribute is absent, the assembly will be installed to the Global Assembly Cache (GAC). + This attribute may only be specified if the Assembly attribute is set to '.net' or 'win32'. + + + + + + Specifies the architecture for this assembly. This attribute should only be used on .NET Framework 2.0 or higher assemblies. + + + + + + + The file is a .NET Framework assembly that is processor-neutral. + + + + + + + The file is a .NET Framework assembly for the x86 processor. + + + + + + + The file is a .NET Framework assembly for the x64 processor. + + + + + + + The file is a .NET Framework assembly for the ia64 processor. + + + + + + + + + + The value of this attribute should correspond to the Id attribute of a Media + element authored elsewhere. By creating this connection between a file and + its media, you set the packaging options to the values specified in the Media + element (values such as compression level, cab embedding, etc...). Specifying + the DiskId attribute on the File element overrides the default DiskId attribute + from the parent Component element. If no DiskId attribute is specified, + the default is "1". This DiskId attribute is ignored when creating a merge module + because merge modules do not have media. + + + + + + Specifies the path to the File in the build process. Overrides default source path set by parent directories and Name attribute. This attribute must be set if no source information can be gathered from parent directories. For more information, see Specifying source files. + + + + + + + + + + + + + This attribute must be set for patch-added files. Each patch should be assigned a different patch group number. Patch groups + numbers must be greater 0 and should be assigned consecutively. For example, the first patch should use PatchGroup='1', the + second patch will have PatchGroup='2', etc... + + + + + + Prevents the updating of the file that is in fact changed in the upgraded image relative to the target images. + + + + + Set to indicate that the patch is non-vital. + + + + + Set if the entire file should be installed rather than creating a binary patch. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Use several of these elements to specify each registry value in a multiString registry value. This element + cannot be used if the Value attribute is specified unless the Type attribute is set to 'multiString'. The + values should go in the text area of the MultiStringValue element. + + + + + + + + + + Used for organization of child RegistryValue elements or to create a registry key + (and optionally remove it during uninstallation). + + + + How To: Read a registry entry during installation + How To: Write a registry entry during installation + + + + + + + + + ACL permission + + + + + Can also configure the ACLs for this registry key. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be + generated by hashing the parent Component identifier, Root, Key, and Name. + + + + + + + The Action attribute has been deprecated. In most cases, you can simply omit @Action. If you need to force Windows Installer + to create an empty key or recursively delete the key, use the ForceCreateOnInstall or ForceDeleteOnUninstall attributes instead. + + + + + + + + Creates the key, if absent, when the parent component is installed. + + + + + + + Creates the key, if absent, when the parent component is installed then remove the key with all its values and subkeys when the parent component is uninstalled. + Note that this value is useful only if your program creates additional values or subkeys under this key and you want an uninstall to remove them. MSI already + removes all values and subkeys that it creates, so this option just adds additional overhead to uninstall. + + + + + + + Does nothing; this element is used merely in WiX authoring for organization and does nothing to the final output. + This is the default value. + + + + + + + + + + Set this attribute to 'yes' to create an empty key, if absent, when the parent component is installed. + This value is needed only to create an empty key with no subkeys or values. Windows Installer creates + keys as needed to store subkeys and values. The default is "no". + + + + + + + Set this attribute to 'yes' to remove the key with all its values and subkeys when the parent component is uninstalled. + Note that this value is useful only if your program creates additional values or subkeys under this key and you want an uninstall to remove them. MSI already + removes all values and subkeys that it creates, so this option just adds additional overhead to uninstall. + The default is "no". + + + + + + + The localizable key for the registry value. + If the parent element is a RegistryKey, this value may be omitted to use the + path of the parent, or if its specified it will be appended to the path of the parent. + + + + + + + The predefined root key for the registry value. + + + + + + + + + Used to create a registry value. For multi-string values, this can be used to prepend or append values. + + For legacy authoring: Use several of these elements to specify each registry value in a multiString registry value. This element + cannot be used if the Value attribute is specified unless the Type attribute is set to 'multiString'. The + values should go in the text area of the RegistryValue element. + + + + How To: Write a registry entry during installation + + + + + + + + Can also configure the ACLs for this registry value. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be + generated by hashing the parent Component identifier, Root, Key, and Name. + + + + + + + The predefined root key for the registry value. + + + + + + + The localizable key for the registry value. + If the parent element is a RegistryKey, this value may be omitted to use the + path of the parent, or if its specified it will be appended to the path of the parent. + + + + + + + The localizable registry value name. If this attribute is not provided the default value for the registry key will + be set instead. The Windows Installer allows several special values to be set for this attribute. You should not + use them in WiX. Instead use appropriate values in the Action attribute to get the desired behavior. + + + + + + + Set this attribute to the localizable registry value. This value is formatted. The Windows Installer allows + several special values to be set for this attribute. You should not use them in WiX. Instead use appropriate + values in the Type attribute to get the desired behavior. + + + + + + + + Set this attribute to the type of the desired registry key. This attribute must be specified whenever the Value + attribute or a child RegistryValue element is specified. This attribute + should only be set when the value of the Action attribute does not include the word 'remove'. + + + + + + + + The value is interpreted and stored as a string (REG_SZ). + + + + + + + The value is interpreted and stored as an integer (REG_DWORD). + + + + + + + The value is interpreted and stored as a hexadecimal value (REG_BINARY). + + + + + + + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + + + + + The value is interpreted and stored as a multiple strings (REG_MULTI_SZ). + Please note that this value will only result in a multi-string value if there is more than one registry value + or the Action attribute's value is 'append' or 'prepend'. Otherwise a string value will be created. + + + + + + + + + + This is the action that will be taken for this registry value. + + + + + + + + Appends the specified value(s) to a multiString registry value. + + + + + + + Prepends the specified value(s) to a multiString registry value. + + + + + + + Writes a registry value. This is the default value. + + + + + + + + + + Set this attribute to 'yes' to make this registry key the KeyPath of the parent component. + Only one resource (registry, file, etc) can be the KeyPath of a component. + + + + + + + + + Used for removing registry keys and all child keys either during install or uninstall. + + + + + + + + + + + Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be + generated by hashing the parent Component identifier, Root, Key, and Name. + + + + + + + This is the action that will be taken for this registry value. + + + + + + + + Removes a key with all its values and subkeys when the parent component is installed. + + + + + + + Removes a key with all its values and subkeys when the parent component is uninstalled. + + + + + + + + + + The localizable key for the registry value. + + + + + + + The predefined root key for the registry value. + + + + + + + + + Used to remove a registry value during installation. + There is no standard way to remove a single registry value during uninstall (but you can remove an entire key with RemoveRegistryKey). + + + + + + + + + + Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be + generated by hashing the parent Component identifier, Root, Key, and Name. + + + + + + + The localizable key for the registry value. + If the parent element is a RegistryKey, this value may be omitted to use the + path of the parent, or if its specified it will be appended to the path of the parent. + + + + + + + The localizable registry value name. If this attribute is not provided the default value for the registry key will + be set instead. The Windows Installer allows several special values to be set for this attribute. You should not + use them in WiX. Instead use appropriate values in the Action attribute to get the desired behavior. + + + + + + + The predefined root key for the registry value. + + + + + + + + + + + + + + + + + + Can also configure the ACLs for this registry key. + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Primary key used to identify this particular entry. If this attribute is not specified, an identifier will be + generated by hashing the parent Component identifier, Root, Key, and Name. + + + + + + + This is the action that will be taken for this registry key. + + + + + + + + Appends the specified value(s) to a multiString registry key. + + + + + + + Creates the key, if absent, when the parent component is installed. + + + + + + + Creates the key, if absent, when the parent component is installed then remove the key with all its values and subkeys when the parent component is uninstalled. + + + + + + + Prepends the specified value(s) to a multiString registry key. + + + + + + + Removes a registry name when the parent component is installed. + + + + + + + Removes a key with all its values and subkeys when the parent component is installed. + + + + + + + Removes a key with all its values and subkeys when the parent component is uninstalled. + + + + + + + Writes a registry value. + + + + + + + + + The localizable key for the registry value. + + + + + + Set this attribute to 'yes' to make this registry key the KeyPath of the parent component. Only one resource (registry, + file, etc) can be the KeyPath of a component. + + + + + + + The localizable registry value name. If this attribute is not provided the default value for the registry key will + be set instead. The Windows Installer allows several special values to be set for this attribute. You should not + use them in WiX. Instead use appropriate values in the Action attribute to get the desired behavior. + + + + + + + The predefined root key for the registry value. + + + + + + + Set this attribute to the type of the desired registry key. This attribute must be specified whenever the Value + attribute or a child RegistryValue element is specified. This attribute + should only be set when the value of the Action attribute does not include the word 'remove'. + + + + + + + + The value is interpreted and stored as a string (REG_SZ). + + + + + + + The value is interpreted and stored as an integer (REG_DWORD). + + + + + + + The value is interpreted and stored as a hexadecimal value (REG_BINARY). + + + + + + + The value is interpreted and stored as an expandable string (REG_EXPAND_SZ). + + + + + + + The value is interpreted and stored as a multiple strings (REG_MULTI_SZ). + Please note that this value will only result in a multi-string value if there is more than one registry value + or the Action attribute's value is 'append' or 'prepend'. Otherwise a string value will be created. + + + + + + + + + + Set this attribute to the localizable registry value. This value is formatted. The Windows Installer allows + several special values to be set for this attribute. You should not use them in WiX. Instead use appropriate + values in the Type attribute to get the desired behavior. This attribute cannot be specified if the Action + attribute's value contains the word 'remove'. + + + + + + + + + + + + + Remove a file(s) if the parent component is selected for installation or removal. Multiple files can be removed + by specifying a wildcard for the value of the Name attribute. By default, the source + directory of the file is the directory of the parent component. This can be overridden by specifying the + Directory attribute with a value corresponding to the Id of the source directory, or by specifying the Property + attribute with a value corresponding to a property that will have a value that resolves to the full path + to the source directory. + + + + + + Primary key used to identify this particular entry. + + + + + + Overrides the directory of the parent component with a specific Directory. This Directory must exist in the + installer database at creation time. This attribute cannot be specified in conjunction with the Property attribute. + + + + + + + Overrides the directory of the parent component with the value of the specified property. The property + should have a value that resolves to the full path of the source directory. The property does not have + to exist in the installer database at creation time; it could be created at installation time by a custom + action, on the command line, etc. This attribute cannot be specified in conjunction with the Directory attribute. + + + + + + + This value should be set to the localizable name of the file(s) to be removed. All of the files that + match the wild card will be removed from the specified directory. The value is a filename that may also + contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character. + In prior versions of the WiX toolset, this attribute specified the short file name. + This attribute's value may now be either a short or long file name. + If a short file name is specified, the ShortName attribute may not be specified. + If a long file name is specified, the LongName attribute may not be specified. + Also, if this value is a long file name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short file name. + However, if you wish to manually specify the short file name, then the ShortName attribute may be specified. + + + + + + + + + + + + + + The short file name of the file in 8.3 format. + This attribute should only be set if you want to manually specify the short file name. + + + + + + + This value determines the time at which the file(s) may be removed. For 'install', the file will + be removed only when the parent component is being installed (msiInstallStateLocal or + msiInstallStateSource); for 'uninstall', the file will be removed only when the parent component + is being removed (msiInstallStateAbsent); for 'both', the file will be removed in both cases. + + + + + + + + + + + + + Remove an empty folder if the parent component is selected for installation or removal. By default, the folder + is the directory of the parent component. This can be overridden by specifying the Directory attribute + with a value corresponding to the Id of the directory, or by specifying the Property attribute with a value + corresponding to a property that will have a value that resolves to the full path of the folder. + + + + + + Primary key used to identify this particular entry. + + + + + + Overrides the directory of the parent component with a specific Directory. This Directory must exist in the + installer database at creation time. This attribute cannot be specified in conjunction with the Property attribute. + + + + + + + Overrides the directory of the parent component with the value of the specified property. The property + should have a value that resolves to the full path of the source directory. The property does not have + to exist in the installer database at creation time; it could be created at installation time by a custom + action, on the command line, etc. This attribute cannot be specified in conjunction with the Directory attribute. + + + + + + + This value determines the time at which the folder may be removed, based on the install/uninstall of the parent component. + For 'install', the folder will be removed only when the parent component is being installed (msiInstallStateLocal or + msiInstallStateSource); for 'uninstall', the folder will be removed only when the parent component + is being removed (msiInstallStateAbsent); for 'both', the folder will be removed in both cases. + + + + + + + + + + + + Create folder as part of parent Component. + + + + + + Non-advertised shortcut to this folder, Shortcut Target is preset to the folder + + + + + ACL permission + + + + + Can also configure the ACLs for this folder. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Identifier of Directory to create. Defaults to Directory of parent Component. + + + + + + + Optional way for defining AppData, generally used for complex CDATA. + + + + + + Qualified published component for parent Component + + + + + + + + + + + + A string GUID that represents the category of components being grouped together. + + + + + A text string that qualifies the value in the Id attribute. A qualifier is used to distinguish multiple forms of the same Component, such as a Component that is implemented in multiple languages. + + + + + An optional localizable text describing the category. The string is commonly parsed by the application and can be displayed to the user. It should describe the category. + + + + + Feature that controls the advertisement of the category. Defaults to the primary Feature for the parent Component . + + + + + + + + MIME content-type for an Extension + + + + + + + + + Whether this MIME is to be advertised. The default is to match whatever the parent extension element uses. If the parent element is not advertised, then this element cannot be advertised either. + + + + + This is the identifier for the MIME content. It is commonly written in the form of type/format. + + + + + Class ID for the COM server that is to be associated with the MIME content. + + + + + If 'yes', become the content type for the parent Extension. The default value is 'no'. + + + + + + + + Verb definition for an Extension. When advertised, this element creates a row in the + Verb table. + When not advertised, this element creates the appropriate rows in Registry table. + + + + + + + + + + The verb for the command. + + + + + The localized text displayed on the context menu. + + + + + Value for the command arguments. Note that the resolution of properties in the + Argument field is limited. A property formatted as [Property] in this field can only be resolved if the property + already has the intended value when the component owning the verb is installed. For example, for the argument + "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and the + component that owns the verb. + + + + + The sequence of the commands. Only verbs for which the Sequence is specified + are used to prepare an ordered list for the default value of the shell key. The Verb with the lowest value in this + column becomes the default verb. Used only for Advertised verbs. + + + + + + + + + + + + + Either this attribute or the TargetProperty attribute must be specified for a non-advertised verb. + The value should be the identifier of the target file to be executed for the verb. + + + + + + + Either this attribute or the TargetFile attribute must be specified for a non-advertised verb. + The value should be the identifier of the property which will resolve to the path to the target file to be executed for the verb. + + + + + + + + + Extension for a Component + + + + + + + + + + + MIME and Verbs can be associated with Extensions + + + + + + + This is simply the file extension, like "doc" or "xml". Do not include the preceding period. + + + + + The MIME type that is to be written. + + + + + Whether this extension is to be advertised. The default is "no". + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Register a type library (TypeLib). Please note that in order to properly use this + non-advertised, you will need use this element with Advertise='no' and also author the + appropriate child Interface elements by extracting them from the type library itself. + + + + + + + + + + + + + + + The GUID that identifes the type library. + + + + + + Value of 'yes' will create a row in the TypeLib table. + Value of 'no' will create rows in the Registry table. + The default value is 'no'. + + + + + + + Value of 'yes' means the type library describes controls, and should not be displayed in type browsers intended for nonvisual objects. + This attribute can only be set if Advertise='no'. + + + + + + + The cost associated with the registration of the type library in bytes. This attribute cannot be set if Advertise='no'. + + + + + + The localizable description of the type library. + + + + + + Value of 'yes' means the type library exists in a persisted form on disk. This attribute can only be set if Advertise='no'. + + + + + + The identifier of the Directory element for the help directory. + + + + + + Value of 'yes' means the type library should not be displayed to users, although its use is not restricted. + Should be used by controls. Hosts should create a new type library that wraps the control with extended properties. + This attribute can only be set if Advertise='no'. + + + + + + The language of the type library. This must be a non-negative integer. + + + + + The major version of the type library. The value should be an integer from 0 - 255. + + + + + The minor version of the type library. The value should be an integer from 0 - 255. + + + + + The resource id of a typelib. The value is appended to the end of the typelib path in the registry. + + + + + + Value of 'yes' means the type library is restricted, and should not be displayed to users. This attribute can only be set if Advertise='no'. + + + + + + + + + ProgId registration for parent Component. If ProgId has an associated Class, it must be a child of that element. + + + + + + + + + + + + + The version-independent ProgId must be the first child element of actual ProgId. Nesting other ProgId elements within the Version-independent ProgId will create COM+ aliases, see http://support.microsoft.com/kb/305745 for more information. + + + + + Extensions that refer to this ProgId + + + + + + + + For an advertised ProgId, the Id of an Icon element. For a non-advertised ProgId, this is the Id of a file containing an icon resource. + + + + + + + Specifies that the associated ProgId should not be opened by users. The value is presented as a warning to users. An empty string is also valid for this attribute. + + + + + + + + Application ID containing DCOM information for the associated application GUID. + If this element is nested under a Fragment, Module, or Product element, it must be + advertised. + + + + + + When being used in unadvertised mode, the attributes in the AppId element correspond to registry keys + as follows (values that can be specified in authoring are in bold): + IdIn General + [HKCR\AppID\{Id}]Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}]ActivateAtStorageIn General + [HKCR\AppID\{Id}] + ActivateAtStorage="ActivateAtStorage" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + ActivateAtStorage="Y" + DescriptionIn General + [HKCR\AppID\{Id}] + @="Description" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + @="My AppId Description" + DllSurrogateIn General + [HKCR\AppID\{Id}] + DllSurrogate="DllSurrogate" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + DllSurrogate="C:\surrogate.exe" + LocalServiceIn General + [HKCR\AppID\{Id}] + LocalService="LocalService" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + LocalService="MyServiceName" + RemoteServerNameIn General + [HKCR\AppID\{Id}] + RemoteServerName="RemoteServerName" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + RemoteServerName="MyRemoteServer" + RunAsInteractiveUserIn General + [HKCR\AppID\{Id}] + RunAs="RunAsInteractiveUser" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + RunAs="Interactive User" + ServiceParametersIn General + [HKCR\AppID\{Id}] + ServiceParameters="ServiceParameters" + Specific Example + [HKCR\AppID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + ServiceParameters="-param" + + + + + + + + + + + Set this value to 'yes' to configure the client to activate on the same system as persistent storage. + + + + + + + Set this value to 'yes' in order to create a normal AppId table row. Set this value to 'no' in order to + generate Registry rows that perform similar registration (without the often problematic Windows Installer + advertising behavior). + + + + + + + Set this value to the description of the AppId. It can only be specified when the AppId is not being advertised. + + + + + + + Set this value to specify that the class is a DLL that is to be activated in a surrogate EXE + process, and the surrogate process to be used is the path of a surrogate EXE file specified by the value. + + + + + + + Set this value to the AppID GUID that corresponds to the named executable. + + + + + + + Set this value to the name of a service to allow the object to be installed as a Win32 service. + + + + + + + Set this value to the name of the remote server to configure the client to request the object + be run at a particular machine whenever an activation function is called for which a COSERVERINFO + structure is not specified. + + + + + + + Set this value to 'yes' to configure a class to run under the identity of the user currently + logged on and connected to the interactive desktop when activated by a remote client without + being written as a Win32 service. + + + + + + + Set this value to the parameters to be passed to a LocalService on invocation. + + + + + + + + COM Class registration for parent Component. + + + + + + + + When being used in unadvertised mode, the attributes in the Class element correspond to registry keys + as follows (values that can be specified in authoring are in bold): + Id/Context/ServerIn General + [HKCR\CLSID\{Id}\Context1] + @="[!Server]" + [HKCR\CLSID\{Id}\Context2] + @="[!Server]" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer] + @="[!comserv.dll]" + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32] + @="[!comserv.dll]" + Id/Context/ForeignServerIn General + [HKCR\CLSID\{Id}\Context1] + @="ForeignServer" + [HKCR\CLSID\{Id}\Context2] + @="ForeignServer" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer] + @="mscoree.dll" + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32] + @="mscoree.dll" + AppIdIn General + [HKCR\CLSID\{Id}] + AppId="{AppId}" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + AppId="{00000000-89AB-0000-0123-000000000000}" + ArgumentIn General + [HKCR\CLSID\{Id}\Context] + @="[!Server] Argument" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32] + @="[!comserv.dll] /arg1 /arg2 /arg3"ControlIn General + Value "yes" specified: + [HKCR\CLSID\{Id}\Control] + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Control] + DescriptionIn General + [HKCR\CLSID\{Id}] + @="Description" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}] + @="Description of Example COM Component" + HandlerIn General + Value "1" specified: + [HKCR\CLSID\{Id}\InprocHandler] + @="ole.dll" + Value "2" specified: + [HKCR\CLSID\{Id}\InprocHandler32] + @="ole32.dll" + Value "3" specified: + [HKCR\CLSID\{Id}\InprocHandler] + @="ole.dll" + [HKCR\CLSID\{Id}\InprocHandler32] + @="ole32.dll" + Other value specified: + [HKCR\CLSID\{Id}\InprocHandler32] + @="Handler" + Specific Example (for other value) + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\InprocHandler32] + @="handler.dll" + Icon/IconIndexThis is not currently handled properly.InsertableIn General + Value "no" specified: + [HKCR\CLSID\{Id}\NotInsertable] + Value "yes" specified: + [HKCR\CLSID\{Id}\Insertable] + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Insertable] + ProgrammableIn General + Value "yes" specified: + [HKCR\CLSID\{Id}\Programmable] + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Programmable] + RelativePathUnsupported. Please contribute this back to WiX if you know.SafeForInitializingIn General + Value "yes" specified: + [HKCR\CLSID\{Id}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}] + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}] + SafeForScriptingIn General + Value "yes" specified: + [HKCR\CLSID\{Id}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}] + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}] + ThreadingModelIn General + [HKCR\CLSID\{Id}\Context] + ThreadingModel="ThreadingModel" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\LocalServer32] + ThreadingModel="Apartment" + TypeLibId (from parent TypeLib/@Id)In General + [HKCR\CLSID\{Id}\TypeLib] + @="{TypeLibId}" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\TypeLib] + @="{11111111-89AB-1111-0123-111111111111}" + VersionIn General + [HKCR\CLSID\{Id}\Version] + @="Version" + Specific Example + [HKCR\CLSID\{01234567-89AB-CDEF-0123-456789ABCDEF}\Version] + @="1.0.0.0" + + + + + + + + A ProgId associated with Class must be a child element of the Class element + + + + + + These Interfaces will be registered with the parent Class and TypeLib (if present). + + + + + + The Class identifier (CLSID) of a COM server. + + + + + + The server context(s) for this COM server. This attribute is optional for VB6 libraries that are marked "PublicNotCreateable". + Class elements marked Advertised must specify at least one server context. It is most common for there to be a single value + for the Context attribute. + + + + + + + + + + A 16-bit local server application. + + + + + + + A 32-bit local server application. + + + + + + + A 16-bit in-process server DLL. + + + + + + + A 32-bit in-process server DLL. + + + + + + + + + + + Localized description associated with the Class ID and Program ID. + + + + + + This attribute is only allowed when a Class is advertised. Using this attribute will reference an Application ID + containing DCOM information for the associated application GUID. The value must correspond to an AppId/@Id of an + AppId element nested under a Fragment, Module, or Product element. To associate an AppId with a non-advertised + class, nest the class within a parent AppId element. + + + + + + + The file providing the icon associated with this CLSID. Reference to an Icon element + (should match the Id attribute of an Icon element). This is currently not supported if the + value of the Advertise attribute is "no". + + + + + + Icon index into the icon file. + + + + + + The default inproc handler. May be optionally provided only for Context = LocalServer or + LocalServer32. Value of "1" creates a 16-bit InprocHandler (appearing as the InprocHandler + value). Value of "2" creates a 32-bit InprocHandler (appearing as the InprocHandler32 value). + Value of "3" creates 16-bit as well as 32-bit InprocHandlers. A non-numeric value is treated + as a system file that serves as the 32-bit InprocHandler (appearing as the InprocHandler32 value). + + + + + + + This column is optional only when the Context column is set to "LocalServer" + or "LocalServer32" server context. The text is registered as the argument against + the OLE server and is used by OLE for invoking the server. Note that the resolution + of properties in the Argument field is limited. A property formatted as [Property] in + this field can only be resolved if the property already has the intended value when + the component owning the class is installed. For example, for the argument "[#MyDoc.doc]" + to resolve to the correct value, the same process must be installing the file MyDoc.doc and the + component that owns the class. + + + + + + + When the value is "yes", the bare file name can be used for COM servers. The installer + registers the file name only instead of the complete path. This enables the server in + the current directory to take precedence and allows multiple copies of the same component. + + + + + + + Set this value to "yes" in order to create a normal Class table row. Set this value to + "no" in order to generate Registry rows that perform similar registration (without the + often problematic Windows Installer advertising behavior). + + + + + + + + Threading model for the CLSID. + + + + + + + + + + + + + + + + + Version for the CLSID. + + + + + + + Specifies the CLSID may be insertable. + + + + + + + Specifies the CLSID may be programmable. + + + + + + + May only be specified if the value of the Advertise attribute is "no" and Server has not been specified. In addition, it may only + be used when the Class element is directly under the Component element. The value can be + that of an registry type (REG_SZ). This attribute should be used to specify foreign servers, such as mscoree.dll if needed. + + + + + + + May only be specified if the value of the Advertise attribute is "no" and the ForeignServer attribute is not specified. File Id of the + COM server file. If this element is nested under a File element, this value defaults to + the value of the parent File/@Id. + + + + + + + Specifies whether or not to use the short path for the COM server. This can only apply when Advertise is set to 'no'. The default is 'no' meaning that it will use the long file name for the COM server. + + + + + + + May only be specified if the value of the Advertise attribute is "no". + + + + + + + May only be specified if the value of the Advertise attribute is "no". + + + + + + + Set this attribute's value to 'yes' to identify an object as an ActiveX Control. The default value is 'no'. + + + + + + + + COM Interface registration for parent TypeLib. + + + + + + + + GUID identifier for COM Interface. + + + + + Name for COM Interface. + + + + + Identifies the interface from which the current interface is derived. + + + + + GUID CLSID for proxy stub to COM Interface. + + + + + GUID CLSID for 32-bit proxy stub to COM Interface. + + + + + Number of methods implemented on COM Interface. + + + + + Determines whether a Typelib version entry should be created with the other COM Interface registry keys. Default is 'yes'. + + + + + + + FileType data for class Id registration. + + + + + Offset into file. If positive, offset is from the beginning; if negative, offset is from the end. + + + + + Hex value that is AND'd against the bytes in the file at Offset. + + + + + If the result of the AND'ing of Mask with the bytes in the file is Value, the file is a match for this File Type. + + + + + + + + Service or group of services that must start before the parent service. + + + + + + + + + + The value of this attribute should be one of the following: + The name (not the display name) of a previously installed service.The name of a service group (in which case the Group attribute must be set to 'yes'). + + + + + + Set to 'yes' to indicate that the value in the Id attribute is the name of a group of services. + + + + + + + + + Adds services for parent Component. Use the ServiceControl element to remove services. + + + + + The service executable installed will point to the KeyPath for the Component. + Therefore, you must ensure that the correct executable is either the first child + File element under this Component or explicitly mark the appropriate File element + as KeyPath='yes'. + + + + + + + + Configures the ACLs for this service. + + + + + Ordered list of dependencies when installing services. + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Unique identifier for this service configuration. This value will default to the Name attribute if not + specified. + + + + + + This column is the string that gives the service name to install. + + + + + This column is the localizable string that user interface programs use to identify the service. + + + + + The Windows Installer does not currently support kernelDriver or systemDriver. + + + + + + + A Win32 service that runs its own process. + + + + + + + A Win32 service that shares a process. + + + + + + + A kernel driver service. This value is not currently supported by the Windows Installer. + + + + + + + A file system driver service. This value is not currently supported by the Windows Installer. + + + + + + + + + Whether or not the service interacts with the desktop. + + + + + Determines when the service should be started. The Windows Installer does not support boot or system. + + + + + + + The service will start during startup of the system. + + + + + + + The service will start when the service control manager calls the StartService function. + + + + + + + The service can no longer be started. + + + + + + + The service is a device driver that will be started by the operating system boot loader. This value is not currently supported by the Windows Installer. + + + + + + + The service is a device driver that will be started by the IoInitSystem function. This value is not currently supported by the Windows Installer. + + + + + + + + + Determines what action should be taken on an error. + + + + + + + Logs the error and continues with the startup operation. + + + + + + + Logs the error, displays a message box and continues the startup operation. + + + + + + + Logs the error if it is possible and the system is restarted with the last configuration known to be good. If the last-known-good configuration is being started, the startup operation fails. + + + + + + + + + The overall install should fail if this service fails to install. + + + + + The load ordering group that this service should be a part of. + + + + + The account under which to start the service. Valid only when ServiceType is ownProcess. + + + + + The password for the account. Valid only when the account has a password. + + + + + Contains any command line arguments or properties required to run the service. + + + + + Sets the description of the service. + + + + + Determines whether the existing service description will be ignored. If 'yes', the service description will be null, even if the Description attribute is set. + + + + + + + + Argument used in ServiceControl parent + + + + + + + + + + Starts, stops, and removes services for parent Component. This element is used to control the state + of a service installed by the MSI or MSM file by using the start, stop and remove attributes. + For example, Start='install' Stop='both' Remove='uninstall' would mean: start the service on install, + remove the service when the product is uninstalled, and stop the service both on install and uninstall. + + + + + + + + + + Ordered list of arguments used when modifying services. + + + + + + + Name of the service. + + + + + + Specifies whether the service should be started by the StartServices action on install, uninstall or both. + For 'install', the service will be started only when the parent component is being installed (msiInstallStateLocal or + msiInstallStateSource); for 'uninstall', the service will be started only when the parent component + is being removed (msiInstallStateAbsent); for 'both', the service will be started in both cases. + + + + + + + Specifies whether the service should be stopped by the StopServices action on install, uninstall or both. + For 'install', the service will be stopped only when the parent component is being installed (msiInstallStateLocal or + msiInstallStateSource); for 'uninstall', the service will be stopped only when the parent component + is being removed (msiInstallStateAbsent); for 'both', the service will be stopped in both cases. + + + + + + + Specifies whether the service should be removed by the DeleteServices action on install, uninstall or both. + For 'install', the service will be removed only when the parent component is being installed (msiInstallStateLocal or + msiInstallStateSource); for 'uninstall', the service will be removed only when the parent component + is being removed (msiInstallStateAbsent); for 'both', the service will be removed in both cases. + + + + + + Specifies whether or not to wait for the service to complete before continuing. The default is 'yes'. + + + + + + + + Privilege required by service configured by ServiceConfig parent. Valid values are a privilege constant or a + Formatted property that resolves to a privilege constant. + + + + + + + + + + Configures a service being installed or one that already exists. This element's functionality is available starting with MSI 5.0. + + + + + + + + + + List of privileges to apply to service. + + + + + + + Unique identifier for this service configuration. This value will default to the ServiceName attribute if not + specified. + + + + + + + This attribute specifies whether an auto-start service should delay its start until after all other auto-start + services. This attribute only affects auto-start services. Allowed values are "yes", "no" or a Formatted property that + resolves to "1" (for "yes") or "0" (for "no"). If this attribute is not present the setting is not configured. + + + + + + + This attribute specifies when failure actions should be applied. Allowed values are "failedToStop", "failedToStopOrReturnedError" + or a Formatted property that resolves to "1" (for "failedToStopOrReturnedError") or "0" (for "failedToStop"). If this attribute + is not present the setting is not configured. + + + + + + + This attribute specifies time in milliseconds that the Service Control Manager (SCM) waits after notifying the service of a system + shutdown. If this attribute is not present the default value, 3 minutes, is used. + + + + + + + Specifies whether to configure the service when the parent Component is installed. This attribute may be combined with OnReinstall + and OnUninstall. + + + + + + + Specifies whether to configure the service when the parent Component is reinstalled. This attribute may be combined with OnInstall + and OnUninstall. + + + + + + + Specifies whether to configure the service when the parent Component is uninstalled. This attribute may be combined with OnInstall + and OnReinstall. + + + + + + + Specifies the name of the service to configure. This value will default to the ServiceInstall/@Name attribute when nested under + a ServiceInstall element. + + + + + + + Specifies the service SID to apply to the service. Valid values are "none", "restricted", "unrestricted" or a Formatted property + that resolves to "0" (for "none"), "3" (for "restricted") or "1" (for "unrestricted"). If this attribute is not present the + setting is not configured. + + + + + + + + Failure action for a ServiceConfigFailureActions element. + + + + + + Specifies the action to take when the service fails. Valid values are "none", "restartComputer", "restartService", "runCommand" or a Formatted property + that resolves to "0" (for "none"), "1" (for "restartService"), "2" (for "restartComputer") or "3" (for "runCommand"). + + + + + + + Specifies the time in milliseconds to wait before performing the value from the Action attribute. + + + + + + + + + Configures the failure actions for a service being installed or one that already exists. This element's functionality is available starting with MSI 5.0. + + + + + + + + + + Ordered list of failure actions to apply to service. + + + + + + + Unique identifier for this service configuration. This value will default to the ServiceName attribute if not + specified. + + + + + + + This attribute specifies command to execute when a "runCommand" failure action hit. If an empty string is provided it clears + the existing command. If this attribute is not present the setting is not changed. + + + + + + + Specifies whether to configure the service when the parent Component is installed. This attribute may be combined with OnReinstall + and OnUninstall. + + + + + + + Specifies whether to configure the service when the parent Component is reinstalled. This attribute may be combined with OnInstall + and OnUninstall. + + + + + + + Specifies whether to configure the service when the parent Component is uninstalled. This attribute may be combined with OnInstall + and OnReinstall. + + + + + + + Specifies the message to show for a reboot failure action. If an empty string is provided it clears any existing reboot message. If this + attribute is not present the setting is not changed. + + + + + + + Specifies the time in seconds to reset the failure count. If this attribute is not present the failure count will not be reset. + + + + + + + Specifies the name of the service to configure. This value will default to the ServiceInstall/@Name attribute when nested under + a ServiceInstall element. + + + + + + + + + Environment variables added or removed for the parent component. + + + + + + + + + Unique identifier for environment entry. + + + + + Name of the environment variable. + + + + + + The value to set into the environment variable. + If this attribute is not set, the environment variable is removed during installation if it exists on the machine. + + + + + + Optional attribute to change the separator used between values. By default a semicolon is used. + + + + + Specfies whether the environmental variable should be created, set or removed when the parent component is installed. + + + + + + Creates the environment variable if it does not exist, then set it during installation. This has no effect on the value of the environment variable if it already exists. + + + + + Creates the environment variable if it does not exist, and then set it during installation. If the environment variable exists, set it during the installation. + + + + + + Removes the environment variable during an installation. + The installer only removes an environment variable during an installation if the name and value + of the variable match the entries in the Name and Value attributes. + If you want to remove an environment variable, regardless of its value, do not set the Value attribute. + + + + + + + + + + + + + This value is the entire environmental variable. This is the default. + + + + + + + This value is prefixed. + + + + + + + This value is appended. + + + + + + + + + Specifies that the environment variable should not be removed on uninstall. + + + + + + Specifies that the environment variable should be added to the system environment space. The default + is 'no' which indicates the environment variable is added to the user environment space. + + + + + + + + + Conditions for components, controls, features, and products. The condition is specified in the inner text of the element. + + + + + + + How To: Block installation based on OS version + How To: Check the version number of a file during installation + + + + + + + + Under a Component element, the condition becomes the condition of the component. Under a Control element, + the condition becomes a ControlCondition entry. Under a Feature element, the condition becomes a Condition + entry. Under a Fragment or Product element, the condition becomes a LaunchCondition entry. + + + + + + Used only under Control elements and is required. Allows specific actions to be applied to a control based + on the result of this condition. + + + + + + + + Set the Control as the default. Only used under Control elements. + + + + + + + Enable the Control. Only used under Control elements. + + + + + + + Disable the Control. Only used under Control elements. + + + + + + + Hide the Control. Only used under Control elements. + + + + + + + Display the Control. Only used under Control elements. + + + + + + + + + + Used only under Feature elements and is required. Allows modifying the level of a Feature based on the + result of this condition. + + + + + + + Used only under Fragment or Product elements and is required. Set the value to the text to display when the + condition fails and the installation must be terminated. + + + + + + + + + + + Shared Component to be privately replicated in folder of parent Component + + + + + + + + + Shared Component for this application Component. + + + + + + + + Disk cost to reserve in a folder for running locally and/or from source. + + + + + + + + + A primary key that uniquely identifies this ReserveCost entry. + + + + + + Adds the amount of disk space specified in RunFromSource or RunLocal to the volume cost of the device containing the directory. + If this attribute is not set, it will default to the directory of parent component. + + + + + + The number of bytes of disk space to reserve if the component is installed to run from source. + + + + + The number of bytes of disk space to reserve if the component is installed to run locally. + + + + + + + Component for parent Directory + + + + + + + How To: Add a file to your installer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + + Component identifier; this is the primary key for identifying components. If omitted, + the compiler defaults the identifier to the identifier of the resource that is the + explicit keypath of the component (for example, a child File element with KeyPath + attribute with value 'yes'. + + + + + + + Set this attribute to create a ComPlus entry. The value should be the export flags used + during the generation of the .msi file. For more information see the COM+ documentation + in the Platform SDK. + + + + + + + Set this attribute to 'yes' in order to disable registry reflection on all existing and + new registry keys affected by this component. + When set to 'yes', the Windows Installer calls the RegDisableReflectionKey on each key + being accessed by the component. + This bit is available with Windows Installer version 4.0 and is ignored on 32-bit systems. + + + + + + + Sets the Directory of the Component. If this element is nested under a Directory element, + this value defaults to the value of the parent Directory/@Id. + + + + + + + This attribute provides a default DiskId attribute for all child File elements. Specifying + the DiskId on a Component element will override any DiskId attributes set by parent Directory + or DirectoryRef elements. See the File element's DiskId attribute for more information about + the purpose of the DiskId. + + + + + + + Identifies a feature to which this component belongs, as a shorthand for a child + ComponentRef element of the Feature element. The value of this attribute should + correspond to the Id attribute of a Feature element authored elsewhere. Note that + a single component can belong to multiple features but this attribute allows you + to specify only a single feature. + + + + + + + This value should be a guid that uniquely identifies this component's contents, language, platform, and version. + If omitted, the default value is '*' which indicates that the linker should generate a stable guid. + Generatable guids are supported only for components with a single file as the component's keypath + or no files and a registry value as the keypath. + It's also possible to set the value to an empty string to specify an unmanaged component. + Unmanaged components are a security vulnerability because the component cannot be removed or repaired + by Windows Installer (it is essentially an unpatchable, permanent component). Therefore, a guid should + always be specified for any component which contains resources that may need to be patched in the future. + + + + + + + If this attribute's value is set to 'yes', then the Directory of this Component is used + as the KeyPath. To set a Registry value or File as the KeyPath of a component, set the + KeyPath attribute to 'yes' on one of those child elements. If KeyPath is not set to 'yes' for the + Component or for a child Registry value or File, WiX will look at the child elements under the + Component in sequential order and try to automatically select one of them as a key path. Allowing + WiX to automatically select a key path can be dangerous because adding or removing child elements + under the Component can inadvertantly cause the key path to change, which can lead to + installation problems. + + + + + + + Optional value that specifies the location that the component can be run from. + + + + + + + + Prevents the component from running from the source or the network (this is the default behavior if this attribute is not set). + + + + + + + Enforces that the component can only be run from the source (it cannot be run from the user's computer). + + + + + + + Allows the component to run from source or locally. + + + + + + + + + + If this attribute is set to 'yes', a new Component/@Guid will be generated for each + instance transform. Ensure that all of the resources contained in a multi-instance + Component will be installed to different paths based on the instance Property; otherwise, + the Component Rules will be violated. + + + + + + + If this attribute is set to 'yes', the installer does not install or reinstall the + component if a key path file or a key path registry entry for the component already + exists. The application does register itself as a client of the component. Use this + flag only for components that are being registered by the Registry table. Do not use + this flag for components registered by the AppId, Class, Extension, ProgId, MIME, and + Verb tables. + + + + + + + If this attribute is set to 'yes', the installer does not remove the component during + an uninstall. The installer registers an extra system client for the component in + the Windows Installer registry settings (which basically just means that at least one + product is always referencing this component). Note that this option differs from the + behavior of not setting a guid because although the component is permanent, it is still + patchable (because Windows Installer still tracks it), it's just not uninstallable. + + + + + + + If this attribute's value is set to 'yes', enables advanced patching semantics for + Components that are shared across multiple Products. Specifically, the Windows Installer + will cache the shared files to improve patch uninstall. This functionality is available + in Windows Installer 4.5 and later. + + + + + + + If this attribute's value is set to 'yes', the installer increments the reference count + in the shared DLL registry of the component's key file. If this bit is not set, the + installer increments the reference count only if the reference count already exists. + + + + + + + If this attribute is set to 'yes', the installer reevaluates the value of the statement + in the Condition upon a reinstall. If the value was previously False and has changed to + True, the installer installs the component. If the value was previously True and has + changed to False, the installer removes the component even if the component has other + products as clients. + + + + + + + If this attribute is set to 'yes', the installer will uninstall the Component's files + and registry keys when it is superseded by a patch. This functionality is available in + Windows Installer 4.5 and later. + + + + + + + Set this attribute to 'yes' to mark this as a 64-bit component. This attribute facilitates + the installation of packages that include both 32-bit and 64-bit components. If this is a 64-bit + component replacing a 32-bit component, set this attribute to 'yes' and assign a new GUID in the Guid attribute. + The 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'. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Groups together multiple components to be used in other locations. + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Identifier for the ComponentGroup. + + + + + + Sets the default directory identifier for child Component elements. + + + + + + + Used to set the default file system source for child Component elements. For more information, see + Specifying source files. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a ComponentGroup in another Fragment. + + + + + + + + The identifier of the ComponentGroup to reference. + + + + + + Set this attribute to 'yes' in order to make the parent feature of this component + the primary feature for this component. Components may belong to multiple features. + By designating a feature as the primary feature of a component, you ensure that + whenever a component is selected for install-on-demand (IOD), the primary feature + will be the one to install it. This attribute should only be set if a component + actually nests under multiple features. If a component nests under only one feature, + that feature is the primary feature for the component. You cannot set more than one + feature as the primary feature of a given component. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Used only for PatchFamilies to include all changes between the baseline and upgraded packages in a patch. + + + Warning: this is intended for testing purposes only. Shipping a patch with all changes negates the benefits of using patch families for including only specific changes. + Because changing the ProductCode is not supported in a patch, the ProductCode property is automatically removed from the transform. + + + + + + + Used only for PatchFamilies to include only a binary table entry in a patch. + + + + + The identifier of the Binary element to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Used only for PatchFamilies to include only a icon table entry in a patch. + + + + + The identifier of the Icon element to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a Feature element in another Fragment. + + + How To: Add a file to your installer + + + + + + The identifier of the Component element to reference. + + + + + + Set this attribute to 'yes' in order to make the parent feature of this component + the primary feature for this component. Components may belong to multiple features. + By designating a feature as the primary feature of a component, you ensure that + whenever a component is selected for install-on-demand (IOD), the primary feature + will be the one to install it. This attribute should only be set if a component + actually nests under multiple features. If a component nests under only one feature, + that feature is the primary feature for the component. You cannot set more than one + feature as the primary feature of a given component. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + How To: Install the Visual C++ Redistributable with your installer + + Merge directive to bring in a merge module that will be redirected to the parent directory. + + + + + + Data to use as input to a configurable merge module. + + + + + + The unique identifier for the Merge element in the source code. Referenced by the MergeRef/@Id. + + + + + The value of this attribute should correspond to the Id attribute of a + Media element authored elsewhere. By creating this connection between the merge module and Media + element, you set the packaging options to the values specified in the Media + element (values such as compression level, cab embedding, etc...). + + + + + Specifies if the files in the merge module should be compressed. + + + + + Specifies the decimal LCID or localization token for the language to merge the Module in as. + + + + + Path to the source location of the merge module. + + + + + + + + + + + + + + + + How To: Install the Visual C++ Redistributable with your installer + + Merge reference to connect a Merge Module to parent Feature + + + + + The unique identifier for the Merge element to be referenced. + + + + + Specifies whether the feature containing this MergeRef is the primary feature for advertising the merge module's components. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Data to use as input to a configurable merge module. + + + + + Name of the item in the ModuleConfiguration table. + + + + + Value to be passed to configurable merge module. + + + + + + + Directory layout for the product. Also specifies the mappings between source and target directories. + + + + How To: Add a file to your installer + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + This value is the unique identifier of the directory entry. + + + + + + The Component Guid Generation Seed is a guid that must be used when a Component with the generate guid directive ("*") + is not rooted in a standard Windows Installer directory (for example, ProgramFilesFolder or CommonFilesFolder). + It is recommended that this attribute be avoided and that developers install their Components under standard + directories with unique names instead (for example, "ProgramFilesFolder\Company Name Product Name Version"). It is + important to note that once a directory is assigned a Component Guid Generation Seed the value must not change until + (and must be changed when) the path to that directory, including itself and all parent directories, changes. + + + + + + + Sets the default disk identifier for the files contained in this directory. + This attribute's value may be overridden by a child Component, Directory, + Merge or File element. See the File or Merge elements' DiskId attribute for + more information. + + + + + + Used to set the file system source for this directory's child elements. For more information, see Specifying source files. + + + + + + + + + + + + + + + + + + + + The name of the directory. + + Do not specify this attribute (or the LongName attribute) if this directory represents + the same directory as the parent (see the Windows Installer SDK's + Directory table + topic for more information about the "." operator). + + In prior versions of the WiX toolset, this attribute specified the short directory name. + This attribute's value may now be either a short or long directory name. + If a short directory name is specified, the ShortName attribute may not be specified. + If a long directory name is specified, the LongName attribute may not be specified. + Also, if this value is a long directory name, the ShortName attribute may be omitted to + allow WiX to attempt to generate a unique short directory name. + However, if this name collides with another directory or you wish to manually specify + the short directory name, then the ShortName attribute may be specified. + + + + + + + The short name of the directory in 8.3 format. + This attribute should only be set if there is a conflict between generated short directory names + or the user wants to manually specify the short directory name. + + + + + + + The short name of the directory on the source media in 8.3 format. + This attribute should only be set if there is a conflict between generated short directory names + or the user wants to manually specify the short source directory name. + + + + + + + The name of the directory on the source media. + If this attribute is not specified, Windows Installer will default to the Name attribute. + + In prior versions of the WiX toolset, this attribute specified the short source directory name. + This attribute's value may now be either a short or long directory name. + If a short directory name is specified, the ShortSourceName attribute may not be specified. + If a long directory name is specified, the LongSource attribute may not be specified. + Also, if this value is a long directory name, the ShortSourceName attribute may be omitted to + allow WiX to attempt to generate a unique short directory name. + However, if this name collides with another directory or you wish to manually specify + the short directory name, then the ShortSourceName attribute may be specified. + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a Directory element in another Fragment. + + + How To: Add a file to your installer + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + The identifier of the Directory element to reference. + + + + + + Sets the default disk identifier for the files contained in this directory. + This attribute's value may be overridden by a child Component, Directory, + Merge or File element. See the File or Merge elements' DiskId attribute for + more information. + + + + + + Used to set the file system source for this DirectoryRef's child elements. For more information, see Specifying source files. + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + + + + + Specifies the lower bound on the range of product versions to be detected by FindRelatedProducts. + + + + + Specifies the upper boundary of the range of product versions detected by FindRelatedProducts. + + + + + Specifies the set of languages detected by FindRelatedProducts. Enter a list of numeric language identifiers (LANGID) separated by commas (,). Leave this value null to specify all languages. Set ExcludeLanguages to "yes" in order detect all languages, excluding the languages listed in this value. + + + + + The installer sets the REMOVE property to features specified in this column. The features to be removed can be determined at run time. The Formatted string entered in this field must evaluate to a comma-delimited list of feature names. For example: [Feature1],[Feature2],[Feature3]. No features are removed if the field contains formatted text that evaluates to an empty string. The installer sets REMOVE=ALL only if the Remove field is empty. + + + + + When the FindRelatedProducts action detects a related product installed on the system, it appends the product code to the property specified in this field. Windows Installer documentation for the Upgrade table states that the property specified in this field must be a public property and must be added to the SecureCustomProperties property. WiX automatically appends the property specified in this field to the SecureCustomProperties property when creating an MSI. Each UpgradeVersion must have a unique Property value. After the FindRelatedProducts action is run, the value of this property is a list of product codes, separated by semicolons (;), detected on the system. + + + + + Set to "yes" to migrate feature states from upgraded products by enabling the logic in the MigrateFeatureStates action. + + + + + Set to "yes" to detect products and applications but do not uninstall. + + + + + Set to "yes" to continue installation upon failure to remove a product or application. + + + + + Set to "no" to make the range of versions detected exclude the value specified in Minimum. This attribute is "yes" by default. + + + + + Set to "yes" to make the range of versions detected include the value specified in Maximum. + + + + + Set to "yes" to detect all languages, excluding the languages listed in the Language attribute. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + Upgrade info for a particular UpgradeCode + + + + + + + + + + + + Nesting a Property element under an Upgrade element has been deprecated. + Please nest Property elements in any of the other supported locations. + + + + + + + This value specifies the upgrade code for the products that are to be detected by the FindRelatedProducts action. + + + + + + + + A feature for the Feature table. Features are the smallest installable unit. See msi.chm for more + detailed information on the myriad installation options for a feature. + + + + + How To: Add a file to your installer + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Unique identifier of the feature. + + + + + + This attribute determines if a user will have the option to set a feature to absent in the user interface. + + + + + + + + Allows the user interface to display an option to change the feature state to Absent. + + + + + + + Prevents the user interface from displaying an option to change the feature state + to Absent by setting the msidbFeatureAttributesUIDisallowAbsent attribute. This will force the feature + to the installation state, whether or not the feature is visible in the UI. + + + + + + + + + + This attribute determines the possible advertise states for this feature. + + + + + + + + Prevents this feature from being advertised by setting the msidbFeatureAttributesDisallowAdvertise attribute. + + + + + + + Prevents advertising for this feature if the operating system shell does not support Windows Installer + descriptors by setting the msidbFeatureAttributesNoUnsupportedAdvertise attribute. + + + + + + + Allows the feature to be advertised. + + + + + + + + + + Specify the Id of a Directory that can be configured by the user at installation time. This identifier + must be a public property and therefore completely uppercase. + + + + + + + Longer string of text describing the feature. This localizable string is displayed by the + Text Control of the Selection Dialog. + + + + + + + Determines the initial display of this feature in the feature tree. + This attribute's value should be one of the following: + collapseInitially shows the feature collapsed. This is the default value.expandInitially shows the feature expanded.hiddenPrevents the feature from displaying in the user interface.<an explicit integer value> + For advanced users only, it is possible to directly set the integer value + of the display value that will appear in the Feature row. + + + + + + + This attribute determines the default install/run location of a feature. This attribute cannot be specified + if the value of the FollowParent attribute is 'yes' since that would ask the installer to force this feature + to follow the parent installation state and simultaneously favor a particular installation state just for this feature. + + + + + + + + Forces the feature to follow the same installation state as its parent feature. + + + + + + + Favors installing this feature locally by setting the msidbFeatureAttributesFavorLocal attribute. + + + + + + + Favors running this feature from source by setting the msidbFeatureAttributesFavorSource attribute. + + + + + + + + + + Sets the install level of this feature. A value of 0 will disable the feature. Processing the + Condition Table can modify the level value (this is set via the Condition child element). The + default value is "1". + + + + + + + Short string of text identifying the feature. This string is listed as an item by the + SelectionTree control of the Selection Dialog. + + + + + + + This attribute determines the default advertise state of the feature. + + + + + + + + Sets the feature to be advertised by setting the msidbFeatureAttributesFavorAdvertise attribute. + This value cannot be set if the value of the AllowAdvertise attribute is 'no' since that would ask the installer to + disallow the advertised state for this feature while at the same time favoring it. + + + + + + + Sets the feature to the default non-advertised installation option. + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Groups together multiple components, features, and merges to be used in other locations. + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + Identifier for the FeatureGroup. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a FeatureGroup in another Fragment. + + + + + + + + The identifier of the FeatureGroup to reference. + + + + + + Normally feature group references that end up nested under a parent element create a + connection to that parent. This behavior is undesirable when trying to simply reference + to a FeatureGroup in a different Fragment. Specify 'yes' to have this feature group + reference not create a connection to its parent. The default is 'no'. + + + + + + + Set this attribute to 'yes' in order to make the parent feature of this group + the primary feature for any components and merges contained in the group. + Features may belong to multiple features. By designating a feature as the + primary feature of a component or merge, you ensure that whenever a component is + selected for install-on-demand (IOD), the primary feature will be the one to install + it. This attribute should only be set if a component actually nests under multiple + features. If a component nests under only one feature, that feature is the primary + feature for the component. You cannot set more than one feature as the primary + feature of a given component. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Create a reference to a Feature element in another Fragment. + + + + + + + + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + The identifier of the Feature element to reference. + + + + + + Normally feature references that are nested under a parent element create a connection to that + parent. This behavior is undesirable when trying to simply reference a Feature in a different + Fragment. Specify 'yes' to have this feature reference not create a connection to its parent. + The default is 'no'. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + Media element describes a disk that makes up the source media for the installation. + + + + + + + + + + + + + + + Disk identifier for Media table. This number must be equal to or greater than 1. + + + + + The name of the cabinet if some or all of the files stored on the media are in a cabinet file. If no cabinets are used, this attribute must not be set. + + + + + + Indicates the compression level for the Media's cabinet. This attribute can + only be used in conjunction with the Cabinet attribute. The default is 'mszip'. + + + + + + The disk name, which is usually the visible text printed on the disk. This localizable text is used to prompt the user when this disk needs to be inserted. This value will be used in the "[1]" of the DiskPrompt Property. Using this attribute will require you to define a DiskPrompt Property. + + + + + Instructs the binder to embed the cabinet in the product if 'yes'. This attribute can only be specified in conjunction with the Cabinet attribute. + + + + + + This attribute specifies the root directory for the uncompressed files that + are a part of this Media element. By default, the src will be the output + directory for the final image. The default value ensures the binder generates + an installable image. If a relative path is specified in the src attribute, + the value will be appended to the image's output directory. If an absolute + path is provided, that path will be used without modification. The latter two + options are provided to ease the layout of an image onto multiple medias (CDs/DVDs). + + + + + + + + + + + + + + The label attributed to the volume. This is the volume label returned + by the GetVolumeInformation function. If the SourceDir property refers + to a removable (floppy or CD-ROM) volume, then this volume label is + used to verify that the proper disk is in the drive before attempting + to install files. The entry in this column must match the volume label + of the physical media. + + + + + + + Optional property that identifies the source of the embedded cabinet. + If a cabinet is specified for a patch, this property should be defined + and unique to each patch so that the embedded cabinet containing patched + and new files can be located in the patch package. If the cabinet is not + embedded - this is not typical - the cabinet can be found in the directory + referenced in this column. If empty, the external cabinet must be located + in the SourceDir directory. + + + + + + + + + MediaTeplate element describes information to automatically assign files to cabinets. + A maximumum number of cabinets created is 999. + + + + + + + Templated name of the cabinet if some or all of the files stored on the media are in + a cabinet file. This name must begin with either a letter or an underscore, contain + maximum of five characters and {0} in the cabinet name part and must end three character extension. + The default is cab{0}.cab. + + + + + + + Indicates the compression level for the Media's cabinet. This attribute can + only be used in conjunction with the Cabinet attribute. The default is 'mszip'. + + + + + + + + + + + + + + + + The disk name, which is usually the visible text printed on the disk. This localizable text is used + to prompt the user when this disk needs to be inserted. This value will be used in the "[1]" of the + DiskPrompt Property. Using this attribute will require you to define a DiskPrompt Property. + + + + + + Instructs the binder to embed the cabinets in the product if 'yes'. + + + + + + The label attributed to the volume. This is the volume label returned + by the GetVolumeInformation function. If the SourceDir property refers + to a removable (floppy or CD-ROM) volume, then this volume label is + used to verify that the proper disk is in the drive before attempting + to install files. The entry in this column must match the volume label + of the physical media. + + + + + + + Size of uncompressed files in each cabinet, in megabytes. WIX_MUMS environment variable + can be used to override this value. Default value is 200 MB. + + + + + + + Maximum size of cabinet files in megabytes for large files. This attribute is used for packaging + files that are larger than MaximumUncompressedMediaSize into smaller cabinets. If cabinet size + exceed this value, then setting this attribute will cause the file to be split into multiple + cabinets of this maximum size. For simply controlling cabinet size without file splitting use + MaximumUncompressedMediaSize attribute. Setting this attribute will disable smart cabbing feature + for this Fragment / Product. Setting WIX_MCSLFS environment variable can be used to override this + value. Minimum allowed value of this attribute is 20 MB. Maximum allowed value and the Default + value of this attribute is 2048 MB (2 GB). + + + + + + + + + This element has been deprecated. + Use the Binary/@SuppressModularization, CustomAction/@SuppressModularization, or Property/@SuppressModularization attributes instead. + + + + + + + The name of the item to ignore modularization for. + + + + + + + The type of the item to ignore modularization for. + + + + + + + + + + + + + + + + + + + + + Specifies a custom action to be added to the MSI CustomAction table. Various combinations of the attributes for this element + correspond to different custom action types. For more information about custom actions see the + + Custom Action Types topic on MSDN. + + + + + + + + The text node is only valid if the Script attribute is specified. In that case, the text node contains the script to embed. + + + + + + The identifier of the custom action. + + + + + + + + This attribute is a reference to a Binary element with matching Id attribute. That binary stream contains + the custom action for use during install. The custom action will not be installed into a target directory. This attribute is + typically used with the DllEntry attribute to specify the custom action DLL to use for a type 1 custom action, with the ExeCommand + attribute to specify a type 17 custom action that runs an embedded executable, or with the VBScriptCall or JScriptCall attributes + to specify a type 5 or 6 custom action. + + + + + + + This attribute specifies a reference to a File element with matching Id attribute that + will execute the custom action code in the file after the file is installed. This + attribute is typically used with the ExeCommand attribute to specify a type 18 custom action + that runs an installed executable, with the DllEntry attribute to specify an installed custom + action DLL to use for a type 17 custom action, or with the VBScriptCall or JScriptCall + attributes to specify a type 21 or 22 custom action. + + + + + + + This attribute specifies a reference to a Property element with matching Id attribute that specifies the Property + to be used or updated on execution of this custom action. This attribute is + typically used with the Value attribute to create a type 51 custom action that parses + the text in Value and places it into the specified Property. This attribute is also used with + the ExeCommand attribute to create a type 50 custom action that uses the value of the + given property to specify the path to the executable. Type 51 custom actions are often useful to + pass values to a deferred custom action. + See + http://msdn.microsoft.com/library/aa370543.aspx + for more information. + + + + + + + This attribute specifies a reference to a Directory element with matching Id attribute containing a directory path. + This attribute is typically used with the ExeCommand attribute to specify the source executable for a type 34 + custom action, or with the Value attribute to specify a formatted string to place in the specified Directory + table entry in a type 35 custom action. + + + + + + + + This attribute specifies the name of a function in a custom action to execute. + This attribute is used with the BinaryKey attribute to create a type 1 custom + action, or with the FileKey attribute to create a type 17 custom action. + + + + + + + This attribute specifies the command line parameters to supply to an externally + run executable. This attribute is typically used with the BinaryKey attribute for a type 2 custom action, + the FileKey attribute for a type 18 custom action, the Property attribute for a type 50 custom action, + or the Directory attribute for a type 34 custom action that specify the executable to run. + + + + + + + This attribute specifies the name of the JScript function to execute in a script. The script must be + provided in a Binary element identified by the BinaryKey attribute described above. In other words, this + attribute must be specified in conjunction with the BinaryKey attribute. + + + + + + + This attribute specifies the name of the VBScript Subroutine to execute in a script. The script must be + provided in a Binary element identified by the BinaryKey attribute described above. In other words, this + attribute must be specified in conjunction with the BinaryKey attribute. + + + + + + + Creates a type 37 or 38 custom action. The text of the element should contain the script to be embedded in the package. + + + + + + + + + + + + + Use to suppress modularization of this custom action name in merge modules. + This should only be necessary for table-driven custom actions because the + table name which they interact with cannot be modularized, so there can only + be one instance of the table. + + + + + + + This attribute specifies a string value to use in the custom action. This attribute + must be used with the Property attribute to set the property as part of a + type 51 custom action or with the Directory attribute to set a directory path in that + table in a type 35 custom action. The value can be a literal value or derived from a + Property element using the Formatted + syntax. + + + + + + + This attribute specifies an index in the MSI Error table to use as an error message for a + type 19 custom action that displays the error message and aborts a product's installation. + + + + + + + + Set this attribute to set the return behavior of the custom action. + + + + + + + + Indicates that the custom action will run asyncronously and execution may continue after the installer terminates. + + + + + + + Indicates that the custom action will run asynchronously but the installer will wait for the return code at sequence end. + + + + + + + Indicates that the custom action will run synchronously and the return code will be checked for success. This is the default. + + + + + + + Indicates that the custom action will run synchronously and the return code will not be checked. + + + + + + + + + + This attribute indicates the scheduling of the custom action. + + + + + + + + Indicates that the custom action will run after successful completion of the installation script (at the end of the installation). + + + + + + + Indicates that the custom action runs in-script (possibly with elevated privileges). + + + + + + + Indicates that the custom action will only run in the first sequence that runs it. + + + + + + + Indicates that the custom action will run during normal processing time with user privileges. This is the default. + + + + + + + Indicates that the custom action will only run in the first sequence that runs it in the same process. + + + + + + + Indicates that a custom action will run in the rollback sequence when a failure + occurs during installation, usually to undo changes made by a deferred custom action. + + + + + + + Indicates that a custom action should be run a second time if it was previously run in an earlier sequence. + + + + + + + + + + This attribute specifies whether the Windows Installer, which executes as LocalSystem, + should impersonate the user context of the installing user when executing this custom action. + Typically the value should be 'yes', except when the custom action needs elevated privileges + to apply changes to the machine. + + + + + + + This attribute specifies that the Windows Installer, execute the custom action only when + a patch is being uninstalled. These custom actions should also be conditioned using the + MSIPATCHREMOVE property to ensure proper down level (less than Windows Installer 4.5) + behavior. + + + + + + + Specifies that a script custom action targets a 64-bit platform. Valid only when used with + the Script, VBScriptCall, and JScriptCall attributes. + The 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 specifies controls whether the custom action will impersonate the + installing user during per-machine installs on Terminal Server machines. + Deferred execution custom actions that do not specify this attribute, or explicitly set it 'no', + will run with no user impersonation on Terminal Server machines during + per-machine installations. This attribute is only applicable when installing on the + Windows Server 2003 family. + + + + + + Ensures the installer does not log the CustomActionData for the deferred custom action. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + + This will cause the entire contents of the Fragment containing the referenced CustomAction to be + included in the installer database. + + + + + + The identifier of the CustomAction to reference. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + + + + Sets a Directory to a particular value. This is accomplished by creating a Type 51 custom action that is appropriately scheduled in + the InstallUISequence and InstallExecuteSequence. + + + + + + + + The condition that determines whether the Directory is set. If the condition evaluates to false, the SetDirectory is skipped. + + + + + + By default the action is "Set" + Id attribute's value. This optional attribute can override the action name in the case + where multiple SetDirectory elements target the same Id (probably with mutually exclusive conditions). + + + + + + + This attribute specifies a reference to a Directory element with matching Id attribute. The path of the Directory will be set to + the Value attribute. + + + + + + + Controls which sequences the Directory assignment is sequenced in. + For 'execute', the assignment is scheduled in the InstallExecuteSequence. For 'ui', the + assignment is scheduled in the InstallUISequence. For 'both', the assignment is scheduled + in both the InstallUISequence and the InstallExecuteSequence. The default is both. + + + + + + + This attribute specifies a string value to assign to the Directory. The value can be a literal value or derived from a + Property element using the Formatted + syntax. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + + + + + + Sets a Property to a particular value. This is accomplished by creating a Type 51 custom action that is appropriately scheduled in + the InstallUISequence and InstallExecuteSequence. + + + + + + + + The condition that determines whether the Property is set. If the condition evaluates to false, the Set is skipped. + + + + + + By default the action is "Set" + Id attribute's value. This optional attribute can override the action name in the case + where multiple SetProperty elements target the same Id (probably with mutually exclusive conditions). + + + + + + The name of the standard or custom action after which this action should be performed. Mutually exclusive with the Before attribute. A Before or After attribute is required when setting a Property. + + + + + The name of the standard or custom action before which this action should be performed. Mutually exclusive with the After attribute. A Before or After attribute is required when setting a Property. + + + + + + This attribute specifies the Property to set to the Value. + + + + + + + Controls which sequences the Property assignment is sequenced in. + For 'execute', the assignment is scheduled in the InstallExecuteSequence. For 'ui', the + assignment is scheduled in the InstallUISequence. For 'both', the assignment is scheduled + in both the InstallUISequence and the InstallExecuteSequence. The default is both. + + + + + + + This attribute specifies a string value to assign to the Property. The value can be a literal value or derived from a + Property element using the Formatted + syntax. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + + This will cause the entire contents of the Fragment containing the referenced PatchFamily to be + used in the process of creating a patch. + + + + + + The identifier of the PatchFamily to reference. + + + + + Specifies the ProductCode of the product that this family applies to. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + Sets the ProductID property to the full product identifier. This action must be sequenced before the user interface wizard in the InstallUISequence table and before the RegisterUser action in the InstallExecuteSequence table. If the product identifier has already been validated successfully, the ValidateProductID action does nothing. The ValidateProductID action always returns a success, whether or not the product identifier is valid, so that the product identifier can be entered on the command line the first time the product is run. The product identifier can be validated without having the user reenter this information by setting the PIDKEY property on the command line or by using a transform. The display of the dialog box requesting the user to enter the product identifier can then be made conditional upon the presence of the ProductID property, which is set when the PIDKEY property is validated. The condition for this action may be specified in the element's inner text. + + + + + + + + + + Initiates the internal installation costing process. Any standard or custom actions that affect costing should be sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action. Then call the CostFinalize action following the CostInitialize action to make all final cost calculations available to the installer through the Component table. The condition for this action may be specified in the element's inner text. + + + + + + + + + + Initiates dynamic costing of standard installation actions. Any standard or custom actions that affect costing should sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action. Then call the CostFinalize action following the FileCost action to make all final cost calculations available to the installer through the Component table. The CostInitialize action must be executed before the FileCost action. The installer then determines the disk-space cost of every file in the File table, on a per-component basis, taking both volume clustering and the presence of existing files that may need to be overwritten into account. All actions that consume or release disk space are also considered. If an existing file is found, a file version check is performed to determine whether the new file actually needs to be installed or not. If the existing file is of an equal or greater version number, the existing file is not overwritten and no disk-space cost is incurred. In all cases, the installer uses the results of version number checking to set the installation state of each file. The FileCost action initializes cost calculation with the installer. Actual dynamic costing does not occur until the CostFinalize action is executed. The condition for this action may be specified in the element's inner text. + + + + + + + + + Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe). This isolates the application from other copies of the component that may be installed to a shared location on the computer. The action refers to each record of the IsolatedComponent table and associates the files of the component listed in the Component_Shared field with the component listed in the Component_Application field. The installer installs the files of Component_Shared into the same directory as Component_Application. The installer generates a file in this directory, zero bytes in length, having the short filename name of the key file for Component_Application (typically this is the same file name as the .exe) appended with .local. The IsolatedComponent action does not affect the installation of Component_Application. Uninstalling Component_Application also removes the Component_Shared files and the .local file from the directory. The IsolateComponents action can be used only in the InstallUISequence table and the InstallExecuteSequence table. This action must come after the CostInitialize action and before the CostFinalize action. The condition for this action may be specified in the element's inner text. + + + + + + + + + + Ends the internal installation costing process begun by the CostInitialize action. Any standard or custom actions that affect costing should be sequenced before the CostInitialize action. Call the FileCost action immediately following the CostInitialize action and then call the CostFinalize action to make all final cost calculations available to the installer through the Component table. The CostFinalize action must be executed before starting any user interface sequence which allows the user to view or modify Feature table selections or directories. The CostFinalize action queries the Condition table to determine which features are scheduled to be installed. Costing is done for each component in the Component table. The CostFinalize action also verifies that all the target directories are writable before allowing the installation to continue. The condition for this action may be specified in the element's inner text. + + + + + + + + Checks for existing ODBC drivers and sets the target directory for each new driver to the location of an existing driver. The condition for this action may be specified in the element's inner text. + + + + + + + + Used for upgrading or installing over an existing application. Reads feature states from existing application and sets these feature states for the pending installation. The condition for this action may be specified in the element's inner text. + + + + + + + + Initiates the execution sequence. The condition for this action may be specified in the element's inner text. + + + + + + + + Verifies that all costed volumes have enough space for the installation. The condition for this action may be specified in the element's inner text. + + + + + + + + + Marks the beginning of a sequence of actions that change the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Ensures the needed amount of space exists in the registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers and unregisters components, their key paths, and the component clients. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the unadvertisement of components listed in the PublishComponent table. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the unadvertisement of CLR and Win32 assemblies that are being removed. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes selection-state and feature-component mapping information from the registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Stops system services. The condition for this action may be specified in the element's inner text. + + + + + + + + Stops a service and removes its registration from the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes COM+ applications from the registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Unregisters all modules listed in the SelfReg table that are scheduled to be uninstalled. The condition for this action may be specified in the element's inner text. + + + + + + + + Unregisters type libraries from the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes the data sources, translators, and drivers listed for removal during the installation. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes registration information about installed fonts from the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes a registry value that has been authored into the registry table if the associated component was installed locally or as run from source, and is now set to be uninstalled. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the removal of COM class information from the system registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the removal of extension-related information from the system registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the unregistration of OLE ProgId information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Unregisters MIME-related registry information from the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes .ini file information specified for removal in the RemoveIniFile table if the component is set to be installed locally or run from source. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the removal of an advertised shortcut whose feature is selected for uninstallation or a nonadvertised shortcut whose component is selected for uninstallation. The condition for this action may be specified in the element's inner text. + + + + + + + + Modifies the values of environment variables. The condition for this action may be specified in the element's inner text. + + + + + + + + Deletes files installed by the DuplicateFiles action. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes files previously installed by the InstallFiles action. The condition for this action may be specified in the element's inner text. + + + + + + + + Removes any folders linked to components set to be removed or run from source. The condition for this action may be specified in the element's inner text. + + + + + + + + Creates empty folders for components that are set to be installed. The condition for this action may be specified in the element's inner text. + + + + + + + + + Locates existing files on the system and moves or copies those files to a new location. The condition for this action may be specified in the element's inner text. + + + + + + + + Copies the product database to the administrative installation point. The condition for this action may be specified in the element's inner text. + + + + + + + + Copies files specified in the File table from the source directory to the destination directory. The condition for this action may be specified in the element's inner text. + + + + + + + + Duplicates files installed by the InstallFiles action. The condition for this action may be specified in the element's inner text. + + + + + + + + Queries the Patch table to determine which patches are to be applied. The condition for this action may be specified in the element's inner text. + + + + + + + + + Binds each executable or DLL that must be bound to the DLLs imported by it. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the creation of shortcuts. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the registration of COM class information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the registration of extension related information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the registration of OLE ProgId information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers MIME-related registry information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Sets up an application's registry information. The condition for this action may be specified in the element's inner text. + + + + + + + + Writes the .ini file information that the application needs written to its .ini files. The condition for this action may be specified in the element's inner text. + + + + + + + + Modifies the values of environment variables. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers installed fonts with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Installs the drivers, translators, and data sources in the ODBCDriver table, ODBCTranslator table, and ODBCDataSource table. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers type libraries with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Processes all modules listed in the SelfReg table and registers all installed modules with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers COM+ applications. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers a service for the system. The condition for this action may be specified in the element's inner text. + + + + + + + + Starts system services. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers the user information with the installer to identify the user of a product. The condition for this action may be specified in the element's inner text. + + + + + + + + Registers the product information with the installer. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the advertisement of the components from the PublishComponent table. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the advertisement of CLR and Win32 assemblies. The condition for this action may be specified in the element's inner text. + + + + + + + + Writes each feature's state into the system registry. The condition for this action may be specified in the element's inner text. + + + + + + + + Manages the advertisement of the product information with the system. The condition for this action may be specified in the element's inner text. + + + + + + + + + Marks the end of a sequence of actions that change the system. The condition for this action may be specified in the element's inner text. + + + + + + + + + + + + + Uses file signatures to search for existing versions of products. The AppSearch action may use this information to determine where upgrades are to be installed. The AppSearch action can also be used to set a property to the existing value of an registry or .ini file entry. AppSearch should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents The AppSearch action from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The AppSearch action searches for file signatures using the CompLocator table first, the RegLocator table next, then the IniLocator table, and finally the DrLocator table. The condition for this action may be specified in the element's inner text. + + + + + + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. The CCPSearch action should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents the CCPSearch action from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The CCPSearch action must come before the RMCCPSearch action. The condition for this action may be specified in the element's inner text. + + + + + + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. The RMCCPSearch action should be authored into the InstallUISequence table and InstallExecuteSequence table. The installer prevents RMCCPSearch from running in the InstallExecuteSequence sequence if the action has already run in InstallUISequence sequence. The RMCCPSearch action requires the CCP_DRIVE property to be set to the root path on the removable volume that has the installation for any of the qualifying products. The condition for this action may be specified in the element's inner text. + + + + + + + + + Queries the LaunchCondition table and evaluates each conditional statement recorded there. If any of these conditional statements fail, an error message is displayed to the user and the installation is terminated. The LaunchConditions action is optional. This action is normally the first in the sequence, but the AppSearch Action may be sequenced before the LaunchConditions action. If there are launch conditions that do not apply to all installation modes, the appropriate installation mode property should be used in a conditional expression in the appropriate sequence table. The condition for this action may be specified in the element's inner text. + + + + + + + + + Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system. When FindRelatedProducts detects a correspondence between the upgrade information and an installed product, it appends the product code to the property specified in the ActionProperty column of the UpgradeTable. The FindRelatedProducts action only runs the first time the product is installed. The FindRelatedProducts action does not run during maintenance mode or uninstallation. FindRelatedProducts should be authored into the InstallUISequence table and InstallExecuteSequence tables. The installer prevents FindRelatedProducts from running in InstallExecuteSequence if the action has already run in InstallUISequence. The FindRelatedProducts action must come before the MigrateFeatureStates action and the RemoveExistingProducts action. The condition for this action may be specified in the element's inner text. + + + + + + + + Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. Should only be used after InstallExecute. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Disables rollback for the remainder of the installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Goes through the product codes listed in the ActionProperty column of the Upgrade table and removes the products in sequence. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Prompts the user to restart the system at the end of installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Prompts the user for a restart of the system during the installation. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. Special actions don't have a built-in sequence number and thus must appear relative to another action. The suggested way to do this is by using the Before or After attribute. InstallExecute and InstallExecuteAgain can optionally appear anywhere between InstallInitialize and InstallFinalize. + + + + + + + + + Use to sequence a custom action. + + + + + + Text node specifies the condition of the action. + + + + The action to which the Custom element applies. + + + + + Mutually exclusive with Before, After, and Sequence attributes + + + + + The name of the standard or custom action before which this action should be performed. Mutually exclusive with OnExit, After, and Sequence attributes + + + + + The name of the standard or custom action after which this action should be performed. Mutually exclusive with Before, OnExit, and Sequence attributes + + + + + + If "yes", the sequencing of this action may be overridden by sequencing elsewhere. + + + + + + The sequence number for this action. Mutually exclusive with Before, After, and OnExit attributes + + + + + + + + + + + + + + mutually exclusive with Before, After, and Sequence attributes + + + + + + + + If "yes", the sequencing of this dialog may be overridden by sequencing elsewhere. + + + + + + + + + + + + + + + + + + + + Use to sequence a custom action. + + + + + Displays a Dialog. + + + + + Prompts the user to restart the system at the end of installation. Not fixed sequence. + + + + + Queries the LaunchCondition table and evaluates each conditional statement recorded there. + + + + + Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system. + + + + + Uses file signatures to search for existing versions of products. + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. + + + + + Sets the ProductID property to the full product identifier. + + + + + Initiates the internal installation costing process. + + + + + Initiates dynamic costing of standard installation actions. + + + + + Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe). + + + + + Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. + + + + + Ends the internal installation costing process begun by the CostInitialize action. + + + + + Used for upgrading or installing over an existing application. + + + + + Initiates the execution sequence. + + + + + + + + + + + + + + + + + Use to sequence a custom action. + + + + + Prompts the user to restart the system at the end of installation. Not fixed sequence. + + + + + Prompts the user for a restart of the system during the installation. Not fixed sequence. + + + + + Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. Not fixed sequence. + + + + + Queries the LaunchCondition table and evaluates each conditional statement recorded there. + + + + + Runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system. + + + + + Uses file signatures to search for existing versions of products. + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. + + + + + Uses file signatures to validate that qualifying products are installed on a system before an upgrade installation is performed. + + + + + Sets the ProductID property to the full product identifier. + + + + + Initiates the internal installation costing process. + + + + + Initiates dynamic costing of standard installation actions. + + + + + Installs a copy of a component (commonly a shared DLL) into a private location for use by a specific application (typically an .exe). + + + + + Ends the internal installation costing process begun by the CostInitialize action. + + + + + Checks for existing ODBC drivers and sets the target directory for each new driver to the location of an existing driver. + + + + + Used for upgrading or installing over an existing application. + + + + + Verifies that all costed volumes have enough space for the installation. + + + + + Marks the beginning of a sequence of actions that change the system. + + + + + Ensures the needed amount of space exists in the registry. + + + + + Registers and unregisters components, their key paths, and the component clients. + + + + + Manages the unadvertisement of components listed in the PublishComponent table. + + + + + Removes selection-state and feature-component mapping information from the registry. + + + + + Stops system services. + + + + + Stops a service and removes its registration from the system. + + + + + Removes COM+ applications from the registry. + + + + + Unregisters all modules listed in the SelfReg table that are scheduled to be uninstalled. + + + + + Unregisters type libraries from the system. + + + + + Removes the data sources, translators, and drivers listed for removal during the installation. + + + + + Removes registration information about installed fonts from the system. + + + + + Removes a registry value that has been authored into the registry table if the associated component was installed locally or as run from source, and is now set to be uninstalled. + + + + + Manages the removal of COM class information from the system registry. + + + + + Manages the removal of extension-related information from the system registry. + + + + + Manages the unregistration of OLE ProgId information with the system. + + + + + Unregisters MIME-related registry information from the system. + + + + + Removes .ini file information specified for removal in the RemoveIniFile table if the component is set to be installed locally or run from source. + + + + + Manages the removal of an advertised shortcut whose feature is selected for uninstallation or a nonadvertised shortcut whose component is selected for uninstallation. + + + + + Modifies the values of environment variables. + + + + + Deletes files installed by the DuplicateFiles action. + + + + + Removes files previously installed by the InstallFiles action. + + + + + Removes any folders linked to components set to be removed or run from source. + + + + + Creates empty folders for components that are set to be installed. + + + + + Locates existing files on the system and moves or copies those files to a new location. + + + + + Copies files specified in the File table from the source directory to the destination directory. + + + + + Duplicates files installed by the InstallFiles action. + + + + + Queries the Patch table to determine which patches are to be applied. + + + + + Binds each executable or DLL that must be bound to the DLLs imported by it. + + + + + Manages the creation of shortcuts. + + + + + Manages the registration of COM class information with the system. + + + + + Manages the registration of extension related information with the system. + + + + + Manages the registration of OLE ProgId information with the system. + + + + + Registers MIME-related registry information with the system. + + + + + Sets up an application's registry information. + + + + + Writes the .ini file information that the application needs written to its .ini files. + + + + + Modifies the values of environment variables. + + + + + Registers installed fonts with the system. + + + + + Installs the drivers, translators, and data sources in the ODBCDriver table, ODBCTranslator table, and ODBCDataSource table. + + + + + Registers type libraries with the system. + + + + + Processes all modules listed in the SelfReg table and registers all installed modules with the system. + + + + + Registers COM+ applications. + + + + + Registers a service for the system. + + + + + Starts system services. + + + + + Registers the user information with the installer to identify the user of a product. + + + + + Registers the product information with the installer. + + + + + Manages the advertisement of the components from the PublishComponent table. + + + + + Writes each feature's state into the system registry. + + + + + Manages the advertisement of the product information with the system. + + + + + Marks the end of a sequence of actions that change the system. + + + + + Goes through the product codes listed in the ActionProperty column of the Upgrade table and removes the products in sequence. + + + + + Disables rollback for the remainder of the installation. + + + + + + Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. + + + + + Runs a script containing all operations spooled since either the start of the installation or the last InstallExecute action, or InstallExecuteAgain action. + + + + + + Manages the advertisement of CLR and Win32 assemblies. + + + + + Manages the unadvertisement of CLR and Win32 assemblies that are being removed. + + + + + + + + + + + + + + + + Use to sequence a custom action. + + + + + + Initiates the internal installation costing process. + + + + + Initiates dynamic costing of standard installation actions. + + + + + Ends the internal installation costing process begun by the CostInitialize action. + + + + + Initiates the execution sequence. + + + + + Verifies that all costed volumes have enough space for the installation. + + + + + Marks the beginning of a sequence of actions that change the system. + + + + + Copies the product database to the administrative installation point. + + + + + Copies files specified in the File table from the source directory to the destination directory. + + + + + Marks the end of a sequence of actions that change the system. + + + + + Queries the LaunchCondition table and evaluates each conditional statement recorded there. + + + + + + + + + + + + + + + + Use to sequence a custom action. + + + + + Initiates the internal installation costing process. + + + + + Initiates dynamic costing of standard installation actions. + + + + + Ends the internal installation costing process begun by the CostInitialize action. + + + + + Verifies that all costed volumes have enough space for the installation. + + + + + Marks the beginning of a sequence of actions that change the system. + + + + + Copies the product database to the administrative installation point. + + + + + Copies files specified in the File table from the source directory to the destination directory. + + + + + Queries the Patch table to determine which patches are to be applied. + + + + + Marks the end of a sequence of actions that change the system. + + + + + Queries the LaunchCondition table and evaluates each conditional statement recorded there. + + + + + Determines the location of the source and sets the SourceDir property if the source has not been resolved yet. + + + + + + + + + + + + + + + + Initiates the internal installation costing process. + + + + + Ends the internal installation costing process begun by the CostInitialize action. + + + + + Use to sequence a custom action. The only custom actions that are allowed in the AdvtExecuteSequence are type 19 (0x013) type 35 (0x023) and type 51 (0x033). + + + + + Verifies that all costed volumes have enough space for the installation. + + + + + Marks the beginning of a sequence of actions that change the system. + + + + + Manages the creation of shortcuts. + + + + + Manages the registration of COM class information with the system. + + + + + Manages the registration of extension related information with the system. + + + + + Registers MIME-related registry information with the system. + + + + + Manages the registration of OLE ProgId information with the system. + + + + + Manages the advertisement of the components from the PublishComponent table. + + + + + Writes each feature's state into the system registry. + + + + + Manages the advertisement of the product information with the system. + + + + + Marks the end of a sequence of actions that change the system. + + + + + + Manages the advertisement of CLR and Win32 assemblies. + + + + + + + + + + Binary data used for CustomAction elements and UI controls. + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + elements at this point in the schema. + + + + + + + The Id cannot by longer than 55 characters. In order to prevent errors in cases where the Id is modularized, it should not be longer than 18 characters. + + + + + Path to the binary file. + + + + + + + + + + + + + Use to suppress modularization of this Binary identifier in merge modules. + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Icon used for Shortcut, ProgId, or Class elements (but not UI controls) + + + + How To: Set your installer's icon in Add/Remove Programs + How To: Create a shortcut on the Start Menu + + + + + + The Id cannot by longer than 55 characters. In order to prevent errors in cases where the Id is modularized, it should not be longer than 18 characters. + + + + + Path to the icon file. + + + + + + + + + + + + + + + + + + + + + + + + + + + Element value is the condition. CDATA may be used to when a condition contains many XML characters + that must be escaped. It is important to note that each EmbeddedChainer element must have a mutually exclusive condition + to ensure that only one embedded chainer will execute at a time. If the conditions are not mutually exclusive the chainer + that executes is undeterministic. + + + + + Unique identifier for embedded chainer. + + + + + Value to append to the transaction handle and passed to the chainer executable. + + + + + + Reference to the Binary element that contains the chainer executable. Mutually exclusive with + the FileSource and PropertySource attributes. + + + + + + + Reference to the File element that is the chainer executable. Mutually exclusive with + the BinarySource and PropertySource attributes. + + + + + + + Reference to a Property that resolves to the full path to the chainer executable. Mutually exclusive with + the BinarySource and FileSource attributes. + + + + + + + + + + + Reference to an EmbeddedChainer element. This will force the entire referenced Fragment's contents + to be included in the installer database. + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + Element value is the condition. Use CDATA if message contains delimiter characters. + + + + + + Specifies extra files to be extracted for use by the embedded UI, such as language resources. + + + + + + + Unique identifier for embedded UI.If this attribute is not specified the Name attribute or the file name + portion of the SourceFile attribute will be used. + + + + + + Embedded UI will not recieve any INSTALLLOGMODE_FATALEXIT messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_ERROR messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_WARNING messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_USER messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_INFO messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_FILESINUSE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_RESOLVESOURCE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_OUTOFDISKSPACE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_ACTIONSTART messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_ACTIONDATA messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_PROGRESS messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_COMMONDATA messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_INITIALIZE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_TERMINATE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_SHOWDIALOG messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_RMFILESINUSE messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_INSTALLSTART messages. + + + + + Embedded UI will not recieve any INSTALLLOGMODE_INSTALLEND messages. + + + + + + The name for the embedded UI DLL when it is extracted from the Product and executed. (Windows Installer + does not support the typical short filename and long filename combination for embedded UI files as it + does for other kinds of files.) If this attribute is not specified the file name portion of the SourceFile + attribute will be used. + + + + + + + Path to the binary file that is the embedded UI. This must be a DLL that exports the following + three entry points: InitializeEmbeddedUI, EmbeddedUIHandler and ShutdownEmbeddedUI. + + + + + + Set yes to allow the Windows Installer to display the embedded UI during basic UI level installation. + + + + + + + + Defines a resource for use by the embedded UI. + + + + + + + + + + Identifier for the embedded UI resource. + + + + + + The name for the resource when it is extracted from the Product for use by the embedded UI DLL. (Windows + Installer does not support the typical short filename and long filename combination for embedded UI files + as it does for other kinds of files.) If this attribute is not specified the Id attribute will be used. + + + + + + Path to the binary file that is the embedded UI resource. + + + + + + + + + + + + + + + Element value is Message, use CDATA if message contains delimiter characters + + + + Number of the error for which a message is being provided. See MSI SDK for error definitions. + + + + + + + + + + + + + + + + + The element value is the optional Condition expression. + + + + + The parent Control for this Publish element, should only be specified when this element is a child of the UI element. + + + + + + + The parent Dialog for this Publish element, should only be specified when this element is a child of the UI element. + This attribute will create a reference to the specified Dialog, so an additional DialogRef is not necessary. + + + + + + + Set this attribute's value to one of the standard control events to trigger that event. + Either this attribute or the Property attribute must be set, but not both at the same time. + + + + + + + This attribute should only need to be set if this element is nested under a UI element in order to + control the order in which this publish event will be started. + If this element is nested under a Control element, the default value will be one greater than any + previous Publish element's order (the first element's default value is 1). + If this element is nested under a UI element, the default value is always 1 (it does not get a + default value based on any previous Publish elements). + + + + + + + Set this attribute's value to a property name to set that property. + Either this attribute or the Event attribute must be set, but not both at the same time. + + + + + + + If the Property attribute is specified, set the value of this attribute to the new value for the property. + To set a property to null, do not set this attribute (the ControlEvent Argument column will be set to '{}'). + Otherwise, this attribute's value should be the argument for the event specified in the Event attribute. + If the event doesn't take an attribute, a common value to use is "0". + + + + + + + + + + + Sets attributes for events in the EventMapping table + + + + + + + + + must be one of the standard control events' + + + + + if not present can only handle enable, disable, hide, unhide events + + + + + + + + An alternative to using the Text attribute when the value contains special XML characters like <, >, or &. + + + + + + + + Instructs the text to be imported from a file instead of the element value during the binding process. + + + + + + + + + + + + + + + + + + + + + + + + Contains the controls that appear on each dialog. + + + + + + alternative to Text attribute when CDATA is needed to escape XML delimiters + + + + + ComboBox table with ListItem children + + + + + ListBox table with ListItem children + + + + + ListView table with ListItem children + + + + + RadioButton table with RadioButton children + + + + + Property table entry for the Property table column associated with this control + + + + + Icon referenced in icon column of row + + + + + child elements affecting operation of this control + + + + Condition to specify actions for this control based on the outcome of the condition. + + + + + + + + + Combined with the Dialog Id to make up the primary key of the Control table. + + + + + The type of the control. Could be one of the following: Billboard, Bitmap, CheckBox, ComboBox, DirectoryCombo, DirectoryList, Edit, GroupBox, Hyperlink, Icon, Line, ListBox, ListView, MaskedEdit, PathEdit, ProgressBar, PushButton, RadioButtonGroup, ScrollableText, SelectionTree, Text, VolumeCostList, VolumeSelectCombo + + + + + Horizontal coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + + + + + Vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number. + + + + + Width of the rectangular boundary of the control. This must be a non-negative number. + + + + + Height of the rectangular boundary of the control. This must be a non-negative number. + + + + + The name of a defined property to be linked to this control. This column is required for active controls. + + + + + A localizable string used to set the initial text contained in a control. This attribute can contain a formatted string that is processed at install time to insert the values of properties using [PropertyName] syntax. Also supported are environment variables, file installation paths, and component installation directories; see Formatted for details. + + + + + This attribute is reserved for future use. There is no need to use this until Windows Installer uses it for something. + + + + + The string used for the Tooltip. + + + + + This attribute is only valid for CheckBox Controls. When set, the linked Property will be set to this value when the check box is checked. + + + + + This attribute is only valid for CheckBox controls. The value is the name of a Property that was already used as the Property for another CheckBox control. The Property attribute cannot be specified. The attribute exists to support multiple checkboxes on different dialogs being tied to the same property. + + + + + + Set this attribute to "yes" to cause this Control to be skipped in the tab sequence. + + + + + Set this attribute to "yes" to cause this Control to be invoked by the return key. + + + + + Set this attribute to "yes" to cause this Control to be invoked by the escape key. + + + + + + Set this attribute to "yes" to cause the Control to be hidden. + + + + + Set this attribute to "yes" to cause the Control to be disabled. + + + + + Set this attribute to "yes" to cause the Control to be sunken. + + + + + Specifies whether the value displayed or changed by this control is referenced indirectly. If this bit is set, the control displays or changes the value of the property that has the identifier listed in the Property column of the Control table. + + + + + Set this attribute to "yes" to cause the linked Property value for the Control to be treated as an integer. Otherwise, the Property will be treated as a string. + + + + + Set this attribute to "yes" to cause the Control to display from right to left. + + + + + Set this attribute to "yes" to cause the Control to be right aligned. + + + + + Set this attribute to "yes" to cause the scroll bar to display on the left side of the Control. + + + + + + This attribute is only valid for Text Controls. + + + + + This attribute is only valid for Text Controls. + + + + + This attribute is only valid for Text Controls. + + + + + This attribute is only valid for Text Controls. + + + + + This attribute is only valid for Text Controls. + + + + + This attribute is only valid for Edit Controls. + + + + + This attribute is only valid for Edit Controls. + + + + + This attribute is only valid for ProgressBar Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for Volume and Directory Controls. + + + + + This attribute is only valid for VolumeCostList Controls. + + + + + This attribute is only valid for ListBox, ListView, and ComboBox Controls. Set + the value of this attribute to "yes" to have entries appear in the order specified under the Control. + If the attribute value is "no" or absent the entries in the control will appear in alphabetical order. + + + + + + This attribute is only valid for ComboBox Controls. + + + + + This attribute is only valid for RadioButton, PushButton, and Icon Controls. + + + + + This attribute is only valid for RadioButton, PushButton, and Icon Controls. + + + + + + + + + + + + This attribute is only valid for RadioButton, PushButton, and Icon Controls. + + + + + This attribute is only valid for RadioButton and PushButton Controls. + + + + + This attribute is only valid for RadioButton and PushButton Controls. + + + + + This attribute is only valid for RadioButton and Checkbox Controls. + + + + + This attribute is only valid for RadioButton Controls. + + + + + + This attribute is only valid for PushButton controls. + Set this attribute to "yes" to add the User Account Control (UAC) elevation icon (shield icon) to the PushButton control. + If this attribute's value is "yes" and the installation is not yet running with elevated privileges, + the pushbutton control is created using the User Account Control (UAC) elevation icon (shield icon). + If this attribute's value is "yes" and the installation is already running with elevated privileges, + the pushbutton control is created using the other icon attributes. + Otherwise, the pushbutton control is created using the other icon attributes. + + + + + + + + + Billboard to display during install of a Feature + + + + + + + + + + + Only controls of static type such as: Text, Bitmap, Icon, or custom control can be placed on a billboard. + + + + + + Unique identifier for the Billboard. + + + + + Feature whose state determines if the Billboard is shown. + + + + + + + + Billboard action during which child Billboards are displayed + + + + + + + + + + + Order of Billboard elements determines order of display + + + + + + Action name that determines when the Billboard should be shown. + + + + + + + + + + + + + + + + Defines a dialog box in the Dialog Table. + + + + + + + Control elements belonging to this dialog. + + + + + + Unique identifier for the dialog. + + + + + Horizontal placement of the dialog box as a percentage of screen width. The default value is 50. + + + + + Vertical placement of the dialog box as a percentage of screen height. The default value is 50. + + + + + The width of the dialog box in dialog units. + + + + + The height of the dialog box in dialog units. + + + + + The title of the dialog box. + + + + + + Used to hide the dialog. + + + + + Used to set the dialog as modeless. + + + + + Used to specify if the dialog can be minimized. + + + + + Used to set the dialog as system modal. + + + + + Keep modeless dialogs alive when this dialog is created through DoAction. + + + + + Have the dialog periodically call the installer to check if available disk space has changed. + + + + + Used to specify if pictures in the dialog box are rendered with a custom palette. + + + + + Used to specify if the text in the dialog should be displayed in right to left reading order. + + + + + Align text on the right. + + + + + Used to align the scroll bar on the left. + + + + + Specifies this dialog as an error dialog. + + + + + + + + + + + Reference to a Dialog. This will cause the entire referenced section's contents + to be included in the installer database. + + + + + + The identifier of the Dialog to reference. + + + + + + + + + + + + + + + Element value is progress message text for action + + + + + used to format ActionData messages from action processing + + + + + + + + + + + + + + + + + + + 0 to 255 + + + + + 0 to 255 + + + + + 0 to 255 + + + + + + + + + + + + The value (and optional text) associated with an item in a ComboBox, ListBox, or ListView. + + + + + + + + + + + + The value assigned to the associated ComboBox, ListBox, or ListView property if this item is selected. + + + + + + + The localizable, visible text to be assigned to the item. + If not specified, this will default to the value of the Value attribute. + + + + + + + The identifier of the Binary (not Icon) element containing the icon to associate with this item. + This value is only valid when nested under a ListView element. + + + + + + + + + Set of items for a particular ListBox control tied to an install Property + + + + + + + + + + + + entry for ListBox table + + + + + + Property tied to this group + + + + + + + + Set of items for a particular ComboBox control tied to an install Property + + + + + + + + + + + + entry for ComboBox table + + + + + + Property tied to this group + + + + + + + + Set of items for a particular ListView control tied to an install Property + + + + + + + + + + + + entry for ListView table + + + + + + Property tied to this group + + + + + + + + + + + + + Text or Icon plus Value that is assigned to the Property of the parent Control (RadioButtonGroup). + + + + + + This attribute defines the bitmap displayed with the radio button. The value of the attribute creates a reference + to a Binary element that represents the bitmap. This attribute is mutually exclusive with the Icon and Text + attributes. + + + + + + + + + This attribute defines the icon displayed with the radio button. The value of the attribute creates a reference + to a Binary element that represents the icon. This attribute is mutually exclusive with the Bitmap and Text + attributes. + + + + + + Text displayed with the radio button. This attribute is mutually exclusive with the Bitmap and Icon attributes. + + + + + + Value assigned to the associated control Property when this radio button is selected. + + + + + + + + + + + Set of radio buttons tied to the specified Property + + + + + + + + + + + + + + Property tied to this group. + + + + + + + + Text associated with certain controls + + + + + + + + + + Element value is text, may use CDATA if needed to escape XML delimiters + + + + + + + + + + Reference to a UI element. This will force the entire referenced Fragment's contents + to be included in the installer database. + + + + + + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + Enclosing element to compartmentalize UI specifications. + + + + + + + + + + Embedded UI definition with EmbeddedResource children. + + + + + Error text associated with install error + + + + + ActionText entry associated with an action + + + + + Billboard table item with child Controls + + + + + ComboBox table with ListItem children + + + + + ListBox table with ListItem children + + + + + ListView table with ListItem children + + + + + RadioButton table with RadioButton children + + + + + TextStyle entry for use in control text + + + + + values for UIText property, not installer Property + + + + + Dialog specification, called from Sequence + + + + + Reference to a Dialog specification. + + + + + + + + + + + + + + + + + + + + Defines a custom table for use from a custom action. + + + + + + Column definition for the custom table. + + + + + Row definition for the custom table. + + + + + + Identifier for the custom table. + + + + + Indicates the table data is transformed into the bootstrapper application data manifest. + + + + + + + Column definition for a Custom Table + + + + + Identifier for the column. + + + + + Whether this column is a primary key. + + + + + The type of this column. + + + + + + + Column contains a path to a file that will be inserted into the column as a binary object. + If this value is set, the Category attribute must also be set with a value of 'Binary' to pass ICE validation. + + + + + + + Column contains an integer or datetime value (the MinValue and MaxValue attributes should also be set). + + + + + + + Column contains a non-localizable string value. + + + + + + + + + Width of this column. + + + + + Whether this column can be left null. + + + + + Whether this column can be localized. + + + + + Minimum value for a numeric value, date or version in this column. + + + + + Maximum value for a numeric value, date or version in this column. + + + + + Table in which this column is an external key. Can be semicolon delimited. + + + + + Column in the table in KeyTable attribute. + + + + + + Category of this column. + This attribute must be specified with a value of 'Binary' if the Type attribute's value is 'binary'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Semicolon delimited list of permissible values. + + + + + Description of this column. + + + + + How this column should be modularized, if at all. + + + + + + + Column should not be modularized. This is the default value. + + + + + + + Column should be modularized. + + + + + + + Column is a condition and should be modularized. + + + + + + + When the column is an primary or foreign key to the Icon table it should be modularized special. + + + + + + + Any Properties in the column should be modularized. + + + + + + + Semi-colon list of keys, all of which need to be modularized. + + + + + + + + + + + Row data for a Custom Table + + + + + + + + + + Used for a Custom Table. Specifies the data for the parent Row and specified Column. + + + + + + A data value + + + + Specifies in which column to insert this data. + + + + + + + + + + + Use this element to ensure that a table appears in the installer database, even if its empty. + + + + This element is particularly useful for two problems that may occur while merging merge modules: + + The first likely problem is that in order to properly merge you need to have certain + tables present prior to merging. Using this element is one way to ensure those tables + are present prior to the merging. + + The other common problem is that a merge module has incorrect validation information + about some tables. By ensuring these tables prior to merging, you can avoid this + problem because the correct validation information will go into the installer database + before the merge module has a chance to set it incorrectly. + + + + + + + The name of the table. + + + + + + + + This element exposes advanced WiX functionality. Use this element to declare WiX variables + from directly within your authoring. WiX variables are not resolved until the final msi/msm/pcp + file is actually generated. WiX variables do not persist into the msi/msm/pcp file, so they cannot + be used when an MSI file is being installed; it's a WiX-only concept. + + + + + + The name of the variable. + + + + + + Set this value to 'yes' in order to make the variable's value overridable either by + another WixVariable entry or via the command-line option -d<name>=<value> + for light.exe. If the same variable is declared overridable in multiple places it + will cause an error (since WiX won't know which value is correct). The default value + is 'no'. + + + + + + + The value of the variable. The value cannot be an empty string because that would + make it possible to accidentally set a column to null. + + + + + + + + + Use this element to contain definitions for instance transforms. + + + + + + + + + The Id of the Property who's value should change for each instance. + + + + + + + + Defines an instance transform for your product. + + + + + + + The identity of the instance transform. This value will define the name by which the instance + should be referred to on the command line. In addition, the value of the this attribute will + determine what the value of the property specified in Property attribute on InstanceTransforms + will change to for each instance. + + + + + + The ProductCode for this instance. + + + + + The ProductName for this instance. + + + + + The UpgradeCode for this instance. + + + + + + + + Simplifies authoring for major upgrades, including support for preventing downgrades. + + The parent Product element must have valid UpgradeCode and Version attributes. + + When the FindRelatedProducts action detects a related product installed on the system, + it appends the product code to the property named WIX_UPGRADE_DETECTED. After the + FindRelatedProducts action is run, the value of the WIX_UPGRADE_DETECTED property is a + list of product codes, separated by semicolons (;), detected on the system. + + + + + + + + + + When set to no (the default), products with lower version numbers are blocked from + installing when a product with a higher version is installed; the DowngradeErrorMessage + attribute must also be specified. + + When set to yes, any version can be installed over any other version. + + + + + + + When set to no (the default), installing a product with the same version and upgrade code + (but different product code) is allowed and treated by MSI as two products. When set to yes, + WiX sets the msidbUpgradeAttributesVersionMaxInclusive attribute, which tells MSI to treat + a product with the same version as a major upgrade. + + This is useful when two product versions differ only in the fourth version field. MSI + specifically ignores that field when comparing product versions, so two products that + differ only in the fourth version field are the same product and need this attribute set to + yes to be detected. + + Note that because MSI ignores the fourth product version field, setting this attribute to + yes also allows downgrades when the first three product version fields are identical. + For example, product version 1.0.0.1 will "upgrade" 1.0.0.2998 because they're seen as the + same version (1.0.0). That could reintroduce serious bugs so the safest choice is to change + the first three version fields and omit this attribute to get the default of no. + + This attribute cannot be "yes" when AllowDowngrades is also "yes" -- AllowDowngrades + already allows two products with the same version number to upgrade each other. + + + + + + + When set to yes, products with higer version numbers are blocked from + installing when a product with a lower version is installed; the UpgradeErrorMessage + attribute must also be specified. + + When set to no (the default), any version can be installed over any lower version. + + + + + + + The message displayed if users try to install a product with a lower version number + when a product with a higher version is installed. Used only when AllowDowngrades + is no (the default). + + + + + + + The message displayed if users try to install a product with a higer version number + when a product with a lower version is installed. Used only when Disallow + is yes. + + + + + + + When set to yes (the default), the MigrateFeatureStates standard action will set the + feature states of the upgrade product to those of the installed product. + + When set to no, the installed features have no effect on the upgrade installation. + + + + + + + When set to yes, failures removing the installed product during the upgrade will be + ignored. + + When set to no (the default), failures removing the installed product during the upgrade + will be considered a failure and, depending on the scheduling, roll back the upgrade. + + + + + + + A formatted string that contains the list of features to remove from the installed + product. The default is to remove all features. Note that if you use formatted property + values that evaluate to an empty string, no features will be removed; only omitting + this attribute defaults to removing all features. + + + + + + + Determines the scheduling of the RemoveExistingProducts standard action, which is when + the installed product is removed. The default is "afterInstallValidate" which removes + the installed product entirely before installing the upgrade product. It's slowest but + gives the most flexibility in changing components and features in the upgrade product. + + For more information, see RemoveExistingProducts. + + + + + + + + (Default) Schedules RemoveExistingProducts after the InstallValidate standard + action. This scheduling removes the installed product entirely before installing + the upgrade product. It's slowest but gives the most flexibility in changing + components and features in the upgrade product. Note that if the installation + of the upgrade product fails, the machine will have neither version installed. + + + + + + + Schedules RemoveExistingProducts after the InstallInitialize standard action. + This is similar to the afterInstallValidate scheduling, but if the installation + of the upgrade product fails, Windows Installer also rolls back the removal of + the installed product -- in other words, reinstalls it. + + + + + + + Schedules RemoveExistingProducts between the InstallExecute and InstallFinalize standard actions. + This scheduling installs the upgrade product "on top of" the installed product then lets + RemoveExistingProducts uninstall any components that don't also exist in the upgrade product. + Note that this scheduling requires strict adherence to the component rules because it relies + on component reference counts to be accurate during installation of the upgrade product and + removal of the installed product. For more information, see + + Bob Arnson's blog post "Paying for Upgrades" + for details. If installation of the upgrade product fails, Windows Installer + also rolls back the removal of the installed product -- in other words, reinstalls it. + + + + + + + Schedules RemoveExistingProducts between the InstallExecuteAgain and InstallFinalize standard actions. + This is identical to the afterInstallExecute scheduling but after the InstallExecuteAgain standard + action instead of InstallExecute. + + + + + + + Schedules RemoveExistingProducts after the InstallFinalize standard action. This is similar to the + afterInstallExecute and afterInstallExecuteAgain schedulings but takes place outside the + installation transaction so if installation of the upgrade product fails, Windows Installer does + not roll back the removal of the installed product, so the machine will have both versions + installed. + + + + + + + + + + + + + + + + + + + + Specifies the lower bound on the range of product versions to be detected by FindRelatedProducts. + + + + + Specifies the upper boundary of the range of product versions detected by FindRelatedProducts. + + + + + Specifies the set of languages detected by FindRelatedProducts. Enter a list of numeric language identifiers (LANGID) separated by commas (,). Leave this value null to specify all languages. Set ExcludeLanguages to "yes" in order detect all languages, excluding the languages listed in this value. + + + + + Set to "no" to make the range of versions detected exclude the value specified in Minimum. This attribute is "yes" by default. + + + + + Set to "yes" to make the range of versions detected include the value specified in Maximum. + + + + + Set to "yes" to detect all languages, excluding the languages listed in the Language attribute. + + + + + This value specifies the upgrade code for the products that are to be detected by the FindRelatedProducts action. + + + + + + Extensibility point in the WiX XML Schema. Schema extensions can register additional + attributes at this point in the schema. + + + + + + + + + + + + + Text node specifies the condition of the action. + + + + The name of an action that this action should come after. + + + + + The name of an action that this action should come before. + + + + + + If "yes", the sequencing of this action may be overridden by sequencing elsewhere. + + + + + + A value used to indicate the position of this action in a sequence. + + + + + If yes, this action will not occur. + + + + + + + + + + + A value used to indicate the position of this action in a sequence. + + + + + If yes, this action will not occur. + + + + + + + + + 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. + + + + + + + + Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}". A GUID can be auto-generated by setting the value to "*". Also allows "PUT-GUID-HERE" for use in examples. + + + + + + + + Values of this type will either be "attached" or "detached". + + + + + + + + + The list of communcation protocols with executable packages Burn supports. + + + + + + + The executable package does not support a communication protocol. + + + + + + + The executable package is another Burn bundle and supports the Burn communication protocol. + + + + + + + The executable package implements the .NET Framework v4.0 communication protocol. + + + + + + + + Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}", but also allows "PUT-GUID-HERE" for use in examples. It's also possible to have an empty value "". + + + + + + + + Values of this type must be an integer or the value can be a localization variable with the format !(loc.Variable) where "Variable" is the name of the variable. + + + + + + + + Values of this type will look like: "FileName.ext". Only one period is allowed. The following characters are not allowed: \ ? | > : / * " + , ; = [ ] less-than, or whitespace. The name cannot be longer than 8 characters and the extension cannot exceed 3 characters. The value could also be a localization variable with the format !(loc.VARIABLE). + + + + + + + + Values of this type will look like: "Long File Name.extension". Legal long names contain no more than 260 characters and must contain at least one non-period character. The following characters are not allowed: \ ? | > : / * " or less-than. The name must be shorter than 260 characters. The value could also be a localization variable with the format !(loc.VARIABLE). + + + + + + + + Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534. + + + + + + + + Values of this type will look like: "File?.*". Only one period is allowed. The following characters are not allowed: \ | > : / " + , ; = [ ] less-than, or whitespace. The name cannot be longer than 8 characters and the extension cannot exceed 3 characters. The value could also be a localization variable with the format !(loc.VARIABLE). + + + + + + + + Values of this type will look like: "Long File N?me.extension*". Legal long names contain no more than 260 characters and must contain at least one non-period character. The following characters are not allowed: \ | > : / " or less-than. The name must be shorter than 260 characters. The value could also be a localization variable with the format !(loc.VARIABLE). + + + + + + + + This type supports any hexadecimal number. Both upper and lower case is acceptable for letters appearing in the number. This type also includes the empty string: "". + + + + + + + + Values of this type will either be "yes" or "no". + + + + + + Values of this type will either be "yes" or "no". + + + + + + + + + Values of this type will either be "button", "yes" or "no". + + + + + + Values of this type will either be "button", "yes" or "no". + + + + + + + + + + Values of this type will either be "default", "yes", or "no". + + + + + + Values of this type will either be "default", "yes", or "no". + + + + + + + + + + Values of this type will either be "always", "yes", or "no". + + + + + + Values of this type will either be "always", "yes", or "no". + + + + + + + + + + Values of this type represent possible registry roots. + + + + + + A per-user installation will make the operation occur under HKEY_CURRENT_USER. + A per-machine installation will make the operation occur under HKEY_LOCAL_MACHINE. + + + + + + + Operation occurs under HKEY_CLASSES_ROOT. When using Windows 2000 or later, the installer writes or removes the value + from the HKCU\Software\Classes hive during per-user installations. When using Windows 2000 or later operating systems, + the installer writes or removes the value from the HKLM\Software\Classes hive during per-machine installations. + + + + + + + Operation occurs under HKEY_CURRENT_USER. It is recommended to set the KeyPath='yes' attribute when setting this value for writing values + in order to ensure that the installer writes the necessary registry entries when there are multiple users on the same computer. + + + + + + + Operation occurs under HKEY_LOCAL_MACHINE. + + + + + + + Operation occurs under HKEY_USERS. + + + + + + + + Value indicates that this action is executed if the installer returns the associated exit type. Each exit type can be used with no more than one action. + Multiple actions can have exit types assigned, but every action and exit type must be different. Exit types are typically used with dialog boxes. + + + + + + + + + + + Specifies whether an action occur on install, uninstall or both. + + + + + + The action should happen during install (msiInstallStateLocal or msiInstallStateSource). + + + + + + + The action should happen during uninstall (msiInstallStateAbsent). + + + + + + + The action should happen during both install and uninstall. + + + + + + + + + Controls which sequences the item assignment is sequenced in. + + + + + + + Schedules the assignment in the InstallUISequence and the InstallExecuteSequence. + + + + + + + Schedules the assignment to run in the InstallUISequence or the InstallExecuteSequence if the InstallUISequence is skipped. + + + + + + + Schedules the assignment only in the the InstallExecuteSequence. + + + + + + + Schedules the assignment only in the the InstallUISequence. + + + + + + + + + Indicates the compression level for a cabinet. + + + + + + + + Indicates the compression level for a cabinet. + + + + + + + + + + + + + A type that represents that 1 or more preprocessor variables (as they appear in sources on disk, before preprocessor has run). + + + + + + + + Values of this type must be an integer or the value of one or more preprocessor variables with the format $(var.Variable) where "Variable" is the name of the preprocessor variable. + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wixloc.xsd b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wixloc.xsd new file mode 100644 index 0000000000000000000000000000000000000000..87693405107f1f100207ed80a017e4abcd35d968 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/doc/wixloc.xsd @@ -0,0 +1,139 @@ + + + + + + Schema for describing Windows Installer Xml Localization files (.wxl). + + + + + + + + You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252 or iso-8859-1. See Code Pages for more information. + + How To: Build a localized version of your installer + How To: Make your installer localizable + + + + + + + + + + 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. + + + + + Culture of the localization strings. + + + + + The decimal language ID (LCID) for the culture. + + + + + + + + + How To: Build a localized version of your installer + How To: Make your installer localizable + + + + + + Identity of the resource. + + + + + Determines if the localized string may be overridden. + + + + + 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. + + + + + + + + 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. + + + + + Identifies the dialog to localize or the dialog that a control to localize is in. + + + + + Combined with the Dialog attribute, identifies the control to localize. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + Set this attribute to "yes" to cause the Control to display from right to left. Not valid for a dialog. + + + + + Set this attribute to "yes" to cause the Control to be right aligned. Not valid for a dialog. + + + + + Set this attribute to "yes" to cause the scroll bar to display on the left side of the Control. Not valid for a dialog. + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/heat.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/heat.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..a806aebdc7fb6961f1728ba46c38fbcb66123174 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/heat.exe.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/insignia.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/insignia.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..b0602249b6bc26bf04aacda1475ba843a294afab --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/insignia.exe.config @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/light.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/light.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/light.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/lit.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/lit.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/lit.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/lux.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/lux.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..c8942fa41df3875b79e34cfe202fadd6251975ac --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/lux.exe.config @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/lux.targets b/msvs/RedisWindowsX64/lib/wix39-binaries/lux.targets new file mode 100644 index 0000000000000000000000000000000000000000..e062550f0ac0aab95779085a37b2862176ec58a0 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/lux.targets @@ -0,0 +1,117 @@ + + + + + + + + + Compile;_ScanForUnitTests;_GenerateTestConsumer;Link + $(BuildTestPackageDependsOn) + + + + + + + + + + + + + + + + + + + + + $(OutputName)_test + ICE71;$(SuppressIces) + true + + + + + + + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/melt.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/melt.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/melt.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.cub b/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.cub new file mode 100644 index 0000000000000000000000000000000000000000..2042a99e4f73bd97d11e0967130b204bf2f363a0 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.cub differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc53b1c7b68b0dba0253235322a738901c68fc3b Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/mergemod.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/mspatchc.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/mspatchc.dll new file mode 100644 index 0000000000000000000000000000000000000000..4720f1a070bb894f003b24aab4ceddccc350d187 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/mspatchc.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/nit.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/nit.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..dd015f3e54cc472f81c95c534373044074ed89a5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/nit.exe.config @@ -0,0 +1,14 @@ + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/pyro.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/pyro.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/pyro.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/retina.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/retina.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..38dd533e42e51e696db6a16b6c06208853a7f132 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/retina.exe.config @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.config b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.config new file mode 100644 index 0000000000000000000000000000000000000000..74ce9320cb3cf2e5adf6c35e57ecb2a777707a22 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.config @@ -0,0 +1,31 @@ + + + + + +
+ + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.dll new file mode 100644 index 0000000000000000000000000000000000000000..99f2c95ceaad31ba87ea12db0d931fad15e2a818 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.xml new file mode 100644 index 0000000000000000000000000000000000000000..791f1077a070a026f06b16eba8c12f2e8963c1ac --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/BootstrapperCore.xml @@ -0,0 +1,2807 @@ + + + + BootstrapperCore + + + + + The default bootstrapper application. + + + + + Allows customization of the bootstrapper application. + + + + + Creates a new instance of the class. + + + + + Entry point that is called when the bootstrapper application is ready to run. + + + + + Called by the engine on startup of the bootstrapper application. + + Additional arguments for this event. + + + + Called by the engine to uninitialize the user experience. + + Additional arguments for this event. + + + + Called when the system is shutting down or the user is logging off. + + Additional arguments for this event. + + To prevent shutting down or logging off, set to + ; otherwise, set it to . + By default setup will prevent shutting down or logging off between + and . + Derivatives can change this behavior by overriding + or handling . + If contains + the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other + critical operations before being closed by the operating system. + This method may be called on a different thread. + + + + + Called when the overall detection phase has begun. + + Additional arguments for this event. + + + + Called when the update detection phase has begun. + + Additional arguments for this event. + + + + Called when the update detection phase has begun. + + Additional arguments for this event. + + + + Fired when the update detection has found a potential update candidate. + + Additional arguments for this event. + + + + Called when the update detection phase has completed. + + Additional arguments for this event. + + + + Called when the detection for a prior bundle has begun. + + Additional arguments for this event. + + + + Called when a related bundle has been detected for a bundle. + + Additional arguments for this event. + + + + Called when the detection for a specific package has begun. + + Additional arguments for this event. + + + + Called when a package was not detected but a package using the same provider key was. + + Additional arguments for this event. + + + + Called when a related MSI package has been detected for a package. + + Additional arguments for this event. + + + + Called when an MSP package detects a target MSI has been detected. + + Additional arguments for this event. + + + + Called when an MSI feature has been detected for a package. + + Additional arguments for this event. + + + + Called when the detection for a specific package has completed. + + Additional arguments for this event. + + + + Called when the detection phase has completed. + + Additional arguments for this event. + + + + Called when the engine has begun planning the installation. + + Additional arguments for this event. + + + + Called when the engine has begun planning for a prior bundle. + + Additional arguments for this event. + + + + Called when the engine has begun planning the installation of a specific package. + + Additional arguments for this event. + + + + Called when the engine plans a new, compatible package using the same provider key. + + Additional arguments for this event. + + + + Called when the engine is about to plan the target MSI of a MSP package. + + Additional arguments for this event. + + + + Called when the engine is about to plan an MSI feature of a specific package. + + Additional arguments for this event. + + + + Called when then engine has completed planning the installation of a specific package. + + Additional arguments for this event. + + + + Called when the engine has completed planning the installation. + + Additional arguments for this event. + + + + Called when the engine has begun installing the bundle. + + Additional arguments for this event. + + + + Called right after OnApplyBegin. + + Additional arguments for this event. + + + + Called when the engine is about to start the elevated process. + + Additional arguments for this event. + + + + Called when the engine has begun registering the location and visibility of the bundle. + + Additional arguments for this event. + + + + Called when the engine has completed registering the location and visilibity of the bundle. + + Additional arguments for this event. + + + + Called when the engine has begun removing the registration for the location and visibility of the bundle. + + Additional arguments for this event. + + + + Called when the engine has completed removing the registration for the location and visibility of the bundle. + + Additional arguments for this event. + + + + Called when the engine begins to cache the installation sources. + + + + + + Called by the engine when it begins to cache a specific package. + + + + + + Called when the engine begins to cache the container or payload. + + + + + + Called when the engine has progressed on caching the container or payload. + + + + + + Called by the engine to allow the user experience to change the source + using or . + + Additional arguments for this event. + + + + Called when the engine complets caching of the container or payload. + + + + + + Called when the engine has started verify the payload. + + + + + + Called when the engine completes verification of the payload. + + + + + + Called when the engine completes caching a specific package. + + + + + + Called after the engine has cached the installation sources. + + Additional arguments for this event. + + + + Called when the engine has begun installing packages. + + Additional arguments for this event. + + + + Called when the engine has begun installing a specific package. + + Additional arguments for this event. + + + + Called when the engine executes one or more patches targeting a product. + + Additional arguments for this event. + + + + Called when the engine has encountered an error. + + Additional arguments for this event. + + + + Called when the engine has changed progress for the bundle installation. + + Additional arguments for this event. + + + + Called when Windows Installer sends an installation message. + + Additional arguments for this event. + + + + Called when Windows Installer sends a file in use installation message. + + Additional arguments for this event. + + + + Called when the engine has completed installing a specific package. + + Additional arguments for this event. + + + + Called when the engine has completed installing packages. + + Additional arguments for this event. + + + + Called by the engine to request a restart now or inform the user a manual restart is required later. + + Additional arguments for this event. + + + + Called when the engine has completed installing the bundle. + + Additional arguments for this event. + + + + Called by the engine while executing on payload. + + Additional arguments for this event. + + + + Called by the engine before trying to launch the preapproved executable. + + Additional arguments for this event. + + + + Called by the engine after trying to launch the preapproved executable. + + Additional arguments for this event. + + + + Fired when the engine is starting up the bootstrapper application. + + + + + Fired when the engine is shutting down the bootstrapper application. + + + + + Fired when the system is shutting down or user is logging off. + + + To prevent shutting down or logging off, set to + ; otherwise, set it to . + By default setup will prevent shutting down or logging off between + and . + Derivatives can change this behavior by overriding + or handling . + If contains + the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other + critical operations before being closed by the operating system. + This event may be fired on a different thread. + + + + + Fired when the overall detection phase has begun. + + + + + Fired when a forward compatible bundle is detected. + + + + + Fired when the update detection phase has begun. + + + + + Fired when the update detection has found a potential update candidate. + + + + + Fired when the update detection phase has completed. + + + + + Fired when the detection for a prior bundle has begun. + + + + + Fired when a related bundle has been detected for a bundle. + + + + + Fired when the detection for a specific package has begun. + + + + + Fired when a package was not detected but a package using the same provider key was. + + + + + Fired when a related MSI package has been detected for a package. + + + + + Fired when an MSP package detects a target MSI has been detected. + + + + + Fired when a feature in an MSI package has been detected. + + + + + Fired when the detection for a specific package has completed. + + + + + Fired when the detection phase has completed. + + + + + Fired when the engine has begun planning the installation. + + + + + Fired when the engine has begun planning for a related bundle. + + + + + Fired when the engine has begun planning the installation of a specific package. + + + + + Fired when the engine plans a new, compatible package using the same provider key. + + + + + Fired when the engine is about to plan the target MSI of a MSP package. + + + + + Fired when the engine is about to plan a feature in an MSI package. + + + + + Fired when the engine has completed planning the installation of a specific package. + + + + + Fired when the engine has completed planning the installation. + + + + + Fired when the engine has begun installing the bundle. + + + + + DEPRECATED: This event will be merged with ApplyBegin in wix4. + Fired right after ApplyBegin, providing the number of phases that the engine will go through in apply. + + + + + Fired when the engine is about to start the elevated process. + + + + + Fired when the engine has begun registering the location and visibility of the bundle. + + + + + Fired when the engine has completed registering the location and visibility of the bundle. + + + + + Fired when the engine has begun removing the registration for the location and visibility of the bundle. + + + + + Fired when the engine has completed removing the registration for the location and visibility of the bundle. + + + + + Fired when the engine has begun caching the installation sources. + + + + + Fired when the engine has begun caching a specific package. + + + + + Fired when the engine has begun acquiring the installation sources. + + + + + Fired when the engine has progress acquiring the installation sources. + + + + + Fired by the engine to allow the user experience to change the source + using or . + + + + + Fired when the engine has completed the acquisition of the installation sources. + + + + + Fired when the engine begins the verification of the acquired installation sources. + + + + + Fired when the engine complete the verification of the acquired installation sources. + + + + + Fired when the engine has completed caching a specific package. + + + + + Fired after the engine has cached the installation sources. + + + + + Fired when the engine has begun installing packages. + + + + + Fired when the engine has begun installing a specific package. + + + + + Fired when the engine executes one or more patches targeting a product. + + + + + Fired when the engine has encountered an error. + + + + + Fired when the engine has changed progress for the bundle installation. + + + + + Fired when Windows Installer sends an installation message. + + + + + Fired when Windows Installer sends a files in use installation message. + + + + + Fired when the engine has completed installing a specific package. + + + + + Fired when the engine has completed installing packages. + + + + + Fired by the engine to request a restart now or inform the user a manual restart is required later. + + + + + Fired when the engine has completed installing the bundle. + + + + + Fired by the engine while executing on payload. + + + + + Fired when the engine is about to launch the preapproved executable. + + + + + Fired when the engine has completed launching the preapproved executable. + + + + + Specifies whether this bootstrapper should run asynchronously. The default is true. + + + + + Gets the information for how the UX should be started. + + + + + Gets the for interaction with the Engine. + + + + + Identifies the bootstrapper application class. + + + This required assembly attribute identifies the bootstrapper application class. + + + + + Creates a new instance of the class. + + The of the user experience, or null for the default user experience. + + + + Gets the type of the bootstrapper application class to create. + + + + + Class used by the MUX host to create and return the IBootstrapperApplication implementation to the engine. + + + + + Creates a new instance of the class. + + + + + Loads the bootstrapper application assembly and creates an instance of the IBootstrapperApplication. + + IBootstrapperEngine provided for the bootstrapper application. + Command line for the bootstrapper application. + Bootstrapper application via interface. + The bootstrapper application assembly + does not define the . + + + + Locates the and returns the specified type. + + The assembly that defines the user experience class. + The bootstrapper application . + + + + Handler for the wix.bootstrapper configuration section group. + + + + + Creates a new instance of the class. + + + + + Gets the handler for the mux configuration section. + + + + + Handler for the supportedFramework collection. + + + + + Handler for the supportedFramework configuration section. + + + + + Creates a new instance of the class. + + + + + Gets the version of the supported framework. + + + The assembly specified by this name must contain a value matching the NETFX version registry key under + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP". + + + + + Gets the runtime version required by this supported framework. + + + + + Container class for the interface. + + + + + Creates a new instance of the container class. + + The to contain. + + + + Install the packages. + + The parent window for the installation user interface. + + + + Close the splash screen if it is still open. Does nothing if the splash screen is not or + never was opened. + + + + + Determine if all installation conditions are fulfilled. + + + + + Determine if all installation conditions are fulfilled. + + The parent window for the installation user interface. + + + + Elevate the install. + + The parent window of the elevation dialog. + true if elevation succeeded; otherwise, false if the user cancelled. + A Win32 error occurred. + + + + Escapes the input string. + + The string to escape. + The escaped string. + A Win32 error occurred. + + + + Evaluates the string. + + The string representing the condition to evaluate. + Whether the condition evaluated to true or false. + + + + Formats the input string. + + The string to format. + The formatted string. + A Win32 error occurred. + + + + Launches a preapproved executable elevated. As long as the engine already elevated, there will be no UAC prompt. + + The parent window of the elevation dialog (if the engine hasn't elevated yet). + Id of the ApprovedExeForElevation element specified when the bundle was authored. + Optional arguments. + + + + Launches a preapproved executable elevated. As long as the engine already elevated, there will be no UAC prompt. + + The parent window of the elevation dialog (if the engine hasn't elevated yet). + Id of the ApprovedExeForElevation element specified when the bundle was authored. + Optional arguments. + Timeout in milliseconds. When set to something other than zero, the engine will call WaitForInputIdle for the new process with this timeout before calling OnLaunchApprovedExeComplete. + + + + Logs the . + + The logging level. + The message to log. + + + + Determine the installation sequencing and costing. + + The action to perform when planning. + + + + Set the update information for a bundle. + + Optional local source path for the update. Default is "update\[OriginalNameOfBundle].exe". + Optional download source for the update. + Size of the expected update. + Type of the hash expected on the update. + Optional hash expected for the update. + + + + Set the local source for a package or container. + + The id that uniquely identifies the package or container. + The id that uniquely identifies the payload. + The new source path. + + + + Set the new download URL for a package or container. + + The id that uniquely identifies the package or container. + The id that uniquely identifies the payload. + The new url. + The user name for proxy authentication. + The password for proxy authentication. + + + + Sends error message when embedded. + + Error code. + Error message. + UI buttons to show on error dialog. + + + + Sends progress percentages when embedded. + + Percentage completed thus far. + Overall percentage completed. + + + + Shuts down the engine. + + Exit code indicating reason for shut down. + + + + Gets whether the variable given by exists. + + The name of the variable to check. + True if the variable given by exists; otherwise, false. + + + + Gets the variable given by as a string. + + The name of the variable to get. + The length of the Unicode string. + The value by a pointer to a Unicode string. Must be freed by Marshal.FreeCoTaskMem. + An error occurred getting the variable. + + + + Initialize a SecureString with the given Unicode string. + + Pointer to Unicode string. + The string's length. + + + + Verifies that VersionVariables can pass on the given Version to the engine. + If the Build or Revision fields are undefined, they are set to zero. + + + + + Gets or sets numeric variables for the engine. + + + + + Gets the number of packages in the bundle. + + + + + Gets or sets string variables for the engine using SecureStrings. + + + + + Gets or sets string variables for the engine. + + + + + Gets or sets variables for the engine. + + The class can keep track of when the build and revision fields are undefined, but the engine can't. + Therefore, the build and revision fields must be defined when setting a variable. + Use the NormalizeVersion method to make sure the engine can accept the Version. + + To keep track of versions without build or revision fields, use StringVariables instead. + + The given was invalid. + + + + An accessor for numeric, string, and version variables for the engine. + + + + + Gets whether the variable given by exists. + + The name of the variable to check. + True if the variable given by exists; otherwise, false. + + + + Gets or sets the variable given by . + + The name of the variable to get/set. + The value of the given variable. + An error occurred getting the variable. + + + + Base class for classes that must return a value. + + + + + Creates a new instance of the class. + + + + + Creates a new instance of the class. + + Recommended result from engine. + + + + Gets or sets the of the operation. This is passed back to the engine. + + + + + Base class for classes that receive status from the engine. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Gets the return code of the operation. + + + + + Base class for classes that receive status from the engine and return a result. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Creates a new instance of the class. + + The return code of the operation. + The recommended result from the engine. + + + + Gets the return code of the operation. + + + + + Additional arguments used when startup has begun. + + + + + Creates a new instance of the class. + + + + + Additional arguments used when shutdown has begun. + + + + + Creates a new instance of the class. + + + + + Additional arguments used when the system is shutting down or the user is logging off. + + + To prevent shutting down or logging off, set to + ; otherwise, set it to . + By default setup will prevent shutting down or logging off between + and . + Derivatives can change this behavior by overriding + or handling . + If contains + the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other + critical operations before being closed by the operating system. + + + + + + + Creates a new instance of the class. + + The reason the application is requested to close or being closed. + The recommendation from the engine. + + + + Gets the reason the application is requested to close or being closed. + + + To prevent shutting down or logging off, set to + ; otherwise, set it to . + If contains + the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other + critical operations before being closed by the operating system. + + + + + Additional arguments used when the overall detection phase has begun. + + + + + Creates a new instance of the class. + + Specifies whether the bundle is installed. + The number of packages to detect. + + + + Gets whether the bundle is installed. + + + + + Gets the number of packages to detect. + + + + + Additional arguments used when detected a forward compatible bundle. + + + + + Creates a new instance of the class. + + The identity of the forward compatible bundle. + Relationship type for this forward compatible bundle. + The tag of the forward compatible bundle. + Whether the detected forward compatible bundle is per machine. + The version of the forward compatible bundle detected. + The recommendation from the engine. + + + + Gets the identity of the forward compatible bundle detected. + + + + + Gets the relationship type of the forward compatible bundle. + + + + + Gets the tag of the forward compatible bundle. + + + + + Gets whether the detected forward compatible bundle is per machine. + + + + + Gets the version of the forward compatible bundle detected. + + + + + Additional arguments used when the detection for an update has begun. + + + + + Creates a new instance of the class. + + The location to check for an updated bundle. + The recommendation from the engine. + + + + Gets the identity of the bundle to detect. + + + + + Additional arguments used when the detection for an update has begun. + + + + + Creates a new instance of the class. + + The location to check for an updated bundle. + The expected size of the updated bundle. + The expected version of the updated bundle. + The title of the updated bundle. + The summary of the updated bundle. + The content type of the content of the updated bundle. + The content of the updated bundle. + The recommendation from the engine. + + + + Gets the size of the updated bundle. + + + + + Gets the version of the updated bundle. + + + + + Gets the title of the the updated bundle. + + + + + Gets the summary of the updated bundle. + + + + + Gets the content type of the content of the updated bundle. + + + + + Gets the content of the updated bundle. + + + + + Additional arguments used when the detection for an update has completed. + + + + + Creates a new instance of the class. + + The return code of the operation. + The location of the updated bundle. + + + + Gets the location of the updated bundle if one was detected. + + + + + Additional arguments used when the detection for a prior bundle has begun. + + + + + Creates a new instance of the class. + + The identity of the bundle to detect. + + + + Gets the identity of the bundle to detect. + + + + + Additional arguments used when a related bundle has been detected for a bundle. + + + + + Creates a new instance of the class. + + The identity of the related package bundle. + Relationship type for this related bundle. + The tag of the related package bundle. + Whether the detected bundle is per machine. + The version of the related bundle detected. + The operation that will be taken on the detected bundle. + + + + Gets the identity of the related bundle detected. + + + + + Gets the relationship type of the related bundle. + + + + + Gets the tag of the related package bundle. + + + + + Gets whether the detected bundle is per machine. + + + + + Gets the version of the related bundle detected. + + + + + Gets the operation that will be taken on the detected bundle. + + + + + Additional arguments used when the detection for a specific package has begun. + + + + + Creates a new instance of the class. + + The identity of the package to detect. + + + + Gets the identity of the package to detect. + + + + + Additional arguments used when a package was not found but a newer package using the same provider key was. + + + + + Creates a new instance of the class. + + The identity of the package that was not detected. + The identity of the compatible package that was detected. + + + + Gets the identity of the package that was not detected. + + + + + Gets the identity of the compatible package that was detected. + + + + + Additional arguments used when a related MSI package has been detected for a package. + + + + + Creates a new instance of the class. + + The identity of the package detecting. + The identity of the related package detected. + Whether the detected package is per machine. + The version of the related package detected. + The operation that will be taken on the detected package. + + + + Gets the identity of the product's package detected. + + + + + Gets the identity of the related package detected. + + + + + Gets whether the detected package is per machine. + + + + + Gets the version of the related package detected. + + + + + Gets the operation that will be taken on the detected package. + + + + + Additional arguments used when a target MSI package has been detected. + + + + + Creates a new instance of the class. + + Detected package identifier. + Detected product code. + Package state detected. + + + + Gets the identity of the target's package detected. + + + + + Gets the product code of the target MSI detected. + + + + + Gets the detected patch package state. + + + + + Additional arguments used when a feature in an MSI package has been detected. + + + + + Creates a new instance of the class. + + Detected package identifier. + Detected feature identifier. + Feature state detected. + + + + Gets the identity of the feature's package detected. + + + + + Gets the identity of the feature detected. + + + + + Gets the detected feature state. + + + + + Additional arguments used when the detection for a specific package has completed. + + + + + Creates a new instance of the class. + + The identity of the package detected. + The return code of the operation. + The state of the specified package. + + + + Gets the identity of the package detected. + + + + + Gets the state of the specified package. + + + + + Additional arguments used when the detection phase has completed. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used when the engine has begun planning the installation. + + + + + Creates a new instance of the class. + + The number of packages to plan for. + + + + Gets the number of packages to plan for. + + + + + Additional arguments used when the engine has begun planning for a related bundle. + + + + + Creates a new instance of the class. + + The identity of the bundle to plan for. + The requested state for the bundle. + + + + Gets the identity of the bundle to plan for. + + + + + Gets or sets the requested state for the bundle. + + + + + Additional arguments used when the engine has begun planning the installation of a specific package. + + + + + Creates a new instance of the class. + + The identity of the package to plan for. + The requested state for the package. + + + + Gets the identity of the package to plan for. + + + + + Gets or sets the requested state for the package. + + + + + Additional arguments used when the engine is about to plan a newer package using the same provider key. + + + + + Creates a new instance of the class. + + The identity of the package that was not detected. + The requested state for the compatible package. + + + + Gets the identity of the package that was not detected. + + + + + Gets or sets the state to use for the compatible package for planning. + + + + + Additional arguments used when engine is about to plan a MSP applied to a target MSI package. + + + + + Creates a new instance of the class. + + Package identifier of the patch being planned. + Product code identifier being planned. + Package state of the patch being planned. + + + + Gets the identity of the feature's package to plan. + + + + + Gets the identity of the feature to plan. + + + + + Gets or sets the state of the patch to use by planning. + + + + + Additional arguments used when engine is about to plan a feature in an MSI package. + + + + + Creates a new instance of the class. + + Package identifier being planned. + Feature identifier being planned. + Feature state being planned. + + + + Gets the identity of the feature's package to plan. + + + + + Gets the identity of the feature to plan. + + + + + Gets or sets the feature state to use by planning. + + + + + Additional arguments used when then engine has completed planning the installation of a specific package. + + + + + Creates a new instance of the class. + + The identity of the package planned for. + The return code of the operation. + The current state of the package. + The requested state for the package + The execution action to take. + The rollback action to take. + + + + Gets the identity of the package planned for. + + + + + Gets the current state of the package. + + + + + Gets the requested state for the package. + + + + + Gets the execution action to take. + + + + + Gets the rollback action to take. + + + + + Additional arguments used when the engine has completed planning the installation. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used when the engine has begun installing the bundle. + + + + + DEPRECATED: this information will be provided in ApplyBeginEventArgs in wix4. + Additional arguments used when the engine has determined the number of phases in apply. + + + + + DEPRECATED: this information will be provided in ApplyBeginEventArgs in wix4. + Gets the number of phases that the engine will go through in apply. + There are currently two possible phases: cache and execute. + + + + + Additional arguments used when the engine is about to start the elevated process. + + + + + Additional arguments used when the engine has begun registering the location and visibility of the bundle. + + + + + Additional arguments used when the engine has completed registering the location and visilibity of the bundle. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used when the engine has begun removing the registration for the location and visibility of the bundle. + + + + + Additional arguments used when the engine has completed removing the registration for the location and visibility of the bundle. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used when the engine has begun caching the installation sources. + + + + + Additional arguments used when the engine begins to acquire containers or payloads. + + + + + Creates a new instance of the class. + + + + + Gets the identifier of the container or package. + + + + + Gets the identifier of the payload (if acquiring a payload). + + + + + Gets the cache acquire operation. + + + + + Gets the source of the container or payload. + + + + + Additional arguments used when the engine acquires some part of a container or payload. + + + + + Creates a new instance of the class. + + + + + Gets the identifier of the container or package. + + + + + Gets the identifier of the payload (if acquiring a payload). + + + + + Gets the number of bytes cached thus far. + + + + + Gets the total bytes to cache. + + + + + Gets the overall percentage of progress of caching. + + + + + Additional arguments used when the engine completes the acquisition of a container or payload. + + + + + Creates a new instance of the class. + + + + + Gets the identifier of the container or package. + + + + + Gets the identifier of the payload (if acquiring a payload). + + + + + Additional arguments used when the engine starts the verification of a payload. + + + + + Creates a new instance of the class. + + + + + Gets the identifier of the package. + + + + + Gets the identifier of the payload. + + + + + Additional arguments used when the engine completes the verification of a payload. + + + + + Creates a new instance of the class. + + + + + Gets the identifier of the package. + + + + + Gets the identifier of the payload. + + + + + Additional arguments used after the engine has cached the installation sources. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used when the engine has begun installing packages. + + + + + Creates a new instance of the class. + + The number of packages to act on. + + + + Gets the number of packages to act on. + + + + + Additional arguments used when the engine has begun installing a specific package. + + + + + Creates a new instance of the class. + + The identity of the package to act on. + Whether the package should really be acted on. + + + + Gets the identity of the package to act on. + + + + + Gets whether the package should really be acted on. + + + + + Additional arguments used when the engine executes one or more patches targeting a product. + + + + + Creates a new instance of the class. + + The identity of the package to act on. + The product code of the target of the patch. + + + + Gets the identity of the package to act on. + + + + + Gets the product code being targeted. + + + + + Additional arguments used when the engine has encountered an error. + + + + + Creates a new instance of the class. + + The error type. + The identity of the package that yielded the error. + The error code. + The error message. + Recommended display flags for an error dialog. + The exteded data for the error. + Recommended result from engine. + + + + Gets the type of error that occurred. + + + + + Gets the identity of the package that yielded the error. + + + + + Gets the error code. + + + + + Gets the error message. + + + + + Gets the recommended display flags for an error dialog. + + + + + Gets the extended data for the error. + + + + + Additional arguments used when the engine has changed progress for the bundle installation. + + + + + Creates an new instance of the class. + + The percentage from 0 to 100 completed for a package. + The percentage from 0 to 100 completed for the bundle. + + + + Gets the percentage from 0 to 100 completed for a package. + + + + + Gets the percentage from 0 to 100 completed for the bundle. + + + + + Additional arguments used when Windows Installer sends an installation message. + + + + + Creates a new instance of the class. + + The identity of the package that yielded this message. + The type of this message. + Recommended display flags for this message. + The message. + The extended data for the message. + Recommended result from engine. + + + + Gets the identity of the package that yielded this message. + + + + + Gets the type of this message. + + + + + Gets the recommended display flags for this message. + + + + + Gets the message. + + + + + Gets the extended data for the message. + + + + + Additional arugments used for file in use installation messages. + + + + + Creates a new instance of the class. + + The identity of the package that yielded the files in use message. + The list of files in use. + + + + Gets the identity of the package that yielded the files in use message. + + + + + Gets the list of files in use. + + + + + Additional arguments used when the engine has completed installing a specific package. + + + + + Creates a new instance of the class. + + The identity of the packaged that was acted on. + The return code of the operation. + Whether a restart is required. + Recommended result from engine. + + + + Gets the identity of the package that was acted on. + + + + + Gets the package restart state after being applied. + + + + + Additional arguments used when the engine has completed installing packages. + + + + + Creates a new instance of the class. + + The return code of the operation. + + + + Additional arguments used by the engine to request a restart now or inform the user a manual restart is required later. + + + + + Creates a new instance of the class. + + + + + Gets or sets whether the engine should restart now. The default is false. + + + + + Additional arguments used when the engine has completed installing the bundle. + + + + + Creates a new instance of the clas. + + The return code of the operation. + Whether a restart is required. + + + + Gets the apply restart state when complete. + + + + + Additional arguments used by the engine to allow the user experience to change the source + using or . + + + + + Creates a new instance of the class. + + The identity of the package or container that requires source. + The identity of the payload that requires source. + The current path used for source resolution. + Optional URL to download container or payload. + + + + Gets the identity of the package or container that requires source. + + + + + Gets the identity of the payload that requires source. + + + + + Gets the current path used for source resolution. + + + + + Gets the optional URL to download container or payload. + + + + + Additional arguments used by the engine when it has begun caching a specific package. + + + + + Creates a new instance of the class. + + The identity of the package that is being cached. + Number of payloads to be cached. + The size on disk required by the specific package. + + + + Gets the identity of the package that is being cached. + + + + + Gets number of payloads to be cached. + + + + + Gets the size on disk required by the specific package. + + + + + Additional arguments passed by the engine when it has completed caching a specific package. + + + + + Creates a new instance of the class. + + The identity of the package that was cached. + The return code of the operation. + Recommended result from engine. + + + + Gets the identity of the package that was cached. + + + + + Additional arguments passed by the engine when it has begun downloading a specific payload. + + + + + Creates a new instance of the class. + + The identifier of the payload being downloaded. + The file name of the payload being downloaded. + + + + Gets the identifier of the payload being downloaded. + + + + + Gets the file name of the payload being downloaded. + + + + + Additional arguments passed by the engine when it has completed downloading a specific payload. + + + + + Creates a new instance of the class. + + The identifier of the payload that was downloaded. + The file name of the payload that was downloaded. + The return code of the operation. + + + + Gets the identifier of the payload that was downloaded. + + + + + Gets the file name of the payload that was downloaded. + + + + + Additional arguments passed by the engine while downloading payload. + + + + + Creates a new instance of the class. + + The percentage from 0 to 100 of the download progress for a single payload. + The percentage from 0 to 100 of the download progress for all payload. + + + + Gets the percentage from 0 to 100 of the download progress for a single payload. + + + + + Gets the percentage from 0 to 100 of the download progress for all payload. + + + + + Additional arguments passed by the engine while executing on payload. + + + + + Creates a new instance of the class. + + The identifier of the package being executed. + The percentage from 0 to 100 of the execution progress for a single payload. + The percentage from 0 to 100 of the execution progress for all payload. + + + + Gets the identity of the package that was executed. + + + + + Gets the percentage from 0 to 100 of the execution progress for a single payload. + + + + + Gets the percentage from 0 to 100 of the execution progress for all payload. + + + + + Additional arguments passed by the engine before it tries to launch the preapproved executable. + + + + + Additional arguments passed by the engine after it finished trying to launch the preapproved executable. + + + + + Gets the ProcessId of the process that was launched. + This is only valid if the status reports success. + + + + + Base class for exception returned to the bootstrapper application host. + + + + + Creates an instance of the base class with the given HRESULT. + + The HRESULT for the exception that is used by the bootstrapper application host. + + + + Initializes a new instance of the class. + + Exception message. + + + + Initializes a new instance of the class. + + Exception message + Inner exception associated with this one + + + + Initializes a new instance of the class. + + Serialization information for this exception + Streaming context to serialize to + + + + The bootstrapper application loaded by the host does not contain exactly one instance of the + class. + + + + + + Creates a new instance of the class. + + + + + Initializes a new instance of the class. + + Exception message. + + + + Initializes a new instance of the class. + + Exception message + Inner exception associated with this one + + + + Initializes a new instance of the class. + + Serialization information for this exception + Streaming context to serialize to + + + + The bootstrapper application specified by the + does not extend the base class. + + + + + + + Creates a new instance of the class. + + + + + Initializes a new instance of the class. + + Exception message. + + + + Initializes a new instance of the class. + + Exception message + Inner exception associated with this one + + + + Initializes a new instance of the class. + + Serialization information for this exception + Streaming context to serialize to + + + + Handler for the Host configuration section. + + + + + Creates a new instance of the class. + + + + + Gets the name of the assembly that contians the child class. + + + The assembly specified by this name must contain the to identify + the type of the child class. + + + + + Gets the of supported frameworks for the host configuration. + + + + + The display level for the UX. + + + + + Messages from Windows Installer. + + + + + The action to perform when a reboot is necessary. + + + + + Result codes. + + + + + Describes why a bundle or packaged is being resumed. + + + + + Resume information exists but is invalid. + + + + + The bundle was re-launched after an unexpected interruption. + + + + + A reboot is pending. + + + + + The bundle was re-launched after a reboot. + + + + + The bundle was re-launched after being suspended. + + + + + The bundle was launched from Add/Remove Programs. + + + + + Indicates what caused the error. + + + + + The error occurred trying to elevate. + + + + + The error came from the Windows Installer. + + + + + The error came from an EXE Package. + + + + + The error came while trying to authenticate with an HTTP server. + + + + + The error came while trying to authenticate with an HTTP proxy. + + + + + The related bundle or package will be downgraded. + + + + + The related package will be upgraded as a minor revision. + + + + + The related bundle or package will be upgraded as a major revision. + + + + + The related bundle will be removed. + + + + + The related bundle will be installed. + + + + + The related bundle will be repaired. + + + + + The cache operation used to acquire a container or payload. + + + + + Container or payload is being copied. + + + + + Container or payload is being downloaded. + + + + + Container or payload is being extracted. + + + + + The restart state after a package or all packages were applied. + + + + + Package or chain does not require a restart. + + + + + Package or chain requires a restart but it has not been initiated yet. + + + + + Package or chain has already initiated the restart. + + + + + The relation type for related bundles. + + + + + One or more reasons why the application is requested to be closed or is being closed. + + + + + The system is shutting down or restarting (it is not possible to determine which event is occurring). + + + + + The application is using a file that must be replaced, the system is being serviced, or system resources are exhausted. + + + + + The application is forced to shut down. + + + + + The user is logging off. + + + + + Command information passed from the engine for the user experience to perform. + + + + + Gets the command line arguments as a string array. + + + Array of command line arguments not handled by the engine. + + The command line could not be parsed into an array. + + This method uses the same parsing as the operating system which handles quotes and spaces correctly. + + + + + Gets the action for the user experience to perform. + + + + + Gets the display level for the user experience. + + + + + Gets the action to perform if a reboot is required. + + + + + Gets command line arguments that weren't processed by the engine. Can be null. + + + + + Gets layout directory. + + + + + Gets the method of how the engine was resumed from a previous installation step. + + + + + Gets the handle to the splash screen window. If no splash screen was displayed this value will be IntPtr.Zero. + + + + + If this was run from a related bundle, specifies the relation type. + + + + + If this was run from a backward compatible bundle. + + + + + Allows calls into the bootstrapper engine. + + + + + The installation action for the bundle or current package. + + + + + The action for the BA to perform. + + + + + The message log level. + + + + + No logging level (generic). + + + + + User messages. + + + + + Verbose messages. + + + + + Messages for debugging. + + + + + Error messages. + + + + + Type of hash used for update bundle. + + + + + No hash provided. + + + + + SHA-1 based hash provided. + + + + + Describes the state of an installation package. + + + + + Indicates the state desired for an installation package. + + + + + Indicates the state of a feature. + + + + + Indicates the action for a feature. + + + + + Contains native constants, functions, and structures for this assembly. + + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/MakeSfxCA.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/MakeSfxCA.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..b0602249b6bc26bf04aacda1475ba843a294afab --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/MakeSfxCA.exe.config @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.dll new file mode 100644 index 0000000000000000000000000000000000000000..e4d34c75e2874972c6d2c8da37be2ecc572b90ff Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.xml new file mode 100644 index 0000000000000000000000000000000000000000..8fded2a9447726fad3abdabc21ac8c142f6efa19 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Cab.xml @@ -0,0 +1,490 @@ + + + + Microsoft.Deployment.Compression.Cab + + + + + Disposes of resources allocated by the cabinet engine. + + 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. + + + + Disposes of resources allocated by the cabinet engine. + + 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. + + + + Engine capable of packing and unpacking archives in the cabinet format. + + + + + Creates a new instance of the cabinet engine. + + + + + Disposes of resources allocated by the cabinet engine. + + 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. + + + + Creates a cabinet or chain of cabinets. + + A context interface to handle opening + and closing of cabinet and file streams. + The paths of the files in the archive (not + external file paths). + The maximum number of bytes for one + cabinet before the contents are chained to the next cabinet, or zero + for unlimited cabinet size. + The cabinet could not be + created. + + The stream context implementation may provide a mapping from the + file paths within the cabinet to the external file paths. + Smaller folder sizes can make it more efficient to extract + individual files out of large cabinet packages. + + + + + Checks whether a Stream begins with a header that indicates + it is a valid cabinet file. + + Stream for reading the cabinet file. + True if the stream is a valid cabinet file + (with no offset); false otherwise. + + + + Gets information about files in a cabinet or cabinet chain. + + A context interface to handle opening + and closing of cabinet and file streams. + A predicate that can determine + which files to process, optional. + Information about files in the cabinet stream. + The cabinet provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Extracts files from a cabinet or cabinet chain. + + A context interface to handle opening + and closing of cabinet and file streams. + An optional predicate that can determine + which files to process. + The cabinet provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Exception class for cabinet operations. + + + + + Creates a new CabException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new CabException with a specified error message. + + The message that describes the error. + + + + Creates a new CabException. + + + + + Initializes a new instance of the CabException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the exception. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Gets the FCI or FDI cabinet engine error number. + + A cabinet engine error number, or 0 if the exception was + not related to a cabinet engine error number. + + + + Gets the Win32 error code. + + A Win32 error code, or 0 if the exception was + not related to a Win32 error. + + + + Disposes of resources allocated by the cabinet engine. + + 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. + + + + Object representing a compressed file within a cabinet package; provides operations for getting + the file properties and extracting the file. + + + + + Creates a new CabinetFileInfo object representing a file within a cabinet in a specified path. + + An object representing the cabinet containing the file. + 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. + + + + Creates a new CabinetFileInfo object with all parameters specified, + used internally when reading the metadata out of a cab. + + The internal path and name of the file in the cab. + The folder number containing the file. + The cabinet number where the file starts. + The stored attributes of the file. + The stored last write time of the file. + The uncompressed size of the file. + + + + Initializes a new instance of the CabinetFileInfo class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the archive. + + The SerializationInfo that holds the serialized object data. + The StreamingContext that contains contextual information + about the source or destination. + + + + Refreshes the information in this object with new data retrieved + from an archive. + + Fresh instance for the same file just + read from the archive. + + This implementation refreshes the . + + + + + Gets or sets the cabinet that contains this file. + + + The CabinetInfo instance that retrieved this file information -- this + may be null if the CabinetFileInfo object was returned directly from a + stream. + + + + + Gets the full path of the cabinet that contains this file. + + The full path of the cabinet that contains this file. + + + + Gets the number of the folder containing this file. + + The number of the cabinet folder containing this file. + A single folder or the first folder of a cabinet + (or chain of cabinets) is numbered 0. + + + + Object representing a cabinet file on disk; provides access to + file-based operations on the cabinet file. + + + Generally, the methods on this class are much easier to use than the + stream-based interfaces provided by the class. + + + + + Creates a new CabinetInfo object representing a cabinet file in a specified path. + + The path to the cabinet file. When creating a cabinet file, this file does not + necessarily exist yet. + + + + Initializes a new instance of the CabinetInfo class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Creates a compression engine that does the low-level work for + this object. + + A new instance. + + Each instance will be d + immediately after use. + + + + + Gets information about the files contained in the archive. + + A list of objects, each + containing information about a file in the archive. + + + + Gets information about the certain files contained in the archive file. + + The search string, such as + "*.txt". + A list of objects, each containing + information about a file in the archive. + + + + Generic class for managing allocations of integer handles + for objects of a certain type. + + The type of objects the handles refer to. + + + + 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. + + + + + Creates a new HandleManager instance. + + + + + Allocates a new handle for an object. + + Object that the handle will refer to. + New handle that can be later used to retrieve the object. + + + + Frees a handle that was previously allocated. Afterward the handle + will be invalid and the object it referred to can no longer retrieved. + + Handle to be freed. + + + + Gets the object of a handle, or null if the handle is invalid. + + The integer handle previously allocated + for the desired object. + The object for which the handle was allocated. + + + + Native DllImport methods and related structures and constants used for + cabinet creation and extraction via cabinet.dll. + + + + + A direct import of constants, enums, structures, delegates, and functions from fci.h. + Refer to comments in fci.h for documentation. + + + + + Error codes that can be returned by FCI. + + + + + FCI compression algorithm types and parameters. + + + + + Reason for FCI status callback. + + + + + Cabinet information structure used for FCI initialization and GetNextCabinet callback. + + + + + Ensures that the FCI handle is safely released. + + + + + Creates a new unintialized handle. The handle will be initialized + when it is marshalled back from native code. + + + + + Releases the handle by calling FDIDestroy(). + + True if the release succeeded. + + + + Checks if the handle is invalid. An FCI handle is invalid when it is zero. + + + + + A direct import of constants, enums, structures, delegates, and functions from fdi.h. + Refer to comments in fdi.h for documentation. + + + + + Error codes that can be returned by FDI. + + + + + Type of notification message for the FDI Notify callback. + + + + + Cabinet information structure filled in by FDI IsCabinet. + + + + + Cabinet notification details passed to the FDI Notify callback. + + + + + Ensures that the FDI handle is safely released. + + + + + Creates a new unintialized handle. The handle will be initialized + when it is marshalled back from native code. + + + + + Releases the handle by calling FDIDestroy(). + + True if the release succeeded. + + + + Checks if the handle is invalid. An FDI handle is invalid when it is zero. + + + + + Error info structure for FCI and FDI. + + 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. + + + + Clears the error information. + + + + + Gets or sets the cabinet error code. + + + + + Gets or sets the Win32 error code. + + + + + GCHandle doesn't like the bool type, so use an int underneath. + + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.dll new file mode 100644 index 0000000000000000000000000000000000000000..42002f133c81b73743292277b74de54eb699cd18 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.xml new file mode 100644 index 0000000000000000000000000000000000000000..361799cc587ce31afabfa53959aa95728981aff4 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.Zip.xml @@ -0,0 +1,547 @@ + + + + Microsoft.Deployment.Compression.Zip + + + + + Used to trick a DeflateStream into reading from or writing to + a series of (chunked) streams instead of a single steream. + + + + + Wraps a source stream and calcaluates a CRC over all bytes that are read or written. + + + The CRC algorithm matches that used in the standard ZIP file format. + + + + + Creates a new CrcStream instance from a source stream. + + Underlying stream where bytes will be read from or written to. + + + + Sets the position within the source stream. + + A byte offset relative to the origin parameter. + A value of type SeekOrigin indicating + the reference point used to obtain the new position. + The new position within the source stream. + + Note the CRC is only calculated over bytes that are actually read or + written, so any bytes skipped by seeking will not contribute to the CRC. + + + + + Sets the length of the source stream. + + The desired length of the + stream in bytes. + + + + Reads a sequence of bytes from the source stream and advances + the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer + contains the specified byte array with the values between offset and + (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin + storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The total number of bytes read into the buffer. This can be less + than the number of bytes requested if that many bytes are not currently available, + or zero (0) if the end of the stream has been reached. + + + + Writes a sequence of bytes to the source stream and advances the + current position within this stream by the number of bytes written. + + An array of bytes. This method copies count + bytes from buffer to the current stream. + The zero-based byte offset in buffer at which + to begin copying bytes to the current stream. + The number of bytes to be written to the + current stream. + + + + Flushes the source stream. + + + + + Closes the underlying stream. + + + + + Updates the CRC with a range of bytes that were read or written. + + + + + Computes a table that speeds up calculation of the CRC. + + + + + Reflects the ordering of certain number of bits. For exmample when reflecting + one byte, bit one is swapped with bit eight, bit two with bit seven, etc. + + + + + Gets the current CRC over all bytes that have been read or written + since this instance was created. + + + + + Gets the underlying stream that this stream reads from or writes to. + + + + + Gets a value indicating whether the source stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the source stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the source stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + Gets the length of the source stream. + + + + + Gets or sets the position of the source stream. + + + + + Identifies the compression method or "algorithm" + used for a single file within a zip archive. + + + Proprietary zip implementations may define additional compression + methods outside of those included here. + + + + + The file is stored (no compression) + + + + + The file is Shrunk + + + + + The file is Reduced with compression factor 1 + + + + + The file is Reduced with compression factor 2 + + + + + The file is Reduced with compression factor 3 + + + + + The file is Reduced with compression factor 4 + + + + + The file is Imploded + + + + + The file is Deflated; + the most common and widely-compatible form of zip compression. + + + + + The file is Deflated using the enhanced Deflate64 method. + + + + + The file is compressed using the BZIP2 algorithm. + + + + + The file is compressed using the LZMA algorithm. + + + + + The file is compressed using the PPMd algorithm. + + + + + Exception class for zip operations. + + + + + Creates a new ZipException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new ZipException with a specified error message. + + The message that describes the error. + + + + Creates a new ZipException. + + + + + Initializes a new instance of the ZipException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the exception. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Engine capable of packing and unpacking archives in the zip format. + + + + + Registers a delegate that can create a warpper stream for + compressing or uncompressing the data of a source stream. + + Compression method being registered. + Indicates registration for ether + compress or decompress mode. + Delegate being registered. + + For compression, the delegate accepts a stream that writes to the archive + and returns a wrapper stream that compresses bytes as they are written. + For decompression, the delegate accepts a stream that reads from the archive + and returns a wrapper stream that decompresses bytes as they are read. + This wrapper stream model follows the design used by + System.IO.Compression.DeflateStream, and indeed that class is used + to implement the Deflate compression method by default. + To unregister a delegate, call this method again and pass + null for the delegate parameter. + + + When the ZipEngine class is initialized, the Deflate compression method + is automatically registered like this: + + ZipEngine.RegisterCompressionStreamCreator( + ZipCompressionMethod.Deflate, + CompressionMode.Compress, + delegate(Stream stream) { + return new DeflateStream(stream, CompressionMode.Compress, true); + }); + ZipEngine.RegisterCompressionStreamCreator( + ZipCompressionMethod.Deflate, + CompressionMode.Decompress, + delegate(Stream stream) { + return new DeflateStream(stream, CompressionMode.Decompress, true); + }); + + + + + Creates a new instance of the zip engine. + + + + + Checks whether a Stream begins with a header that indicates + it is a valid archive file. + + Stream for reading the archive file. + True if the stream is a valid zip archive + (with no offset); false otherwise. + + + + Gets the offset of an archive that is positioned 0 or more bytes + from the start of the Stream. + + A stream for reading the archive. + The offset in bytes of the archive, + or -1 if no archive is found in the Stream. + The archive must begin on a 4-byte boundary. + + + + Gets information about files in a zip archive or archive chain. + + A context interface to handle opening + and closing of archive and file streams. + A predicate that can determine + which files to process, optional. + Information about files in the archive stream. + The archive provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Reads all the file headers from the central directory in the main archive. + + + + + Locates and reads the end of central directory record near the + end of the archive. + + + + + Creates a zip archive or chain of zip archives. + + A context interface to handle opening + and closing of archive and file streams. + An array of file lists. Each list is + compressed into one stream in the archive. + The maximum number of bytes for one archive + before the contents are chained to the next archive, or zero for unlimited + archive size. + The archive could not be + created. + + The stream context implementation may provide a mapping from the file + paths within the archive to the external file paths. + + + + + Moves to the next archive in the sequence if necessary. + + + + + Adds one file to a zip archive in the process of being created. + + + + + Writes compressed bytes of one file to the archive, + keeping track of the CRC and number of bytes written. + + + + + Extracts files from a zip archive or archive chain. + + A context interface to handle opening + and closing of archive and file streams. + An optional predicate that can determine + which files to process. + The archive provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Unpacks a single file from an archive or archive chain. + + + + + Compares two internal file paths while ignoring case and slash differences. + + The first path to compare. + The second path to compare. + True if the paths are equivalent. + + + + Decompresses bytes for one file from an archive or archive chain, + checking the crc at the end. + + + + + Gets the comment from the last-examined archive, + or sets the comment to be added to any created archives. + + + + + Object representing a compressed file within a zip package; provides operations for getting + the file properties and extracting the file. + + + + + Creates a new ZipFileInfo object representing a file within a zip in a specified path. + + An object representing the zip archive containing the file. + The path to the file within the zip archive. Usually, this is a simple file + name, but if the zip archive contains a directory structure this may include the directory. + + + + Creates a new ZipFileInfo object with all parameters specified, + used internally when reading the metadata out of a zip archive. + + The internal path and name of the file in the zip archive. + The zip archive number where the file starts. + The stored attributes of the file. + The stored last write time of the file. + The uncompressed size of the file. + The compressed size of the file. + Compression algorithm used for this file. + + + + Initializes a new instance of the ZipFileInfo class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the archive. + + The SerializationInfo that holds the serialized object data. + The StreamingContext that contains contextual information + about the source or destination. + + + + Gets the compressed size of the file in bytes. + + + + + Gets the method used to compress this file. + + + + + Object representing a zip file on disk; provides access to + file-based operations on the zip file. + + + Generally, the methods on this class are much easier to use than the + stream-based interfaces provided by the class. + + + + + Creates a new CabinetInfo object representing a zip file in a specified path. + + The path to the zip file. When creating a zip file, this file does not + necessarily exist yet. + + + + Initializes a new instance of the CabinetInfo class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Creates a compression engine that does the low-level work for + this object. + + A new instance. + + Each instance will be d + immediately after use. + + + + + Gets information about the files contained in the archive. + + A list of objects, each + containing information about a file in the archive. + + + + Gets information about the certain files contained in the archive file. + + The search string, such as + "*.txt". + A list of objects, each containing + information about a file in the archive. + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.dll new file mode 100644 index 0000000000000000000000000000000000000000..7852138084d16585dd7568561e5c74c0d06cb0bd Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.xml new file mode 100644 index 0000000000000000000000000000000000000000..e27bb820ca7c85dac3c333a29fc3d29d794012d7 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Compression.xml @@ -0,0 +1,1960 @@ + + + + Microsoft.Deployment.Compression + + + + + Base exception class for compression operations. Compression libraries should + derive subclass exceptions with more specific error information relevent to the + file format. + + + + + Creates a new ArchiveException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new ArchiveException with a specified error message. + + The message that describes the error. + + + + Creates a new ArchiveException. + + + + + Initializes a new instance of the ArchiveException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Abstract object representing a compressed file within an archive; + provides operations for getting the file properties and unpacking + the file. + + + + + Creates a new ArchiveFileInfo object representing a file within + an archive in a specified path. + + An object representing the archive + containing the file. + The path to the file within the archive. + Usually, this is a simple file name, but if the archive contains + a directory structure this may include the directory. + + + + Creates a new ArchiveFileInfo object with all parameters specified; + used by subclasses when reading the metadata out of an archive. + + The internal path and name of the file in + the archive. + The archive number where the file + starts. + The stored attributes of the file. + The stored last write time of the + file. + The uncompressed size of the file. + + + + Initializes a new instance of the ArchiveFileInfo class with + serialized data. + + The SerializationInfo that holds the serialized + object data about the exception being thrown. + The StreamingContext that contains contextual + information about the source or destination. + + + + Sets the SerializationInfo with information about the archive. + + The SerializationInfo that holds the serialized + object data. + The StreamingContext that contains contextual + information about the source or destination. + + + + Gets the full path to the file. + + The same as + + + + Deletes the file. NOT SUPPORTED. + + Files cannot be deleted + from an existing archive. + + + + Refreshes the attributes and other cached information about the file, + by re-reading the information from the archive. + + + + + Extracts the file. + + The destination path where the file + will be extracted. + + + + Extracts the file, optionally overwriting any existing file. + + The destination path where the file + will be extracted. + If true, + will be overwritten if it exists. + is false + and exists. + + + + Opens the archive file for reading without actually extracting the + file to disk. + + + A stream for reading directly from the packed file. Like any stream + this should be closed/disposed as soon as it is no longer needed. + + + + + Opens the archive file reading text with UTF-8 encoding without + actually extracting the file to disk. + + + A reader for reading text directly from the packed file. Like any reader + this should be closed/disposed as soon as it is no longer needed. + + + To open an archived text file with different encoding, use the + method and pass the returned stream to one of + the constructor overloads. + + + + + Refreshes the information in this object with new data retrieved + from an archive. + + Fresh instance for the same file just + read from the archive. + + Subclasses may override this method to refresh sublcass fields. + However they should always call the base implementation first. + + + + + Gets the name of the file. + + The name of the file, not including any path. + + + + Gets the internal path of the file in the archive. + + The internal path of the file in the archive, not including + the file name. + + + + Gets the full path to the file. + + The full path to the file, including the full path to the + archive, the internal path in the archive, and the file name. + + For example, the path "C:\archive.cab\file.txt" refers to + a file "file.txt" inside the archive "archive.cab". + + + + + Gets or sets the archive that contains this file. + + + The ArchiveInfo instance that retrieved this file information -- this + may be null if the ArchiveFileInfo object was returned directly from + a stream. + + + + + Gets the full path of the archive that contains this file. + + The full path of the archive that contains this file. + + + + Gets the number of the archive where this file starts. + + The number of the archive where this file starts. + A single archive or the first archive in a chain is + numbered 0. + + + + Checks if the file exists within the archive. + + True if the file exists, false otherwise. + + + + Gets the uncompressed size of the file. + + The uncompressed size of the file in bytes. + + + + Gets the attributes of the file. + + The attributes of the file as stored in the archive. + + + + Gets the last modification time of the file. + + The last modification time of the file as stored in the + archive. + + + + Abstract object representing a compressed archive on disk; + provides access to file-based operations on the archive. + + + + + Creates a new ArchiveInfo object representing an archive in a + specified path. + + The path to the archive. When creating an archive, + this file does not necessarily exist yet. + + + + Initializes a new instance of the ArchiveInfo class with serialized data. + + The SerializationInfo that holds the serialized object + data about the exception being thrown. + The StreamingContext that contains contextual + information about the source or destination. + + + + Gets the full path of the archive. + + The full path of the archive. + + + + Deletes the archive. + + + + + Copies an existing archive to another location. + + The destination file path. + + + + Copies an existing archive to another location, optionally + overwriting the destination file. + + The destination file path. + If true, the destination file will be + overwritten if it exists. + + + + Moves an existing archive to another location. + + The destination file path. + + + + Checks if the archive contains a valid archive header. + + True if the file is a valid archive; false otherwise. + + + + Gets information about the files contained in the archive. + + A list of objects, each + containing information about a file in the archive. + + + + Gets information about the certain files contained in the archive file. + + The search string, such as + "*.txt". + A list of objects, each containing + information about a file in the archive. + + + + Extracts all files from an archive to a destination directory. + + Directory where the files are to be + extracted. + + + + Extracts all files from an archive to a destination directory, + optionally extracting only newer files. + + Directory where the files are to be + extracted. + Handler for receiving progress + information; this may be null if progress is not desired. + + + + Extracts a single file from the archive. + + The name of the file in the archive. Also + includes the internal path of the file, if any. File name matching + is case-insensitive. + The path where the file is to be + extracted on disk. + If already exists, + it will be overwritten. + + + + Extracts multiple files from the archive. + + The names of the files in the archive. + Each name includes the internal path of the file, if any. File name + matching is case-insensitive. + This parameter may be null, but if + specified it is the root directory for any relative paths in + . + The paths where the files are to be + extracted on disk. If this parameter is null, the files will be + extracted with the names from the archive. + + If any extracted files already exist on disk, they will be overwritten. +

The and + parameters cannot both be null.

+
+
+ + + Extracts multiple files from the archive, optionally extracting + only newer files. + + The names of the files in the archive. + Each name includes the internal path of the file, if any. File name + matching is case-insensitive. + This parameter may be null, but if + specified it is the root directory for any relative paths in + . + The paths where the files are to be + extracted on disk. If this parameter is null, the files will be + extracted with the names from the archive. + Handler for receiving progress information; + this may be null if progress is not desired. + + If any extracted files already exist on disk, they will be overwritten. +

The and + parameters cannot both be null.

+
+
+ + + Extracts multiple files from the archive. + + A mapping from internal file paths to + external file paths. Case-senstivity when matching internal paths + depends on the IDictionary implementation. + This parameter may be null, but if + specified it is the root directory for any relative external paths + in . + + If any extracted files already exist on disk, they will be overwritten. + + + + + Extracts multiple files from the archive. + + A mapping from internal file paths to + external file paths. Case-senstivity when matching internal + paths depends on the IDictionary implementation. + This parameter may be null, but if + specified it is the root directory for any relative external + paths in . + Handler for receiving progress + information; this may be null if progress is not desired. + + If any extracted files already exist on disk, they will be overwritten. + + + + + Opens a file inside the archive for reading without actually + extracting the file to disk. + + The name of the file in the archive. Also + includes the internal path of the file, if any. File name matching + is case-insensitive. + + A stream for reading directly from the packed file. Like any stream + this should be closed/disposed as soon as it is no longer needed. + + + + + Opens a file inside the archive for reading text with UTF-8 encoding + without actually extracting the file to disk. + + The name of the file in the archive. Also + includes the internal path of the file, if any. File name matching + is case-insensitive. + + A reader for reading text directly from the packed file. Like any reader + this should be closed/disposed as soon as it is no longer needed. + + + To open an archived text file with different encoding, use the + method and pass the returned stream to one of + the constructor overloads. + + + + + Compresses all files in a directory into the archive. + Does not include subdirectories. + + The directory containing the + files to be included. + + Uses maximum compression level. + + + + + Compresses all files in a directory into the archive, optionally + including subdirectories. + + This is the root directory + for to pack all files. + If true, recursively include + files in subdirectories. + The compression level used when creating + the archive. + Handler for receiving progress information; + this may be null if progress is not desired. + + The files are stored in the archive using their relative file paths in + the directory tree, if supported by the archive file format. + + + + + Compresses files into the archive, specifying the names used to + store the files in the archive. + + This parameter may be null, but + if specified it is the root directory + for any relative paths in . + The list of files to be included in + the archive. + The names of the files as they are stored + in the archive. Each name + includes the internal path of the file, if any. This parameter may + be null, in which case the files are stored in the archive with their + source file names and no path information. + + Uses maximum compression level. +

Duplicate items in the array will cause + an .

+
+
+ + + Compresses files into the archive, specifying the names used to + store the files in the archive. + + This parameter may be null, but if + specified it is the root directory + for any relative paths in . + The list of files to be included in + the archive. + The names of the files as they are stored in + the archive. Each name includes the internal path of the file, if any. + This parameter may be null, in which case the files are stored in the + archive with their source file names and no path information. + The compression level used when creating the + archive. + Handler for receiving progress information; + this may be null if progress is not desired. + + Duplicate items in the array will cause + an . + + + + + Compresses files into the archive, specifying the names used + to store the files in the archive. + + This parameter may be null, but if + specified it is the root directory + for any relative paths in . + A mapping from internal file paths to + external file paths. + + Uses maximum compression level. + + + + + Compresses files into the archive, specifying the names used to + store the files in the archive. + + This parameter may be null, but if + specified it is the root directory + for any relative paths in . + A mapping from internal file paths to + external file paths. + The compression level used when creating + the archive. + Handler for receiving progress information; + this may be null if progress is not desired. + + + + Given a directory, gets the relative paths of all files in the + directory, optionally including all subdirectories. + + The directory to search. + True to include subdirectories + in the search. + A list of file paths relative to the directory. + + + + Retrieves information about one file from this archive. + + Path of the file in the archive. + File information, or null if the file was not found + in the archive. + + + + Creates a compression engine that does the low-level work for + this object. + + A new compression engine instance that matches the specific + subclass of archive. + + Each instance will be d + immediately after use. + + + + + Creates a case-insensitive dictionary mapping from one list of + strings to the other. + + List of keys. + List of values that are mapped 1-to-1 to + the keys. + A filled dictionary of the strings. + + + + Recursive-descent helper function for + GetRelativeFilePathsInDirectoryTree. + + The root directory of the search. + The relative directory to be + processed now. + True to descend into + subdirectories. + List of files found so far. + + + + Uses a CompressionEngine to get ArchiveFileInfo objects from this + archive, and then associates them with this ArchiveInfo instance. + + Optional predicate that can determine + which files to process. + A list of objects, each + containing information about a file in the archive. + + + + Gets the directory that contains the archive. + + A DirectoryInfo object representing the parent directory of the + archive. + + + + Gets the full path of the directory that contains the archive. + + The full path of the directory that contains the archive. + + + + Gets the size of the archive. + + The size of the archive in bytes. + + + + Gets the file name of the archive. + + The file name of the archive, not including any path. + + + + Checks if the archive exists. + + True if the archive exists; else false. + + + + Contains the data reported in an archive progress event. + + + + + Creates a new ArchiveProgressEventArgs object from specified event parameters. + + type of status message + name of the file being processed + number of the current file being processed + total number of files to be processed + number of bytes processed so far when compressing or extracting a file + total number of bytes in the current file + name of the current Archive + current Archive number, when processing a chained set of Archives + total number of Archives in a chained set + number of compressed bytes processed so far during an extraction + total number of compressed bytes to be processed during an extraction + number of uncompressed file bytes processed so far + total number of uncompressed file bytes to be processed + + + + Gets the type of status message. + + A value indicating what type of progress event occurred. + + The handler may choose to ignore some types of progress events. + For example, if the handler will only list each file as it is + compressed/extracted, it can ignore events that + are not of type . + + + + + Gets the name of the file being processed. (The name of the file within the Archive; not the external + file path.) Also includes the internal path of the file, if any. Valid for + , , + and messages. + + The name of the file currently being processed, or null if processing + is currently at the stream or archive level. + + + + Gets the number of the current file being processed. The first file is number 0, and the last file + is -1. Valid for , + , and messages. + + The number of the file currently being processed, or the most recent + file processed if processing is currently at the stream or archive level. + + + + Gets the total number of files to be processed. Valid for all message types. + + The total number of files to be processed that are known so far. + + + + Gets the number of bytes processed so far when compressing or extracting a file. Valid for + , , + and messages. + + The number of uncompressed bytes processed so far for the current file, + or 0 if processing is currently at the stream or archive level. + + + + Gets the total number of bytes in the current file. Valid for , + , and messages. + + The uncompressed size of the current file being processed, + or 0 if processing is currently at the stream or archive level. + + + + Gets the name of the current archive. Not necessarily the name of the archive on disk. + Valid for all message types. + + The name of the current archive, or an empty string if no name was specified. + + + + Gets the current archive number, when processing a chained set of archives. Valid for all message types. + + The number of the current archive. + The first archive is number 0, and the last archive is + -1. + + + + Gets the total number of known archives in a chained set. Valid for all message types. + + The total number of known archives in a chained set. + + When using the compression option to auto-split into multiple archives based on data size, + this value will not be accurate until the end. + + + + + Gets the number of compressed bytes processed so far during extraction + of the current archive. Valid for all extraction messages. + + The number of compressed bytes processed so far during extraction + of the current archive. + + + + Gets the total number of compressed bytes to be processed during extraction + of the current archive. Valid for all extraction messages. + + The total number of compressed bytes to be processed during extraction + of the current archive. + + + + Gets the number of uncompressed bytes processed so far among all files. Valid for all message types. + + The number of uncompressed file bytes processed so far among all files. + + When compared to , this can be used as a measure of overall progress. + + + + + Gets the total number of uncompressed file bytes to be processed. Valid for all message types. + + The total number of uncompressed bytes to be processed among all files. + + + + The type of progress event. + + +

PACKING EXAMPLE: The following sequence of events might be received when + extracting a simple archive file with 2 files.

+ + Message TypeDescription + StartArchive Begin extracting archive + StartFile Begin extracting first file + PartialFile Extracting first file + PartialFile Extracting first file + FinishFile Finished extracting first file + StartFile Begin extracting second file + PartialFile Extracting second file + FinishFile Finished extracting second file + FinishArchiveFinished extracting archive + +

+

UNPACKING EXAMPLE: Packing 3 files into 2 archive chunks, where the second file is + continued to the second archive chunk.

+ + Message TypeDescription + StartFile Begin compressing first file + FinishFile Finished compressing first file + StartFile Begin compressing second file + PartialFile Compressing second file + PartialFile Compressing second file + FinishFile Finished compressing second file + StartArchive Begin writing first archive + PartialArchiveWriting first archive + FinishArchive Finished writing first archive + StartFile Begin compressing third file + PartialFile Compressing third file + FinishFile Finished compressing third file + StartArchive Begin writing second archive + PartialArchiveWriting second archive + FinishArchive Finished writing second archive + +
+
+ + Status message before beginning the packing or unpacking an individual file. + + + Status message (possibly reported multiple times) during the process of packing or unpacking a file. + + + Status message after completion of the packing or unpacking an individual file. + + + Status message before beginning the packing or unpacking an archive. + + + Status message (possibly reported multiple times) during the process of packing or unpacking an archiv. + + + Status message after completion of the packing or unpacking of an archive. + + + + Provides a basic implementation of the archive pack and unpack stream context + interfaces, based on a list of archive files, a default directory, and an + optional mapping from internal to external file paths. + + + This class can also handle creating or extracting chained archive packages. + + + + + This interface provides the methods necessary for the + to open and close streams for archives + and files. The implementor of this interface can use any kind of logic + to determine what kind of streams to open and where. + + + + + Gets the name of the archive with a specified number. + + The 0-based index of the archive + within the chain. + The name of the requested archive. May be an empty string + for non-chained archives, but may never be null. + The archive name is the name stored within the archive, used for + identification of the archive especially among archive chains. That + name is often, but not necessarily the same as the filename of the + archive package. + + + + Opens a stream for writing an archive package. + + The 0-based index of the archive within + the chain. + The name of the archive that was returned + by . + True if the stream should be truncated when + opened (if it already exists); false if an existing stream is being + re-opened for writing additional data. + Instance of the compression engine + doing the operations. + A writable Stream where the compressed archive bytes will be + written, or null to cancel the archive creation. + + If this method returns null, the archive engine will throw a + FileNotFoundException. + + + + + Closes a stream where an archive package was written. + + The 0-based index of the archive within + the chain. + The name of the archive that was previously + returned by + . + A stream that was previously returned by + and is now ready to be closed. + + If there is another archive package in the chain, then after this stream + is closed a new stream will be opened. + + + + + Opens a stream to read a file that is to be included in an archive. + + The path of the file within the archive. This is often, + but not necessarily, the same as the relative path of the file outside + the archive. + Returned attributes of the opened file, to be + stored in the archive. + Returned last-modified time of the opened file, + to be stored in the archive. + A readable Stream where the file bytes will be read from before + they are compressed, or null to skip inclusion of the file and continue to + the next file. + + + + Closes a stream that has been used to read a file. + + The path of the file within the archive; the same as + the path provided + when the stream was opened. + A stream that was previously returned by + and is now ready to be closed. + + + + Gets extended parameter information specific to the compression + format being used. + + Name of the option being requested. + Parameters for the option; for per-file options, + the first parameter is typically the internal file path. + Option value, or null to use the default behavior. + + This method provides a way to set uncommon options during packaging, or a + way to handle aspects of compression formats not supported by the base library. + For example, this may be used by the zip compression library to + specify different compression methods/levels on a per-file basis. + The available option names, parameters, and expected return values + should be documented by each compression library. + + + + + This interface provides the methods necessary for the to open + and close streams for archives and files. The implementor of this interface can use any + kind of logic to determine what kind of streams to open and where + + + + + Opens the archive stream for reading. + + The zero-based index of the archive to open. + The name of the archive being opened. + Instance of the compression engine doing the operations. + A stream from which archive bytes are read, or null to cancel extraction + of the archive. + + When the first archive in a chain is opened, the name is not yet known, so the + provided value will be an empty string. When opening further archives, the + provided value is the next-archive name stored in the previous archive. This + name is often, but not necessarily, the same as the filename of the archive + package to be opened. + If this method returns null, the archive engine will throw a + FileNotFoundException. + + + + + Closes a stream where an archive package was read. + + The archive number of the stream to close. + The name of the archive being closed. + The stream that was previously returned by + and is now ready to be closed. + + + + Opens a stream for writing extracted file bytes. + + The path of the file within the archive. This is often, but + not necessarily, the same as the relative path of the file outside the archive. + The uncompressed size of the file to be extracted. + The last write time of the file to be extracted. + A stream where extracted file bytes are to be written, or null to skip + extraction of the file and continue to the next file. + + The implementor may use the path, size and date information to dynamically + decide whether or not the file should be extracted. + + + + + Closes a stream where an extracted file was written. + + The path of the file within the archive. + The stream that was previously returned by + and is now ready to be closed. + The attributes of the extracted file. + The last write time of the file. + + The implementor may wish to apply the attributes and date to the newly-extracted file. + + + + + Creates a new ArchiveFileStreamContext with a archive file and + no default directory or file mapping. + + The path to a archive file that will be + created or extracted. + + + + Creates a new ArchiveFileStreamContext with a archive file, default + directory and mapping from internal to external file paths. + + The path to a archive file that will be + created or extracted. + The default root directory where files will be + located, optional. + A mapping from internal file paths to external file + paths, optional. + + If the mapping is not null and a file is not included in the mapping, + the file will be skipped. + If the external path in the mapping is a simple file name or + relative file path, it will be concatenated onto the default directory, + if one was specified. + For more about how the default directory and files mapping are + used, see and + . + + + + + Creates a new ArchiveFileStreamContext with a list of archive files, + a default directory and a mapping from internal to external file paths. + + A list of paths to archive files that will be + created or extracted. + The default root directory where files will be + located, optional. + A mapping from internal file paths to external file + paths, optional. + + When creating chained archives, the list + should include at least enough archives to handle the entire set of + input files, based on the maximum archive size that is passed to the + .. + If the mapping is not null and a file is not included in the mapping, + the file will be skipped. + If the external path in the mapping is a simple file name or + relative file path, it will be concatenated onto the default directory, + if one was specified. + For more about how the default directory and files mapping are used, + see and + . + + + + + Gets the name of the archive with a specified number. + + The 0-based index of the archive within + the chain. + The name of the requested archive. May be an empty string + for non-chained archives, but may never be null. + This method returns the file name of the archive from the + list with the specified index, or an empty + string if the archive number is outside the bounds of the list. The + file name should not include any directory path. + + + + Opens a stream for writing an archive. + + The 0-based index of the archive within + the chain. + The name of the archive that was returned + by . + True if the stream should be truncated when + opened (if it already exists); false if an existing stream is being + re-opened for writing additional data. + Instance of the compression engine + doing the operations. + A writable Stream where the compressed archive bytes will be + written, or null to cancel the archive creation. + + This method opens the file from the list + with the specified index. If the archive number is outside the bounds + of the list, this method returns null. + If the flag is set, this method + will seek to the start of any existing archive in the file, or to the + end of the file if the existing file is not an archive. + + + + + Closes a stream where an archive package was written. + + The 0-based index of the archive within + the chain. + The name of the archive that was previously + returned by . + A stream that was previously returned by + and is now ready to be closed. + + + + Opens a stream to read a file that is to be included in an archive. + + The path of the file within the archive. + The returned attributes of the opened file, + to be stored in the archive. + The returned last-modified time of the + opened file, to be stored in the archive. + A readable Stream where the file bytes will be read from + before they are compressed, or null to skip inclusion of the file and + continue to the next file. + + This method opens a file using the following logic: + + If the and the mapping + are both null, the path is treated as relative to the current directory, + and that file is opened. + If the is not null but the + mapping is null, the path is treated as relative to that directory, and + that file is opened. + If the is null but the + mapping is not null, the path parameter is used as a key into the mapping, + and the resulting value is the file path that is opened, relative to the + current directory (or it may be an absolute path). If no mapping exists, + the file is skipped. + If both the and the + mapping are specified, the path parameter is used as a key into the + mapping, and the resulting value is the file path that is opened, relative + to the specified directory (or it may be an absolute path). If no mapping + exists, the file is skipped. + + + + + + Closes a stream that has been used to read a file. + + The path of the file within the archive; the same as + the path provided when the stream was opened. + A stream that was previously returned by + and is now ready to be closed. + + + + Gets extended parameter information specific to the compression format + being used. + + Name of the option being requested. + Parameters for the option; for per-file options, + the first parameter is typically the internal file path. + Option value, or null to use the default behavior. + + This implementation does not handle any options. Subclasses may override + this method to allow for non-default behavior. + + + + + Opens the archive stream for reading. + + The zero-based index of the archive to + open. + The name of the archive being opened. + Instance of the compression engine + doing the operations. + A stream from which archive bytes are read, or null to cancel + extraction of the archive. + + This method opens the file from the list with + the specified index. If the archive number is outside the bounds of the + list, this method returns null. + If the flag is set, this method will + seek to the start of any existing archive in the file, or to the end of + the file if the existing file is not an archive. + + + + + Closes a stream where an archive was read. + + The archive number of the stream + to close. + The name of the archive being closed. + The stream that was previously returned by + and is now ready to be closed. + + + + Opens a stream for writing extracted file bytes. + + The path of the file within the archive. + The uncompressed size of the file to be + extracted. + The last write time of the file to be + extracted. + A stream where extracted file bytes are to be written, or null + to skip extraction of the file and continue to the next file. + + This method opens a file using the following logic: + + If the and the mapping + are both null, the path is treated as relative to the current directory, + and that file is opened. + If the is not null but the + mapping is null, the path is treated as relative to that directory, and + that file is opened. + If the is null but the + mapping is not null, the path parameter is used as a key into the mapping, + and the resulting value is the file path that is opened, relative to the + current directory (or it may be an absolute path). If no mapping exists, + the file is skipped. + If both the and the + mapping are specified, the path parameter is used as a key into the + mapping, and the resulting value is the file path that is opened, + relative to the specified directory (or it may be an absolute path). + If no mapping exists, the file is skipped. + + If the flag is set, the file + is skipped if a file currently exists in the same path with an equal + or newer write time. + + + + + Closes a stream where an extracted file was written. + + The path of the file within the archive. + The stream that was previously returned by + and is now ready to be closed. + The attributes of the extracted file. + The last write time of the file. + + After closing the extracted file stream, this method applies the date + and attributes to that file. + + + + + Translates an internal file path to an external file path using the + and the mapping, according to + rules documented in and + . + + The path of the file with the archive. + The external path of the file, or null if there is no + valid translation. + + + + Gets or sets the list of archive files that are created or extracted. + + The list of archive files that are created or extracted. + + + + Gets or sets the default root directory where files are located. + + The default root directory where files are located. + + For details about how the default directory is used, + see and . + + + + + Gets or sets the mapping from internal file paths to external file paths. + + A mapping from internal file paths to external file paths. + + For details about how the files mapping is used, + see and . + + + + + Gets or sets a flag that can prevent extracted files from overwriting + newer files that already exist. + + True to prevent overwriting newer files that already exist + during extraction; false to always extract from the archive regardless + of existing files. + + + + Gets or sets a flag that enables creating or extracting an archive + at an offset within an existing file. (This is typically used to open + archive-based self-extracting packages.) + + True to search an existing package file for an archive offset + or the end of the file;/ false to always create or open a plain + archive file. + + + + Stream context used to extract a single file from an archive into a memory stream. + + + + + Creates a new BasicExtractStreamContext that reads from the specified archive stream. + + Archive stream to read from. + + + + Opens the archive stream for reading. Returns a DuplicateStream instance, + so the stream may be virtually opened multiple times. + + The archive number to open (ignored; 0 is assumed). + The name of the archive being opened. + Instance of the compression engine doing the operations. + A stream from which archive bytes are read. + + + + Does *not* close the stream. The archive stream should be managed by + the code that invokes the archive extraction. + + The archive number of the stream to close. + The name of the archive being closed. + The stream being closed. + + + + Opens a stream for writing extracted file bytes. The returned stream is a MemoryStream + instance, so the file is extracted straight into memory. + + Path of the file within the archive. + The uncompressed size of the file to be extracted. + The last write time of the file. + A stream where extracted file bytes are to be written. + + + + Does *not* close the file stream. The file stream is saved in memory so it can + be read later. + + Path of the file within the archive. + The file stream to be closed. + The attributes of the extracted file. + The last write time of the file. + + + + Gets the stream for the extracted file, or null if no file was extracted. + + + + + Base class for an engine capable of packing and unpacking a particular + compressed file format. + + + + + Creates a new instance of the compression engine base class. + + + + + Disposes the compression engine. + + + + + Disposes of resources allocated by the compression engine. + + + + + Creates an archive. + + A context interface to handle opening + and closing of archive and file streams. + The paths of the files in the archive + (not external file paths). + The archive could not be + created. + + The stream context implementation may provide a mapping from the + file paths within the archive to the external file paths. + + + + + Creates an archive or chain of archives. + + A context interface to handle opening + and closing of archive and file streams. + The paths of the files in the archive (not + external file paths). + The maximum number of bytes for one + archive before the contents are chained to the next archive, or zero + for unlimited archive size. + The archive could not be + created. + + The stream context implementation may provide a mapping from the file + paths within the archive to the external file paths. + + + + + Checks whether a Stream begins with a header that indicates + it is a valid archive. + + Stream for reading the archive file. + True if the stream is a valid archive + (with no offset); false otherwise. + + + + Gets the offset of an archive that is positioned 0 or more bytes + from the start of the Stream. + + A stream for reading the archive. + The offset in bytes of the archive, + or -1 if no archive is found in the Stream. + The archive must begin on a 4-byte boundary. + + + + Gets information about all files in an archive stream. + + A stream for reading the archive. + Information about all files in the archive stream. + The stream is not a valid + archive. + + + + Gets information about files in an archive or archive chain. + + A context interface to handle opening + and closing of archive and file streams. + A predicate that can determine + which files to process, optional. + Information about files in the archive stream. + The archive provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Gets the list of files in an archive Stream. + + A stream for reading the archive. + A list of the paths of all files contained in the + archive. + The stream is not a valid + archive. + + + + Gets the list of files in an archive or archive chain. + + A context interface to handle opening + and closing of archive and file streams. + A predicate that can determine + which files to process, optional. + An array containing the names of all files contained in + the archive or archive chain. + The archive provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Reads a single file from an archive stream. + + A stream for reading the archive. + The path of the file within the archive + (not the external file path). + A stream for reading the extracted file, or null + if the file does not exist in the archive. + The stream is not a valid + archive. + The entire extracted file is cached in memory, so this + method requires enough free memory to hold the file. + + + + Extracts files from an archive or archive chain. + + A context interface to handle opening + and closing of archive and file streams. + An optional predicate that can determine + which files to process. + The archive provided + by the stream context is not valid. + + The predicate takes an internal file + path and returns true to include the file or false to exclude it. + + + + + Called by sublcasses to distribute a packing or unpacking progress + event to listeners. + + Event details. + + + + Disposes of resources allocated by the compression engine. + + 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. + + + + Compresion utility function for converting old-style + date and time values to a DateTime structure. + + + + + Compresion utility function for converting a DateTime structure + to old-style date and time values. + + + + + Occurs when the compression engine reports progress in packing + or unpacking an archive. + + + + + + Gets or sets a flag indicating whether temporary files are created + and used during compression. + + True if temporary files are used; false if compression is done + entirely in-memory. + The value of this property is true by default. Using temporary + files can greatly reduce the memory requirement of compression, + especially when compressing large archives. However, setting this property + to false may yield slightly better performance when creating small + archives. Or it may be necessary if the process does not have sufficient + privileges to create temporary files. + + + + Compression level to use when compressing files. + + A compression level ranging from minimum to maximum compression, + or no compression. + + + + Specifies the compression level ranging from minimum compresion to + maximum compression, or no compression at all. + + + Although only four values are enumerated, any integral value between + and can also be used. + + + + Do not compress files, only store. + + + Minimum compression; fastest. + + + A compromize between speed and compression efficiency. + + + Maximum compression; slowest. + + + + Wraps a source stream and carries additional items that are disposed when the stream is closed. + + + + + Creates a new a cargo stream. + + source of the stream + List of additional items that are disposed when the stream is closed. + The order of the list is the order in which the items are disposed. + + + + Flushes the source stream. + + + + + Sets the length of the source stream. + + The desired length of the stream in bytes. + + + + Closes the source stream and also closes the additional objects that are carried. + + + + + Reads from the source stream. + + An array of bytes. When this method returns, the buffer + contains the specified byte array with the values between offset and + (offset + count - 1) replaced by the bytes read from the source. + The zero-based byte offset in buffer at which to begin + storing the data read from the stream. + The maximum number of bytes to be read from the stream. + The total number of bytes read into the buffer. This can be less + than the number of bytes requested if that many bytes are not currently available, + or zero (0) if the end of the stream has been reached. + + + + Writes to the source stream. + + An array of bytes. This method copies count + bytes from buffer to the stream. + The zero-based byte offset in buffer at which + to begin copying bytes to the stream. + The number of bytes to be written to the stream. + + + + Changes the position of the source stream. + + A byte offset relative to the origin parameter. + A value of type SeekOrigin indicating the reference + point used to obtain the new position. + The new position within the stream. + + + + Gets the source stream of the cargo stream. + + + + + Gets the list of additional items that are disposed when the stream is closed. + The order of the list is the order in which the items are disposed. The contents can be modified any time. + + + + + Gets a value indicating whether the source stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the source stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the source stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + Gets the length of the source stream. + + + + + Gets or sets the position of the source stream. + + + + + Duplicates a source stream by maintaining a separate position. + + + WARNING: duplicate streams are not thread-safe with respect to each other or the original stream. + If multiple threads use duplicate copies of the same stream, they must synchronize for any operations. + + + + + Creates a new duplicate of a stream. + + source of the duplicate + + + + Retrieves the original stream from a possible duplicate stream. + + Possible duplicate stream. + If the stream is a DuplicateStream, returns + the duplicate's source; otherwise returns the same stream. + + + + Flushes the source stream. + + + + + Sets the length of the source stream. + + The desired length of the stream in bytes. + + + + Closes the underlying stream, effectively closing ALL duplicates. + + + + + Reads from the source stream while maintaining a separate position + and not impacting the source stream's position. + + An array of bytes. When this method returns, the buffer + contains the specified byte array with the values between offset and + (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin + storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The total number of bytes read into the buffer. This can be less + than the number of bytes requested if that many bytes are not currently available, + or zero (0) if the end of the stream has been reached. + + + + Writes to the source stream while maintaining a separate position + and not impacting the source stream's position. + + An array of bytes. This method copies count + bytes from buffer to the current stream. + The zero-based byte offset in buffer at which + to begin copying bytes to the current stream. + The number of bytes to be written to the + current stream. + + + + Changes the position of this stream without impacting the + source stream's position. + + A byte offset relative to the origin parameter. + A value of type SeekOrigin indicating the reference + point used to obtain the new position. + The new position within the current stream. + + + + Gets the original stream that was used to create the duplicate. + + + + + Gets a value indicating whether the source stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the source stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the source stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + Gets the length of the source stream. + + + + + Gets or sets the position of the current stream, + ignoring the position of the source stream. + + + + + Wraps a source stream and offsets all read/write/seek calls by a given value. + + + This class is used to trick archive an packing or unpacking process + into reading or writing at an offset into a file, primarily for + self-extracting packages. + + + + + Creates a new OffsetStream instance from a source stream + and using a specified offset. + + Underlying stream for which all calls will be offset. + Positive or negative number of bytes to offset. + + + + Reads a sequence of bytes from the source stream and advances + the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer + contains the specified byte array with the values between offset and + (offset + count - 1) replaced by the bytes read from the current source. + The zero-based byte offset in buffer at which to begin + storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The total number of bytes read into the buffer. This can be less + than the number of bytes requested if that many bytes are not currently available, + or zero (0) if the end of the stream has been reached. + + + + Writes a sequence of bytes to the source stream and advances the + current position within this stream by the number of bytes written. + + An array of bytes. This method copies count + bytes from buffer to the current stream. + The zero-based byte offset in buffer at which + to begin copying bytes to the current stream. + The number of bytes to be written to the + current stream. + + + + Reads a byte from the stream and advances the position within the + source stream by one byte, or returns -1 if at the end of the stream. + + The unsigned byte cast to an Int32, or -1 if at the + end of the stream. + + + + Writes a byte to the current position in the source stream and + advances the position within the stream by one byte. + + The byte to write to the stream. + + + + Flushes the source stream. + + + + + Sets the position within the current stream, which is + equal to the position within the source stream minus the offset. + + A byte offset relative to the origin parameter. + A value of type SeekOrigin indicating + the reference point used to obtain the new position. + The new position within the current stream. + + + + Sets the effective length of the stream, which is equal to + the length of the source stream minus the offset. + + The desired length of the + current stream in bytes. + + + + Closes the underlying stream. + + + + + Gets the underlying stream that this OffsetStream calls into. + + + + + Gets the number of bytes to offset all calls before + redirecting to the underlying stream. + + + + + Gets a value indicating whether the source stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the source stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + Gets a value indicating whether the source stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + Gets the effective length of the stream, which is equal to + the length of the source stream minus the offset. + + + + + Gets or sets the effective position of the stream, which + is equal to the position of the source stream minus the offset. + + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + +
+
diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.dll new file mode 100644 index 0000000000000000000000000000000000000000..532df8d7307cfbba8140efcef0dbc7c83f514e31 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b438815c1d8bd33e86e2f5e4eadb0d1bca12c80 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.Resources.xml @@ -0,0 +1,536 @@ + + + + Microsoft.Deployment.Resources + + + + + A subclass of Resource which provides specific methods for manipulating the resource data. + + + The resource is of type (RT_GROUPICON). + + + + + Represents a Win32 resource which can be loaded from and saved to a PE file. + + + + + Creates a new Resource object without any data. The data can be later loaded from a file. + + Type of the resource; may be one of the ResourceType constants or a user-defined type. + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + + + + Creates a new Resource object with data. The data can be later saved to a file. + + Type of the resource; may be one of the ResourceType constants or a user-defined type. + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + Raw resource data + + + + Loads the resource data from a file. The file is searched for a resource with matching type, name, and locale. + + Win32 PE file containing the resource + + + + Saves the resource to a file. Any existing resource data with matching type, name, and locale is overwritten. + + Win32 PE file to contain the resource + + + + Tests if type, name, and locale of this Resource object match another Resource object. + + Resource object to be compared + True if the objects represent the same resource; false otherwise. + + + + Gets a hash code for this Resource object. + + Hash code generated from the resource type, name, and locale. + + + + Gets or sets the type of the resource. This may be one of the ResourceType constants + or a user-defined type name. + + + + + Gets or sets the name of the resource. For a numeric resource identifier, the decimal number is prefixed with a "#". + + + + + Gets or sets the locale of the resource. + + + + + Gets or sets the raw data of the resource. + + + + + Creates a new BitmapResource object without any data. The data can be later loaded from a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + + + + Creates a new BitmapResource object with data. The data can be later saved to a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + Raw resource data + + + + Reads the bitmap from a .bmp file. + + Path to a bitmap file (.bmp). + + + + A subclass of Resource which provides specific methods for manipulating the resource data. + + + The resource is of type (RT_GROUPICON). + + + + + Creates a new GroupIconResource object without any data. The data can be later loaded from a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + + + + Creates a new GroupIconResource object with data. The data can be later saved to a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + Raw resource data + + + + Reads the icon group from a .ico file. + + Path to an icon file (.ico). + + + + Gets or sets the raw data of the resource. The data is in the format of the RT_GROUPICON resource structure. + + + + + Enumerates the the icons in the icon group. + + + + + Allows reading and editing of resource data in a Win32 PE file. + + + To use this class: + Create a new ResourceCollection + Locate resources for the collection by calling one of the methods + Load data of one or more s from a file by calling the method of the + Resource class, or load them all at once (more efficient) with the method of the ResourceCollection. + Read and/or edit data of the individual Resource objects using the methods on that class. + Save data of one or more s to a file by calling the method of the + Resource class, or save them all at once (more efficient) with the method of the ResourceCollection. + + + + + + Creates a new, empty ResourceCollection. + + + + + Locates all resources in a file, including all resource types and languages. For each located resource, + a instance (or subclass) is added to the collection. + + The file to be searched for resources. + resources could not be read from the file + + + + Locates all resources in a file of a given type, including all languages. For each located resource, + a instance (or subclass) is added to the collection. + + The file to be searched for resources. + The type of resource to search for; may be one of the ResourceType constants or a user-defined type. + resources could not be read from the file + + + + Locates all resources in a file of a given type and language. For each located resource, + a instance (or subclass) is added to the collection. + + The file to be searched for resources. + The type of resource to search for; may be one of the ResourceType constants or a user-defined type. + The name of the resource to search for. + resources could not be read from the file + + + + For all resources in the collection, loads their data from a resource file. + + The file from which resources are loaded. + + + + For all resources in the collection, saves their data to a resource file. + + The file to which resources are saved. + + + + Adds a new item to the collection. + + The Resource to add. + + + + Removes an item to the collection. + + The Resource to remove. + + + + Gets the index of an item in the collection. + + The Resource to search for. + The index of the item, or -1 if not found. + + + + Inserts a item into the collection. + + The insertion index. + The Resource to insert. + + + + Tests if the collection contains an item. + + The Resource to search for. + true if the item is found; false otherwise + + + + Copies the collection into an array. + + The array to copy into. + The starting index in the destination array. + + + + Removes all resources from the collection. + + + + + Gets an enumerator over all resources in the collection. + + + + + + Gets or sets the element at the specified index. + + + + + Gets the number of resources in the collection. + + + + + Represents either a standard integer resource type or a custom resource type name. + + + + + Creates a new resource type from a string resource name. + + String resource name, + or an integer resource type prefixed by a #. + + + + Creates a new integer resource type. + + Integer value of a well-known resource type. + + + + Gets a string representation of the resource type. + + The custom resource name, or the name of a well-known resource type. + + + + Tests whether one resource type equals another object. + + Other object. + True if equal, else false. + + + + Tests whether one resource type equals another. + + Other resource type. + True if equal, else false. + + + + Gets a hash code suitable for using the resource type as a dictionary key. + + Hash code based on the resource type string. + + + + Implicitly converts a string to a ResourceType. + + String resource type to convert. + ResourceType object. + + + + Explicitly converts a ResourceType to a string. + + ResourceType object to convert. + The resource type string. + + Unlike , this conversion does not return + the common name of well-known integer resource types. Therefore, + the returned string is suitable for passing directly to Win32 + resource APIs that accept resource type strings. + + + + + Gets a flag indicating whether the resource type is an integer type. + + + + + Gets the integer value of the resource type, or -1 if the resource type is not an integer. + + + + + Identifies build types of a versioned file. + + + + + Identifies the type of a versioned file. + + + + + Identifies the sub-type of a versioned file. + + + + + A subclass of Resource which provides specific methods for manipulating the resource data. + + + The resource is of type (RT_VERSION). + + + + + Creates a new VersionResource object without any data. The data can be later loaded from a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + + + + Creates a new VersionResource object with data. The data can be later saved to a file. + + Name of the resource. For a numeric resource identifier, prefix the decimal number with a "#". + Locale of the resource + Raw resource data + + + + Adds a new version string table for a locale. + + Locale of the table + The new string table, or the existing table if the locale already existed. + + + + Removes a version string table for a locale. + + Locale of the table + + + + Checks if a version string table exists for a given locale. + + Locale to search for + True if a string table was found for the locale; false otherwise. + + + + Removes all string tables from the version resource. + + + + + Copies the version string tables to an array, starting at a particular array index. + + The one-dimensional Array that is the destination of the elements copied + from the collection. The Array must have zero-based indexing. + The zero-based index in array at which copying begins. + + + + Gets an enumerator that can iterate over the version string tables in the collection. + + An enumerator that returns objects. + + + + Gets an enumerator that can iterate over the version string tables in the collection. + + An enumerator that returns objects. + + + + Gets or sets the raw data of the resource. The data is in the format of the VS_VERSIONINFO structure. + + + + + Gets or sets the binary locale-independent file version of the version resource. + + + + + Gets or sets the binary locale-independent product version of the version resource. + + + + + Gets or sets a bitmask that specifies the build types of the file. + + + + + Gets or sets the general type of the file. + + + + + Gets or sets the specific type of the file. + + + + + Gets or sets the binary creation date and time. + + + + + Gets the string table for a specific locale, or null if there is no table for that locale. + + + + + + + Gets the number string tables in the version resource. + + + + + Represents a string table of a file version resource. + + + + + Removes all strings from the string table. + + + + + Gets an enumeration over all strings in the table. + + Enumeration of string name and value pairs + + + + Gets the locale (LCID) of the string table. + + + + + Gets or sets a string value. + + Name of the string. + + + + Gets a collection of all the names of the strings in the table. + + + + + Gets a collection of all the values in the table. + + + + + Gets the number of strings in the table. + + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll new file mode 100644 index 0000000000000000000000000000000000000000..e1d30c75d8983c8a2fb6e93f59edabfbe544840e Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml new file mode 100644 index 0000000000000000000000000000000000000000..9695cf858cf46a186144417ef9e4f522f2af6bbb --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml @@ -0,0 +1,459 @@ + + + + Microsoft.Deployment.WindowsInstaller.Linq + + + + + Apply to a subclass of QRecord to indicate the name of + the table the record type is to be used with. + + + 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.) + + + + + Creates a new DatabaseTableAttribute for the specified table. + + name of the table associated with the record type + + + + Gets or sets the table associated with the record type. + + + + + Apply to a property on a subclass of QRecord to indicate + the name of the column the property is to be associated with. + + + If this attribute is not used on a property, the default + column name will be the same as the property name. + + + + + Creates a new DatabaseColumnAttribute which maps a + record property to a column. + + name of the column associated with the property + + + + Gets or sets the column associated with the record property. + + + + + Generic record entity for queryable databases, + and base for strongly-typed entity subclasses. + + + 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. + When creating subclasses, the following attributes may be + useful: , + + + + + + Do not call. Use QTable.NewRecord() instead. + + + Subclasses must also provide a public parameterless constructor. + 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. + + + + + + Used by subclasses to get a field as an integer. + + zero-based column index of the field + + + + Used by subclasses to get a field as a nullable integer. + + zero-based column index of the field + + + + Dumps all record fields to a string. + + + + + Update multiple fields in the record (and the database). + + column names of fields to update + new values for each field being updated + + + + Update multiple fields in the record (and the database). + + column indexes of fields to update + new values for each field being updated + + The record (primary keys) must already exist in the table. + Updating primary key fields is not yet implemented; use Delete() + and Insert() instead. + + + + + Inserts the record in the database. + + + The record (primary keys) may not already exist in the table. + Use to get a new + record. Prmary keys and all required fields + must be filled in before insertion. + + + + + Inserts the record into the table. + + true if the record is temporarily + inserted, to be visible only as long as the database is open + + The record (primary keys) may not already exist in the table. + Use to get a new + record. Prmary keys and all required fields + must be filled in before insertion. + + + + + Deletes the record from the table if it exists. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Not yet implemented. + + + + + Gets the number of fields in the record. + + + + + Gets or sets a record field. + + column name of the field + + Setting a field value will automatically update the database. + + + + + Gets or sets a record field. + + zero-based column index of the field + + Setting a field value will automatically update the database. + + + + + Allows any Database instance to be converted into a queryable database. + + + + + Converts any Database instance into a queryable database. + + + Queryable database instance that operates on the same + MSI handle. + + 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. + + + + + Queryable MSI database - extends the base Database class with + LINQ query functionality along with predefined entity types + for common tables. + + + + + Opens an existing database in read-only mode. + + Path to the database file. + the database could not be created/opened + + Because this constructor initiates database access, it cannot be used with a + running installation. + The Database object should be 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. + + + + + Opens an existing database with another database as output. + + Path to the database to be read. + Open mode for the database + Database object representing the created or opened database + the database could not be created/opened + + 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. + The returned Database object should be 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. + + + + + Opens an existing database or creates a new one. + + Path to the database file. If an empty string + is supplied, a temporary database is created that is not persisted. + Open mode for the database + the database could not be created/opened + + 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. + 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. + Because this constructor initiates database access, it cannot be used with a + running installation. + The Database object should be 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. + + + + + Creates a new database from an MSI handle. + + Native MSI database handle. + True if the handle should be closed + when the database object is disposed + Path of the database file, if known + Mode the handle was originally opened in + + + + Gets or sets a log where all MSI SQL queries are written. + + + The log can be useful for debugging, or simply to watch the LINQ magic in action. + + + + + Gets a queryable table from the datbaase. + + name of the table + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + Queryable standard table with predefined specialized record type. + + + + Represents one table in a LINQ-queryable Database. + + type that represents one record in the table + + This class is the primary gateway to all LINQ to MSI query functionality. + The TRecord generic parameter may be the general + class, or a specialized subclass of QRecord. + + + + + Infers the name of the table this instance will be + associated with. + + table name + + 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.) + + + + + Creates a new QTable, inferring the table name + from the name of the record type parameter. + + database that contains the table + + + + Creates a new QTable with an explicit table name. + + database that contains the table + name of the table + + + + Enumerates over all records in the table. + + + + + + Creates a new record that can be inserted into this table. + + a record with all fields initialized to null + + Primary keys and required fields must be filled in with + non-null values before the record can be inserted. + The record is tied to this table in this database; + it cannot be inserted into another table or database. + + + + + Gets schema information about the table. + + + + + Gets the database this table is associated with. + + + + + Implements the LINQ to MSI query functionality. + + the result type of the current query -- + either some kind of QRecord, or some projection of record data + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll new file mode 100644 index 0000000000000000000000000000000000000000..4878f102ac541ba19254e6ded962bafd246e3d29 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml new file mode 100644 index 0000000000000000000000000000000000000000..54599eeaabce5e20dd5d862964f874dfce4c947f --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml @@ -0,0 +1,704 @@ + + + + Microsoft.Deployment.WindowsInstaller.Package + + + + + Handles status messages generated when operations are performed on an + or . + + + installPackage.Message += new InstallPackageMessageHandler(Console.WriteLine); + + + + + Provides access to powerful build, maintenance, and analysis operations on an + installation package (.MSI or .MSM). + + + + + Creates a new InstallPackage object. The file source directory and working + directory are the same as the location as the package file. + + Path to the install package to be created or opened + Open mode for the database + + + + Creates a new InstallPackage object, specifying an alternate file source + directory and/or working directory. + + Path to the install package to be created or opened + Open mode for the database + Location to obtain source files and cabinets when extracting + or updating files in the working directory. This is often the location of an original + copy of the package that is not meant to be modified. If this parameter is null, it + defaults to the directory of . + Location where files will be extracted to/updated from. Also + the location where a temporary folder is created during some operations. If this + parameter is null, it defaults to the directory of . + If the source location is different than the working directory, then + no files will be modified at the source location. + + + + + Sends a message to the event-handler. + + Message string, containing 0 or more format items + Items to be formatted + + + + Gets the list of file keys that have the specified long file name. + + File name to search for (case-insensitive) + Array of file keys, or a 0-length array if none are found + + + + Gets the list of file keys whose long file names match a specified + regular-expression search pattern. + + Regular expression search pattern + Array of file keys, or a 0-length array if none are found + + + + Extracts all files to the . The files are extracted + to the relative directory matching their . + + If any files have the uncompressed attribute, they will be copied + from the . + + + + Extracts a specified list of files to the . The files + are extracted to the relative directory matching their . + + List of file key strings to extract + If any files have the uncompressed attribute, they will be copied + from the . + + + + Updates the install package with new files from the . The + files must be in the relative directory matching their . + This method re-compresses and packages the files if necessary, and also updates the + following data: File.FileSize, File.Version, File.Language, MsiFileHash.HashPart* + + + The cabinet compression level used during re-cabbing can be configured with the + property. + + + + + Updates the install package with new files from the . The + files must be in the relative directory matching their . + This method re-compresses and packages the files if necessary, and also updates the + following data: File.FileSize, File.Version, File.Language, MsiFileHash.HashPart?. + + List of file key strings to update + + This method does not change the media structure of the package, so it may require extracting + and re-compressing a large cabinet just to update one file. +

The cabinet compression level used during re-cabbing can be configured with the + property.

+
+
+ + + Consolidates a package by combining and re-compressing all files into a single + internal or external cabinet. + + + If an installation package was built from many merge modules, this + method can somewhat decrease package size, complexity, and installation time. +

This method will also convert a package with all or mostly uncompressed + files into a package where all files are compressed.

+

If the package contains any not-yet-applied binary file patches (for + example, a package generated by a call to ) then + this method will apply the patches before compressing the updated files.

+

This method edits the database summary information and the File, Media + and Patch tables as necessary to maintain a valid installation package.

+

The cabinet compression level used during re-cabbing can be configured with the + property.

+
+
+ + + Rebuilds the cached directory structure information accessed by the + and properties. This + should be done after modifying the File, Component, or Directory + tables, or else the cached information may no longer be accurate. + + + + + Applies a patch package to the database, resulting in an installation package that + has the patch built-in. + + The patch package to be applied + Optional name of the specific transform to apply. + This parameter is usually left null, which causes the patch to be searched for + a transform that is valid to apply to this database. + + If the patch contains any binary file patches, they will not immediately be applied + to the target files, though they will at installation time. +

After calling this method you can use to apply + the file patches immediately and also discard any outdated files from the package.

+
+
+ + + Handle this event to receive status messages when operations are performed + on the install package. + + + installPackage.Message += new InstallPackageMessageHandler(Console.WriteLine); + + + + + Gets or sets the location to obtain source files and cabinets when + extracting or updating files in the working directory. This is often + the location of an original copy of the package that is not meant + to be modified. + + + + + Gets or sets the location where files will be extracted to/updated from. Also + the location where a temporary folder is created during some operations. + + + + + Gets a mapping from Directory keys to source/target paths. + + + If the Directory table is modified, this mapping + will be outdated until you call . + + + + + Gets a mapping from File keys to source/target paths. + + + If the File, Component, or Directory tables are modified, this mapping + may be outdated until you call . + + + + + Gets or sets the compression level used by + and . + + + If the Directory table is modified, this mapping will be outdated + until you close and reopen the install package. + + + + + Accessor for getting and setting properties of the InstallPackage database. + + + + + Accessor for getting and setting properties of the database. + + + + + Gets or sets a property in the database. When getting a property + that does not exist in the database, an empty string is returned. + To remove a property from the database, set it to an empty string. + + + This has the same results as direct SQL queries on the Property table; it's only + meant to be a more convenient way of access. + + + + + Represents the installation path of a file or directory from an installer product database. + + + + + Creates a new InstallPath, specifying a filename. + + The name of the file or directory. Not a full path. + + + + Creates a new InstallPath, parsing out either the short or long filename. + + The name of the file or directory, in short|long syntax for a filename + or targetshort|targetlong:sourceshort|sourcelong syntax for a directory. + true to parse the short part of the combined filename; false to parse the long part + + + + Gets the full source path. + + + + + + Gets the path of the parent directory. + + + + + Gets the set of child paths if this InstallPath object represents a a directory. + + + + + Gets or sets the source name of the InstallPath. + + + + + Gets or sets the target name of the install path. + + + + + Gets the full source path. + + + + + Gets the full target path. + + + + + Represents a collection of InstallPaths that are the child paths of the same parent directory. + + + + + Adds a new child path to the collection. + + The InstallPath to add. + + + + Removes a child path to the collection. + + The InstallPath to remove. + + + + Gets the index of a child path in the collection. + + The InstallPath to search for. + The index of the item, or -1 if not found. + + + + Inserts a child path into the collection. + + The insertion index. + The InstallPath to insert. + + + + Tests if the collection contains a child path. + + The InstallPath to search for. + true if the item is found; false otherwise + + + + Copies the collection into an array. + + The array to copy into. + The starting index in the destination array. + + + + Removes an item from the collection. + + The index of the item to remove. + + + + Removes all items from the collection. + + + + + Gets an enumerator over all items in the collection. + + An enumerator for the collection. + + + + Gets or sets the element at the specified index. + + + + + Gets the number of items in the collection. + + + + + Represents a mapping of install paths for all directories, components, or files in + an installation database. + + + + + Builds a mapping from File keys to installation paths. + + Installation database. + Component mapping returned by . + true to use short file names; false to use long names + An InstallPathMap with the described mapping. + + + + Builds a mapping from Component keys to installation paths. + + Installation database. + Directory mapping returned by + . + An InstallPathMap with the described mapping. + + + + Builds a mapping from Directory keys to installation paths. + + Installation database. + true to use short directory names; false to use long names + An InstallPathMap with the described mapping. + + + + Builds a mapping of Directory keys to directory paths, specifying root directories + for the source and target paths. + + Database containing the Directory table. + true to use short directory names; false to use long names + The root directory path of all source paths, or null to leave them relative. + The root directory path of all source paths, or null to leave them relative. + An InstallPathMap with the described mapping. + + + + Creates a new empty InstallPathMap. + + + + + Sets an install path for a direcotry, component, or file key. + + Depending on the type of InstallPathMap, this is the primary key from the + either the Directory, Component, or File table. + The install path of the key item. + + Changing an install path does not modify the Database used to generate this InstallPathMap. + + + + + Removes an install path from the map. + + Depending on the type of InstallPathMap, this is the primary key from the + either the Directory, Component, or File table. + true if the item was removed, false if it did not exist + + Changing an install path does not modify the Database used to generate this InstallPathMap. + + + + + Tests whether a direcotry, component, or file key exists in the map. + + Depending on the type of InstallPathMap, this is the primary key from the + either the Directory, Component, or File table. + true if the key is found; false otherwise + + + + Attempts to get a value from the dictionary. + + The key to lookup. + Receives the value, or null if they key was not found. + True if the value was found, else false. + + + + Removes all entries from the dictionary. + + + + + Gets an enumerator over all entries in the dictionary. + + An enumerator for the dictionary. + + + + Gets a mapping from keys to source paths. + + + + + Gets a mapping from keys to target paths. + + + + + Gets or sets an install path for a direcotry, component, or file key. + + Depending on the type of InstallPathMap, this is the primary key from the + either the Directory, Component, or File table. + + Changing an install path does not modify the Database used to generate this InstallPathMap. + + + + + Gets the collection of keys in the InstallPathMap. Depending on the type of InstallPathMap, + they are all directory, component, or file key strings. + + + + + Gets the collection of InstallPath values in the InstallPathMap. + + + + + Gets the number of entries in the dictionary. + + + + + Provides access to convenient properties and operations on a patch package (.MSP). + + + + + Creates a new patch package object; opening the patch database in read-only mode. + + Path to the patch package (.MSP) + The PatchPackage object only opens the patch database in read-only mode, because + transforms (sub-storages) cannot be read if the database is open in read-write mode. + + + + Sends a message to the event-handler. + + Message string, containing 0 or more format items + Items to be formatted + + + + Gets the list of patch codes that are replaced by this patch package. + + Array of replaced patch codes (GUIDs) + + The list of replaced patch codes is stored in the RevisionNumber field of the patch summary information. + + + + + Gets the list of product codes of products targeted by this patch package. + + Array of product codes (GUIDs) + + The list of target product codes is stored in the Template field of the patch summary information. + + + + + Gets the names of the transforms included in the patch package. + + Array of transform names + + The returned list does not include the "patch special transforms" that are prefixed with "#" +

The list of transform names is stored in the LastSavedBy field of the patch summary information.

+
+
+ + + Gets the names of the transforms included in the patch package. + + Specifies whether to include the + "patch special transforms" that are prefixed with "#" + Array of transform names + + The list of transform names is stored in the LastSavedBy field of the patch summary information. + + + + + Gets information about the transforms included in the patch package. + + Array containing information about each transform + + The returned info does not include the "patch special transforms" that are prefixed with "#" + + + + + Gets information about the transforms included in the patch package. + + Specifies whether to include the + "patch special transforms" that are prefixed with "#" + Array containing information about each transform + + + + Gets information about a transforms included in the patch package. + + Name of the transform to extract; this may optionally be a + special transform prefixed by "#" + Information about the transform + + + + Analyzes the transforms included in the patch package to find the ones that + are applicable to an install package. + + The install package to validate the transforms against + Array of valid transform names + + The returned list does not include the "patch special transforms" that + are prefixed with "#" If a transform is valid, then its corresponding + special transform is assumed to be valid as well. + + + + + Extracts a transform (.MST) from a patch package. + + Name of the transform to extract; this may optionally be a + special transform prefixed by "#" + Location where the transform will be extracted + + + + Handle this event to receive status messages when operations are performed on the patch package. + + + patchPackage.Message += new InstallPackageMessageHandler(Console.WriteLine); + + + + + Gets the patch code (GUID) of the patch package. + + + The patch code is stored in the RevisionNumber field of the patch summary information. + + + + + Contains properties of a transform package (.MST). + + + + + Reads transform information from a transform package. + + Path to a transform package (.MST file). + + + + Reads transform information from the summary information of a transform package. + + Filename of the transform (optional). + Handle to the summary information of a transform package (.MST file). + + + + Returns the name of the transform. + + + + + Gets the filename of the transform. + + + + + Gets the target product code of the transform. + + + + + Gets the target product version of the transform. + + + + + Gets the upgrade product code of the transform. + + + + + Gets the upgrade product version of the transform. + + + + + Gets the upgrade code of the transform. + + + + + Gets the target platform of the transform. + + + + + Gets the target language of the transform, or 0 if the transform is language-neutral. + + + + + Gets the validation flags specified when the transform was generated. + + + + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + +
+
diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.dll new file mode 100644 index 0000000000000000000000000000000000000000..6d016292bfab235c3dfaa434da08b028c9b14a1d Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.xml b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a73003e9be03cf58be2105b1d9d1520458046de --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/Microsoft.Deployment.WindowsInstaller.xml @@ -0,0 +1,7409 @@ + + + + Microsoft.Deployment.WindowsInstaller + + + + + Collection of column information related to a or + . + + + + + Creates a new ColumnCollection based on a specified list of columns. + + columns to be added to the new collection + + + + Creates a new ColumnCollection that is associated with a database table. + + view that contains the columns + + + + Not supported because the collection is read-only. + + information about the column being added + the collection is read-only + + + + Not supported because the collection is read-only. + + the collection is read-only + + + + Checks if a column with a given name exists in the collection. + + case-sensitive name of the column to look for + true if the column exists in the collection, false otherwise + + + + Checks if a column with a given name exists in the collection. + + column to look for, with case-sensitive name + true if the column exists in the collection, false otherwise + + + + Gets the index of a column within the collection. + + case-sensitive name of the column to look for + 0-based index of the column, or -1 if not found + + + + Copies the columns from this collection into an array. + + destination array to be filed + offset into the destination array where copying begins + + + + Not supported because the collection is read-only. + + column to remove + true if the column was removed, false if it was not found + the collection is read-only + + + + Gets an enumerator over the columns in the collection. + + An enumerator of ColumnInfo objects. + + + + Gets an enumerator over the columns in the collection. + + An enumerator of ColumnInfo objects. + + + + Creates ColumnInfo objects for the associated view. + + dynamically-generated list of columns + + + + Gets a list of column names or column-definition-strings for the + associated view. + + the view to that defines the columns + true to return types (column definition strings), + false to return names + list of column names or types + + + + Gets the number of columns in the collection. + + number of columns in the collection + + + + Gets a boolean value indicating whether the collection is read-only. + A ColumnCollection is read-only if it is associated with a + or a read-only . + + read-only status of the collection + + + + Gets information about a specific column in the collection. + + 1-based index into the column collection + is less + than 1 or greater than the number of columns in the collection + + + + Gets information about a specific column in the collection. + + case-sensitive name of a column collection + does + not exist in the collection + + + + Gets a string suitable for printing all the values of a record containing these columns. + + + + + Available values for the Attributes column of the Component table. + + + + + Local only - Component cannot be run from source. + +

+ Set this value for all components belonging to a feature to prevent the feature from being run-from-network or + run-from-source. Note that if a feature has no components, the feature always shows run-from-source and + run-from-my-computer as valid options. +

+
+ + + Component can only be run from source. + +

+ Set this bit for all components belonging to a feature to prevent the feature from being run-from-my-computer. + Note that if a feature has no components, the feature always shows run-from-source and run-from-my-computer + as valid options. +

+
+ + + Component can run locally or from source. + + + + + If this bit is set, the value in the KeyPath column is used as a key into the Registry table. + +

+ If the Value field of the corresponding record in the Registry table is null, the Name field in that record + must not contain "+", "-", or "*". For more information, see the description of the Name field in Registry + table. +

Setting this bit is recommended for registry entries written to the HKCU hive. This ensures the installer + writes the necessary HKCU registry entries when there are multiple users on the same machine.

+

+
+ + + If this bit is set, the installer increments the reference count in the shared DLL registry of the component's + key file. If this bit is not set, the installer increments the reference count only if the reference count + already exists. + + + + + If this bit is set, the installer does not remove the component during an uninstall. The installer registers + an extra system client for the component in the Windows Installer registry settings. + + + + + If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table. + + + + + If this bit is set, the installer reevaluates the value of the statement in the Condition column upon a reinstall. + If the value was previously False and has changed to true, the installer installs the component. If the value + was previously true and has changed to false, the installer removes the component even if the component has + other products as clients. + + + + + If this bit is set, the installer does not install or reinstall the component if a key path file or a key path + registry entry for the component already exists. The application does register itself as a client of the component. + +

+ Use this flag only for components that are being registered by the Registry table. Do not use this flag for + components registered by the AppId, Class, Extension, ProgId, MIME, and Verb tables. +

+
+ + + Set this bit to mark this as a 64-bit component. This attribute facilitates the installation of packages that + include both 32-bit and 64-bit components. If this bit is not set, the component is registered as a 32-bit component. + +

+ If this is a 64-bit component replacing a 32-bit component, set this bit and assign a new GUID in the + ComponentId column. +

+
+ + + Set this bit to disable registry reflection on all existing and new registry keys affected by this component. + +

+ If this bit is set, the Windows Installer calls the RegDisableReflectionKey on each key being accessed by the component. + This bit is available with Windows Installer version 4.0 and is ignored on 32-bit systems. +

+
+ + + [MSI 4.5] Set this bit for a component in a patch package to prevent leaving orphan components on the computer. + +

+ If a subsequent patch is installed, marked with the SupersedeEarlier flag in its MsiPatchSequence + table to supersede the first patch, Windows Installer 4.5 can unregister and uninstall components marked with the + UninstallOnSupersedence value. If the component is not marked with this bit, installation of a superseding patch can leave + behind an unused component on the computer. +

+
+ + + [MSI 4.5] If a component is marked with this attribute value in at least one package installed on the system, + the installer treats the component as marked in all packages. If a package that shares the marked component + is uninstalled, Windows Installer 4.5 can continue to share the highest version of the component on the system, + even if that highest version was installed by the package that is being uninstalled. + + + + + Defines flags for the Attributes column of the Control table. + + + + If this bit is set, the control is visible on the dialog box. + + + specifies if the given control is enabled or disabled. Most controls appear gray when disabled. + + + If this bit is set, the control is displayed with a sunken, three dimensional look. + + + The Indirect control attribute specifies whether the value displayed or changed by this control is referenced indirectly. + + + If this bit is set on a control, the associated property specified in the Property column of the Control table is an integer. + + + If this bit is set the text in the control is displayed in a right-to-left reading order. + + + If this style bit is set, text in the control is aligned to the right. + + + If this bit is set, the scroll bar is located on the left side of the control, otherwise it is on the right. + + + This is a combination of the RightToLeftReadingOrder, RightAligned, and LeftScroll attributes. + + + If this bit is set on a text control, the control is displayed transparently with the background showing through the control where there are no characters. + + + If this bit is set on a text control, the occurrence of the character "&" in a text string is displayed as itself. + + + If this bit is set the text in the control is displayed on a single line. + + + If this bit is set for a text control, the control will automatically attempt to format the displayed text as a number representing a count of bytes. + + + If this bit is set, fonts are created using the user's default UI code page. Otherwise it is created using the database code page. + + + If this bit is set on an Edit control, the installer creates a multiple line edit control with a vertical scroll bar. + + + This attribute creates an edit control for entering passwords. The control displays each character as an asterisk (*) as they are typed into the control. + + + If this bit is set on a ProgressBar control, the bar is drawn as a series of small rectangles in Microsoft Windows 95-style. Otherwise it is drawn as a single continuous rectangle. + + + If this bit is set, the control shows removable volumes. + + + If this bit is set, the control shows fixed internal hard drives. + + + If this bit is set, the control shows remote volumes. + + + If this bit is set, the control shows CD-ROM volumes. + + + If this bit is set, the control shows RAM disk volumes. + + + If this bit is set, the control shows floppy volumes. + + + Specifies whether or not the rollback backup files are included in the costs displayed by the VolumeCostList control. + + + If this bit is set, the items listed in the control are displayed in a specified order. Otherwise, items are displayed in alphabetical order. + + + If this bit is set on a combo box, the edit field is replaced by a static text field. This prevents a user from entering a new value and requires the user to choose only one of the predefined values. + + + If this bit is set on a check box or a radio button group, the button is drawn with the appearance of a push button, but its logic stays the same. + + + If this bit is set, the text in the control is replaced by a bitmap image. The Text column in the Control table is a foreign key into the Binary table. + + + If this bit is set, text is replaced by an icon image and the Text column in the Control table is a foreign key into the Binary table. + + + If this bit is set, the picture is cropped or centered in the control without changing its shape or size. + + + Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded. + + + Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded. + + + Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded. + + + If this bit is set, and the installation is not yet running with elevated privileges, the control is created with a UAC icon. + + + If this bit is set, the RadioButtonGroup has text and a border displayed around it. + + + + Defines flags for the Type column of the CustomAction table. + + + + Unspecified custom action type. + + + Target = entry point name + + + Target = command line args + + + Target = text string to be formatted and set into property + + + Target = entry point name, null if none to call + + + Target = entry point name, null if none to call + + + Target = property list for nested engine initialization + + + Source = File.File, file part of installation + + + Source = Directory.Directory, folder containing existing file + + + Source = Property.Property, full path to executable + + + Ignore action return status, continue running + + + Run asynchronously + + + Skip if UI sequence already run + + + Skip if UI sequence already run in same process + + + Run on client only if UI already run on client + + + Queue for execution within script + + + In conjunction with InScript: queue in Rollback script + + + In conjunction with InScript: run Commit ops from script on success + + + No impersonation, run in system context + + + Impersonate for per-machine installs on TS machines + + + Script requires 64bit process + + + Don't record the contents of the Target field in the log file + + + The custom action runs only when a patch is being uninstalled + + + + Defines flags for the Attributes column of the Dialog table. + + + + If this bit is set, the dialog is originally created as visible, otherwise it is hidden. + + + If this bit is set, the dialog box is modal, other dialogs of the same application cannot be put on top of it, and the dialog keeps the control while it is running. + + + If this bit is set, the dialog box can be minimized. This bit is ignored for modal dialog boxes, which cannot be minimized. + + + If this style bit is set, the dialog box will stop all other applications and no other applications can take the focus. + + + If this bit is set, the other dialogs stay alive when this dialog box is created. + + + If this bit is set, the dialog box periodically calls the installer. If the property changes, it notifies the controls on the dialog. + + + If this bit is set, the pictures on the dialog box are created with the custom palette (one per dialog received from the first control created). + + + If this style bit is set the text in the dialog box is displayed in right-to-left-reading order. + + + If this style bit is set, the text is aligned on the right side of the dialog box. + + + If this style bit is set, the scroll bar is located on the left side of the dialog box. + + + This is a combination of the RightToLeftReadingOrder, RightAligned, and the LeftScroll dialog style bits. + + + If this bit is set, the dialog box is an error dialog. + + + + Available values for the Attributes column of the Feature table. + + + + + Favor local - Components of this feature that are not marked for installation from source are installed locally. + +

+ A component shared by two or more features, some of which are set to FavorLocal and some to FavorSource, + is installed locally. Components marked in the Component + table are always run from the source CD/server. The bits FavorLocal and FavorSource work with features not + listed by the ADVERTISE property. +

+
+ + + Components of this feature not marked for local installation are installed to run from the source + CD-ROM or server. + +

+ A component shared by two or more features, some of which are set to FavorLocal and some to FavorSource, + is installed to run locally. Components marked (local-only) in the + Component table are always installed locally. The bits FavorLocal and FavorSource work with features + not listed by the ADVERTISE property. +

+
+ + + Set this attribute and the state of the feature is the same as the state of the feature's parent. + You cannot use this option if the feature is located at the root of a feature tree. + +

+ Omit this attribute and the feature state is determined according to DisallowAdvertise and + FavorLocal and FavorSource. +

To guarantee that the child feature's state always follows the state of its parent, even when the + child and parent are initially set to absent in the SelectionTree control, you must include both + FollowParent and UIDisallowAbsent in the attributes of the child feature.

+

Note that if you set FollowParent without setting UIDisallowAbsent, the installer cannot force + the child feature out of the absent state. In this case, the child feature matches the parent's + installation state only if the child is set to something other than absent.

+

Set FollowParent and UIDisallowAbsent to ensure a child feature follows the state of the parent feature.

+

+
+ + + Set this attribute and the feature state is Advertise. + +

+ If the feature is listed by the ADDDEFAULT property this bit is ignored and the feature state is determined + according to FavorLocal and FavorSource. +

Omit this attribute and the feature state is determined according to DisallowAdvertise and FavorLocal + and FavorSource.

+

+
+ + + Set this attribute to prevent the feature from being advertised. + +

+ Note that this bit works only with features that are listed by the ADVERTISE property. +

Set this attribute and if the listed feature is not a parent or child, the feature is installed according to + FavorLocal and FavorSource.

+

Set this attribute for the parent of a listed feature and the parent is installed.

+

Set this attribute for the child of a listed feature and the state of the child is Absent.

+

Omit this attribute and if the listed feature is not a parent or child, the feature state is Advertise.

+

Omit this attribute and if the listed feature is a parent or child, the state of both features is Advertise.

+

+
+ + + Set this attribute and the user interface does not display an option to change the feature state + to Absent. Setting this attribute forces the feature to the installation state, whether or not the + feature is visible in the UI. + +

+ Omit this attribute and the user interface displays an option to change the feature state to Absent. +

Set FollowParent and UIDisallowAbsent to ensure a child feature follows the state of the parent feature.

+

Setting this attribute not only affects the UI, but also forces the feature to the install state whether + the feature is visible in the UI or not.

+

+
+ + + Set this attribute and advertising is disabled for the feature if the operating system shell does not + support Windows Installer descriptors. + + + + + Available values for the Attributes column of the File table. + + + + No attributes. + + + Read-only. + + + Hidden. + + + System. + + + The file is vital for the proper operation of the component to which it belongs. + + + The file contains a valid checksum. A checksum is required to repair a file that has become corrupted. + + + This bit must only be added by a patch and if the file is being added by the patch. + + + + The file's source type is uncompressed. If set, ignore the WordCount summary information property. If neither + Noncompressed nor Compressed are set, the compression state of the file is specified by the WordCount summary + information property. Do not set both Noncompressed and Compressed. + + + + + The file's source type is compressed. If set, ignore the WordCount summary information property. If neither + Noncompressed or Compressed are set, the compression state of the file is specified by the WordCount summary + information property. Do not set both Noncompressed and Compressed. + + + + + Defines values for the Action column of the IniFile and RemoveIniFile tables. + + + + Creates or updates a .ini entry. + + + Creates a .ini entry only if the entry does not already exist. + + + Deletes .ini entry. + + + Creates a new entry or appends a new comma-separated value to an existing entry. + + + Deletes a tag from a .ini entry. + + + + Defines values for the Type column of the CompLocator, IniLocator, and RegLocator tables. + + + + Key path is a directory. + + + Key path is a file name. + + + Key path is a registry value. + + + Set this bit to have the installer search the 64-bit portion of the registry. + + + + Defines values for the Root column of the Registry, RemoveRegistry, and RegLocator tables. + + + + HKEY_CURRENT_USER for a per-user installation, + or HKEY_LOCAL_MACHINE for a per-machine installation. + + + HKEY_CLASSES_ROOT + + + HKEY_CURRENT_USER + + + HKEY_LOCAL_MACHINE + + + HKEY_USERS + + + + Defines values for the InstallMode column of the RemoveFile table. + + + + Never remove. + + + Remove when the associated component is being installed (install state = local or source). + + + Remove when the associated component is being removed (install state = absent). + + + + Defines values for the ServiceType, StartType, and ErrorControl columns of the ServiceInstall table. + + + + No flags. + + + A Win32 service that runs its own process. + + + A Win32 service that shares a process. + + + A Win32 service that interacts with the desktop. + This value cannot be used alone and must be added to either + or . + + + Service starts during startup of the system. + + + Service starts when the service control manager calls the StartService function. + + + Specifies a service that can no longer be started. + + + Logs the error, displays a message box and continues the startup operation. + + + Logs the error if it is possible and the system is restarted with the last configuration + known to be good. If the last-known-good configuration is being started, the startup operation fails. + + + When combined with other error flags, specifies that the overall install should fail if + the service cannot be installed into the system. + + + + Defines values for the Event column of the ServiceControl table. + + + + No control events. + + + During an install, starts the service during the StartServices action. + + + During an install, stops the service during the StopServices action. + + + During an install, deletes the service during the DeleteServices action. + + + During an uninstall, starts the service during the StartServices action. + + + During an uninstall, stops the service during the StopServices action. + + + During an uninstall, deletes the service during the DeleteServices action. + + + + Defines values for the StyleBits column of the TextStyle table. + + + + Bold + + + Italic + + + Underline + + + Strike out + + + + Defines values for the Attributes column of the Upgrade table. + + + + Migrates feature states by enabling the logic in the MigrateFeatureStates action. + + + Detects products and applications but does not remove. + + + Continues installation upon failure to remove a product or application. + + + Detects the range of versions including the value in VersionMin. + + + Dectects the range of versions including the value in VersionMax. + + + Detects all languages, excluding the languages listed in the Language column. + + + + Defines a single column of a table in an installer database. + + Once created, a ColumnInfo object is immutable. + + + + Creates a new ColumnInfo object from a column definition. + + name of the column + column definition string + + + + + Creates a new ColumnInfo object from a list of parameters. + + name of the column + type of the column; must be one of the following: + Int16, Int32, String, or Stream + the maximum number of characters for String columns; + ignored for other column types + true if the column is required to have a non-null value + + + + Creates a new ColumnInfo object from a list of parameters. + + name of the column + type of the column; must be one of the following: + Int16, Int32, String, or Stream + the maximum number of characters for String columns; + ignored for other column types + true if the column is required to have a non-null value + true to if the column is only in-memory and + not persisted with the database + for String columns, indicates the column + is localizable; ignored for other column types + + + + Gets the name of the column. + + Name of the column. + + + + Gets the name of the column. + + name of the column + + + + Gets the type of the column as a System.Type. This is one of the following: Int16, Int32, String, or Stream + + type of the column + + + + Gets the type of the column as an integer that can be cast to a System.Data.DbType. This is one of the following: Int16, Int32, String, or Binary + + equivalent DbType of the column as an integer + + + + Gets the size of the column. + + The size of integer columns this is either 2 or 4. For string columns this is the maximum + recommended length of the string, or 0 for unlimited length. For stream columns, 0 is returned. + + + + Gets a value indicating whether the column must be non-null when inserting a record. + + required status of the column + + + + Gets a value indicating whether the column is temporary. Temporary columns are not persisted + when the database is saved to disk. + + temporary status of the column + + + + Gets a value indicating whether the column is a string column that is localizable. + + localizable status of the column + + + + Gets an SQL fragment that can be used to create this column within a CREATE TABLE statement. + + SQL fragment to be used for creating the column +

+ Examples: + + LONG + SHORT TEMPORARY + CHAR(0) LOCALIZABLE + CHAR(72) NOT NULL LOCALIZABLE + OBJECT + +

+
+ + + Gets a short string defining the type and size of the column. + + + The definition string consists + of a single letter representing the data type followed by the width of the column (in characters + when applicable, bytes otherwise). A width of zero designates an unbounded width (for example, + long text fields and streams). An uppercase letter indicates that null values are allowed in + the column. + +

+ + s? - String, variable length (?=1-255) + s0 - String, variable length + i2 - Short integer + i4 - Long integer + v0 - Binary Stream + g? - Temporary string (?=0-255) + j? - Temporary integer (?=0,1,2,4) + O0 - Temporary object (stream) + l? - Localizable string, variable length (?=1-255) + l0 - Localizable string, variable length + +

+
+ + + Accessor for information about components within the context of an installation session. + + + + + Checks if the collection contains a component. + + name of the component + true if the component is in the collection, else false + + + + Copies the features into an array. + + array that receives the features + offset into the array + + + + Enumerates the components in the collection. + + an enumerator over all features in the collection + + + + Gets information about a component within the context of an installation session. + + name of the component + component object + + + + Gets the number of components defined for the product. + + + + + Provides access to information about a component within the context of an installation session. + + + + + Gets disk space per drive required to install a component. + + Requested component state + A list of InstallCost structures, specifying the cost for each drive for the component +

+ Win32 MSI API: + MsiEnumComponentCosts +

+
+ + + Gets the name of the component (primary key in the Component table). + + + + + Gets the current install state of the designated Component. + + the Session handle is invalid + an unknown Component was requested +

+ Win32 MSI API: + MsiGetComponentState +

+
+ + + Gets or sets the action state of the designated Component. + + the Session handle is invalid + an unknown Component was requested + the user exited the installation +

+ Win32 MSI APIs: + MsiGetComponentState, + MsiSetComponentState +

+
+ + + Represents an instance of a registered component. + + + + + Subclasses of this abstract class represent an instance + of a registered feature or component. + + + + + Gets the product that this item is a part of. + + + + + Gets the current installation state of the item. + + + + + Gets the set of installed components for products in the indicated context. + + The installer configuration data is corrupt +

+ Win32 MSI API: + MsiEnumComponentsEx +

+
+ + + Creates a new ComponentInstallation, automatically detecting the + product that the component is a part of. + + component GUID +

+ Win32 MSI API: + MsiGetProductCode +

+
+ + + Creates a new ComponentInstallation, automatically detecting the + product that the component is a part of. + + component GUID + context user SID + user contexts + + + + Creates a new ComponentInstallation for a component installed by a + specific product. + + component GUID + ProductCode GUID + + + + Creates a new ComponentInstallation for a component installed by a + specific product. + + component GUID + ProductCode GUID + context user SID + user contexts + + + + Gets the set of installed components for all products. + + The installer configuration data is corrupt +

+ Win32 MSI API: + MsiEnumComponents +

+
+ + + Gets the component code (GUID) of the component. + + + + + Gets all client products of a specified component. + + enumeration over all client products of the component + The installer configuration data is corrupt +

+ Because clients are not ordered, any new component has an arbitrary index. + This means that the property may return clients in any order. +

+ Win32 MSI API: + MsiEnumClients, + MsiEnumClientsEx +

+
+ + + Gets the installed state of a component. + + the installed state of the component, or InstallState.Unknown + if this component is not part of a product +

+ Win32 MSI API: + MsiGetComponentPath, + MsiGetComponentPathEx +

+
+ + + Gets the full path to an installed component. If the key path for the component is a + registry key then the registry key is returned. + + The file or registry keypath to the component, or null if the component is not available. + An unknown product or component was specified + The installer configuration data is corrupt +

+ If the component is a registry key, the registry roots are represented numerically. + For example, a registry path of "HKEY_CURRENT_USER\SOFTWARE\Microsoft" would be returned + as "01:\SOFTWARE\Microsoft". The registry roots returned are defined as follows: + HKEY_CLASSES_ROOT=00, HKEY_CURRENT_USER=01, HKEY_LOCAL_MACHINE=02, HKEY_USERS=03, + HKEY_PERFORMANCE_DATA=04 +

+ Win32 MSI APIs: + MsiGetComponentPath, + MsiGetComponentPathEx, + MsiLocateComponent +

+
+ + + Gets the set of registered qualifiers for the component. + + Enumeration of the qulifiers for the component. + The installer configuration data is corrupt +

+ Because qualifiers are not ordered, any new qualifier has an arbitrary index, + meaning the function can return qualifiers in any order. +

+ Win32 MSI API: + MsiEnumComponentQualifiers +

+
+ + + Holds data about a component qualifier. + +

+ Win32 MSI API: + MsiEnumComponentQualifiers +

+
+ + + Gets the qualifier code. + + + + + Gets the qualifier data. + + + + + Marks a method as a custom action entry point. + +

+ A custom action method must be defined as public and static, + take a single object as a parameter, + and return an enumeration value. +

+
+ + + Name of the custom action entrypoint, or null if the same as the method name. + + + + + Marks a method as a custom action entry point. + + + + + Marks a method as a custom action entry point. + + Name of the function to be exported, + defaults to the name of this method + + + + Gets or sets the name of the custom action entrypoint. A null + value defaults to the name of the method. + + name of the custom action entrypoint, or null if none was specified + + + + Contains a collection of key-value pairs suitable for passing between + immediate and deferred/rollback/commit custom actions. + + + Call the method to get a string + suitable for storing in a property and reconstructing the custom action data later. + + + + + + + "CustomActionData" literal property name. + + + + + Creates a new empty custom action data object. + + + + + Reconstructs a custom action data object from data that was previously + persisted in a string. + + Previous output from . + + + + Adds a key and value to the data collection. + + Case-sensitive data key. + Data value (may be null). + the key does not consist solely of letters, + numbers, and the period, underscore, and space characters. + + + + Adds a value to the data collection, using XML serialization to persist the object as a string. + + Case-sensitive data key. + Data value (may be null). + the key does not consist solely of letters, + numbers, and the period, underscore, and space characters. + The value type does not support XML serialization. + The value could not be serialized. + + + + Gets a value from the data collection, using XML serialization to load the object from a string. + + Case-sensitive data key. + The value could not be deserialized. + + + + Determines whether the data contains an item with the specified key. + + Case-sensitive data key. + true if the data contains an item with the key; otherwise, false + + + + Removes the item with the specified key from the data. + + Case-sensitive data key. + true if the item was successfully removed from the data; + false if an item with the specified key was not found + + + + Gets the value with the specified key. + + Case-sensitive data key. + Value associated with the specified key, or + null if an item with the specified key was not found + true if the data contains an item with the specified key; otherwise, false. + + + + Adds an item with key and value to the data collection. + + Case-sensitive data key, with a data value that may be null. + the key does not consist solely of letters, + numbers, and the period, underscore, and space characters. + + + + Removes all items from the data. + + + + + Determines whether the data contains a specified item. + + The data item to locate. + true if the data contains the item; otherwise, false + + + + Copies the data to an array, starting at a particular array index. + + Destination array. + Index in the array at which copying begins. + + + + Removes an item from the data. + + The item to remove. + true if the item was successfully removed from the data; + false if the item was not found + + + + Returns an enumerator that iterates through the collection. + + An enumerator that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An enumerator that can be used to iterate through the collection. + + + + Gets a string representation of the data suitable for persisting in a property. + + Data string in the form "Key1=Value1;Key2=Value2" + + + + Ensures that a key contains valid characters. + + key to be validated + the key does not consist solely of letters, + numbers, and the period, underscore, and space characters. + + + + Serializes a value into an XML string. + + Type of the value. + Value to be serialized. + Serialized value data as a string. + + + + Deserializes a value from an XML string. + + Expected type of the value. + Serialized value data. + Deserialized value object. + + + + Escapes a value string by doubling any data-separator (semicolon) characters. + + + Escaped value string + + + + Unescapes a value string by undoubling any doubled data-separator (semicolon) characters. + + + Unescaped value string + + + + Loads key-value pairs from a string into the data collection. + + key-value pair list of the form returned by + + + + Gets a collection object containing all the keys of the data. + + + + + Gets a collection containing all the values of the data. + + + + + Gets or sets a data value with a specified key. + + Case-sensitive data key. + the key does not consist solely of letters, + numbers, and the period, underscore, and space characters. + + + + Gets the number of items in the data. + + + + + Gets a value indicating whether the data is read-only. + + + + + Managed-code portion of the custom action proxy. + + + + + Invokes a managed custom action method. + + Integer handle to the installer session. + Name of the custom action entrypoint. This must + either map to an entrypoint definition in the customActions + config section, or be an explicit entrypoint of the form: + "AssemblyName!Namespace.Class.Method" + Pointer to a delegate used to + make remote API calls, if this custom action is running out-of-proc. + The value returned by the custom action method, + or ERROR_INSTALL_FAILURE if the custom action could not be invoked. + + + + Checks the "MMsiBreak" environment variable for any matching custom action names. + + List of names to search for in the environment + variable string. + True if a match was found, else false. + + + + Locates and parses an entrypoint mapping in CustomAction.config. + + Installer session handle, just used for logging. + Custom action entrypoint name: the key value + in an item in the customActions section of the config file. + Returned display name of the assembly from + the entrypoint mapping. + Returned class name of the entrypoint mapping. + Returned method name of the entrypoint mapping. + True if the entrypoint was found, false if not or if some error + occurred. + + + + Uses reflection to load the assembly and class and find the method. + + Installer session handle, just used for logging. + Display name of the assembly containing the + custom action method. + Fully-qualified name of the class containing the + custom action method. + Name of the custom action method. + The method, or null if not found. + + + + Checks if a method has the right return and paramater types + for a custom action, and that it is marked by a CustomActionAttribute. + + Method to be checked. + True if the method is a valid custom action, else false. + + + + Accesses a Windows Installer database. + +

+ The method must be called before the Database is closed to write out all + persistent changes. If the Commit method is not called, the installer performs an implicit + rollback upon object destruction. +

+ The client can use the following procedure for data access: + Obtain a Database object using one of the Database constructors. + Initiate a query using a SQL string by calling the + method of the Database. + Set query parameters in a and execute the database + query by calling the method of the . This + produces a result that can be fetched or updated. + Call the method of the View repeatedly to return + Records. + Update database rows of a Record object obtained by the Fetch method using + one of the methods of the View. + Release the query and any unfetched records by calling the + method of the View. + Persist any database updates by calling the Commit method of the Database. + + +

+
+ + + Base class for Windows Installer handle types (Database, View, Record, SummaryInfo). + +

+ These classes implement the interface, because they + hold unmanaged resources (MSI handles) that should be properly disposed + when no longer needed. +

+
+ + + Constructs a handle object from a native integer handle. + + Native integer handle. + true to close the handle when this object is disposed or finalized + + + + Closes the handle. After closing a handle, further method calls may throw an . + +

+ The finalizer of this class will NOT close the handle if it is still open, + because finalization can run on a separate thread from the application, + resulting in potential problems if handles are closed from that thread. + 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. +

+ Win32 MSI API: + MsiCloseHandle +

+ +
+ + + Closes the handle. After closing a handle, further method calls may throw an . + +

+ The finalizer of this class will NOT close the handle if it is still open, + because finalization can run on a separate thread from the application, + resulting in potential problems if handles are closed from that thread. + 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. +

+ This method is merely an alias for the method. +

+ Win32 MSI API: + MsiCloseHandle +

+
+ + + Tests whether this handle object is equal to another handle object. Two handle objects are equal + if their types are the same and their native integer handles are the same. + + The handle object to compare with the current handle object. + true if the specified handle object is equal to the current handle object; otherwise false + + + + Gets a hash value for the handle object. + + A hash code for the handle object. +

+ The hash code is derived from the native integer handle. +

+
+ + + Closes the handle. After closing a handle, further method calls may throw an . + + 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. + + + + Gets the native integer handle. + + + + + Checks if the handle is closed. When closed, method calls on the handle object may throw an . + + + + + Gets an object that can be used internally for safe syncronization. + + + + + Opens an existing database in read-only mode. + + Path to the database file. + the database could not be created/opened +

+ Because this constructor initiates database access, it cannot be used with a + running installation. +

+ The Database object should be d after use. + 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. +

+ Win32 MSI API: + MsiOpenDatabase +

+
+ + + Opens an existing database with another database as output. + + Path to the database to be read. + Open mode for the database + Database object representing the created or opened database + the database could not be created/opened +

+ 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. +

+ The Database object should be d after use. + 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. +

+ The database is opened in mode, and will be + automatically commited when it is closed. +

+ Win32 MSI API: + MsiOpenDatabase +

+
+ + + Opens an existing database or creates a new one. + + Path to the database file. If an empty string + is supplied, a temporary database is created that is not persisted. + Open mode for the database + the database could not be created/opened +

+ Because this constructor initiates database access, it cannot be used with a + running installation. +

+ The database object should be 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. +

+ A database opened in or + mode will be automatically commited when it is + closed. However a database opened in or + mode must have the method + called before it is closed, otherwise no changes will be persisted. +

+ Win32 MSI API: + MsiOpenDatabase +

+
+ + + Creates a new database from an MSI handle. + + Native MSI database handle. + True if the handle should be closed + when the database object is disposed + Path of the database file, if known + Mode the handle was originally opened in + + + + Creates a new Database object from an integer database handle. + +

+ This method is only provided for interop purposes. A Database object + should normally be obtained from or + a public Database constructor. +

+ Integer database handle + true to close the handle when this object is disposed +
+ + + Schedules a file or directory for deletion after the database handle is closed. + + File or directory path to be deleted. All files and subdirectories + under a directory are deleted. +

+ Once an item is scheduled, it cannot be unscheduled. +

+ The items cannot be deleted if the Database object is auto-disposed by the + garbage collector; the handle must be explicitly closed. +

+ Files which are read-only or otherwise locked cannot be deleted, + but they will not cause an exception to be thrown. +

+
+ + + Merges another database with this database. + + The database to be merged into this database + Optional name of table to contain the names of the tables containing + merge conflicts, the number of conflicting rows within the table, and a reference to the table + with the merge conflict. + merge failed due to a schema difference or data conflict + the Database handle is invalid +

+ Merge does not copy over embedded cabinet files or embedded transforms from the + reference database into the target database. Embedded data streams that are listed in the + Binary table or Icon table are copied from the reference database to the target database. + Storage embedded in the reference database are not copied to the target database. +

+ The Merge method merges the data of two databases. These databases must have the same + codepage. The merge fails if any tables or rows in the databases conflict. A conflict exists + if the data in any row in the first database differs from the data in the corresponding row + of the second database. Corresponding rows are in the same table of both databases and have + the same primary key in both databases. The tables of non-conflicting databases must have + the same number of primary keys, same number of columns, same column types, same column names, + and the same data in rows with identical primary keys. Temporary columns however don't matter + in the column count and corresponding tables can have a different number of temporary columns + without creating conflict as long as the persistent columns match. +

+ If the number, type, or name of columns in corresponding tables are different, the + schema of the two databases are incompatible and the installer will stop processing tables + and the merge fails. The installer checks that the two databases have the same schema before + checking for row merge conflicts. If the schemas are incompatible, the databases have be + modified. +

+ If the data in particular rows differ, this is a row merge conflict, the merge fails + and creates a new table with the specified name. The first column of this table is the name + of the table having the conflict. The second column gives the number of rows in the table + having the conflict. +

+ Win32 MSI API: + MsiDatabaseMerge +

+
+ + + Merges another database with this database. + + The database to be merged into this database + merge failed due to a schema difference or data conflict + the Database handle is invalid +

+ MsiDatabaseMerge does not copy over embedded cabinet files or embedded transforms from + the reference database into the target database. Embedded data streams that are listed in + the Binary table or Icon table are copied from the reference database to the target database. + Storage embedded in the reference database are not copied to the target database. +

+ The Merge method merges the data of two databases. These databases must have the same + codepage. The merge fails if any tables or rows in the databases conflict. A conflict exists + if the data in any row in the first database differs from the data in the corresponding row + of the second database. Corresponding rows are in the same table of both databases and have + the same primary key in both databases. The tables of non-conflicting databases must have + the same number of primary keys, same number of columns, same column types, same column names, + and the same data in rows with identical primary keys. Temporary columns however don't matter + in the column count and corresponding tables can have a different number of temporary columns + without creating conflict as long as the persistent columns match. +

+ If the number, type, or name of columns in corresponding tables are different, the + schema of the two databases are incompatible and the installer will stop processing tables + and the merge fails. The installer checks that the two databases have the same schema before + checking for row merge conflicts. If the schemas are incompatible, the databases have be + modified. +

+ Win32 MSI API: + MsiDatabaseMerge +

+
+ + + Checks whether a table exists and is persistent in the database. + + The table to the checked + true if the table exists and is persistent in the database; false otherwise + the table is unknown + the Database handle is invalid +

+ To check whether a table exists regardless of persistence, + use . +

+ Win32 MSI API: + MsiDatabaseIsTablePersistent +

+
+ + + Checks whether a table contains a persistent column with a given name. + + The table to the checked + The name of the column to be checked + true if the column exists in the table; false if the column is temporary or does not exist. + the View could not be executed + the Database handle is invalid +

+ To check whether a column exists regardless of persistence, + use . +

+
+ + + Gets the count of all rows in the table. + + Name of the table whose rows are to be counted + The count of all rows in the table + the View could not be executed + the Database handle is invalid + + + + Gets the count of all rows in the table that satisfy a given condition. + + Name of the table whose rows are to be counted + Conditional expression, such as could be placed on the end of a SQL WHERE clause + The count of all rows in the table satisfying the condition + the SQL WHERE syntax is invalid + the View could not be executed + the Database handle is invalid + + + + Finalizes the persistent form of the database. All persistent data is written + to the writeable database, and no temporary columns or rows are written. + + the Database handle is invalid +

+ For a database open in mode, this method has no effect. +

+ For a database open in or + mode, it is not necessary to call this method because the database will be automatically committed + when it is closed. However this method may be called at any time to persist the current state of tables + loaded into memory. +

+ For a database open in or + mode, no changes will be persisted until this method is called. If the database object is closed without + calling this method, the database file remains unmodified. +

+ Win32 MSI API: + MsiDatabaseCommit +

+
+ + + Copies the structure and data from a specified table to a text archive file. + + Name of the table to be exported + Path to the file to be created + the file path is invalid + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseExport +

+
+ + + Imports a database table from a text archive file, dropping any existing table. + + Path to the file to be imported. + The table name is specified within the file. + the file path is invalid + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseImport +

+
+ + + Exports all database tables, streams, and summary information to archive files. + + Path to the directory where archive files will be created + the directory path is invalid + the Database handle is invalid +

+ The directory will be created if it does not already exist. +

+ Win32 MSI API: + MsiDatabaseExport +

+
+ + + Imports all database tables, streams, and summary information from archive files. + + Path to the directory from which archive files will be imported + the directory path is invalid + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseImport +

+
+ + + Creates a new record object with the requested number of fields. + + Required number of fields, which may be 0. + The maximum number of fields in a record is limited to 65535. + A new record object that can be used with the database. +

+ This method is equivalent to directly calling the + constructor in all cases outside of a custom action context. When in a + custom action session, this method allows creation of a record that can + work with a database other than the session database. +

+ The Record object should be d after use. + 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. +

+ Win32 MSI API: + MsiCreateRecord +

+
+ + + Returns the file path of this database, or the handle value if a file path was not specified. + + + + + Closes the database handle. After closing a handle, further method calls may throw . + + 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, only unmanaged resources will be disposed. + + + + Returns the value of the specified property. + + Name of the property to retrieve. + + + + Gets a View object representing the query specified by a SQL string. + + SQL query string, which may contain format items + Zero or more objects to format + A View object representing the query specified by a SQL string + the SQL syntax is invalid + the Database handle is invalid +

+ The parameter is formatted using . +

+ The View object should be d after use. + 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. +

+ Win32 MSI API: + MsiDatabaseOpenView +

+
+ + + Executes the query specified by a SQL string. The query may not be a SELECT statement. + + SQL query string, which may contain format items + Zero or more objects to format + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ The parameter is formatted using + . +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute +

+
+ + + Executes the query specified by a SQL string. The query may not be a SELECT statement. + + SQL query string + Optional Record object containing the values that replace + the parameter tokens (?) in the SQL query. + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute +

+
+ + + Executes the specified SQL SELECT query and returns all results. + + SQL query string, which may contain format items + Zero or more objects to format + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ The parameter is formatted using + . +

+ Multiple rows columns will be collapsed into a single one-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns all results. + + SQL SELECT query string + Optional Record object containing the values that replace + the parameter tokens (?) in the SQL query. + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ Multiple rows columns will be collapsed into a single one-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns all results as integers. + + SQL query string, which may contain format items + Zero or more objects to format + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ The parameter is formatted using + . +

+ Multiple rows columns will be collapsed into a single one-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns all results as integers. + + SQL SELECT query string + Optional Record object containing the values that replace + the parameter tokens (?) in the SQL query. + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ Multiple rows columns will be collapsed into a single one-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns all results as strings. + + SQL query string, which may contain format items + Zero or more objects to format + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ The parameter is formatted using + . +

+ Multiple rows columns will be collapsed into a single on-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns all results as strings. + + SQL SELECT query string + Optional Record object containing the values that replace + the parameter tokens (?) in the SQL query. + All results combined into an array + the SQL syntax is invalid + the View could not be executed + the Database handle is invalid +

+ Multiple rows columns will be collapsed into a single on-dimensional list. +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns a single result. + + SQL query string, which may contain format items + Zero or more objects to format + First field of the first result + the SQL syntax is invalid + the View could not be executed + or the query returned 0 results + the Database handle is invalid +

+ The parameter is formatted using + . +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Executes the specified SQL SELECT query and returns a single result. + + SQL SELECT query string + Optional Record object containing the values that replace + the parameter tokens (?) in the SQL query. + First field of the first result + the SQL syntax is invalid + the View could not be executed + or the query returned 0 results + the Database handle is invalid +

+ Win32 MSI APIs: + MsiDatabaseOpenView, + MsiViewExecute, + MsiViewFetch +

+
+ + + Creates a transform that, when applied to the object database, results in the reference database. + + Database that does not include the changes + Name of the generated transform file, or null to only + check whether or not the two database are identical + true if a transform is generated, or false if a transform is not generated + because there are no differences between the two databases. + the transform could not be generated + a Database handle is invalid +

+ A transform can add non-primary key columns to the end of a table. A transform cannot + be created that adds primary key columns to a table. A transform cannot be created that + changes the order, names, or definitions of columns. +

+ If the transform is to be applied during an installation you must use the + method to populate the + summary information stream. +

+ Win32 MSI API: + MsiDatabaseGenerateTransform +

+
+ + + Creates and populates the summary information stream of an existing transform file, and + fills in the properties with the base and reference ProductCode and ProductVersion. + + Database that does not include the changes + Name of the generated transform file + Error conditions that should be suppressed + when the transform is applied + Defines which properties should be validated + to verify that this transform can be applied to a database. + the transform summary info could not be + generated + a Database handle is invalid +

+ Win32 MSI API: + MsiCreateTransformSummaryInfo +

+
+ + + Apply a transform to the database, recording the changes in the "_TransformView" table. + + Path to the transform file + the transform could not be applied + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseApplyTransform +

+
+ + + Apply a transform to the database, suppressing any error conditions + specified by the transform's summary information. + + Path to the transform file + the transform could not be applied + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseApplyTransform +

+
+ + + Apply a transform to the database, specifying error conditions to suppress. + + Path to the transform file + Error conditions that are to be suppressed + the transform could not be applied + the Database handle is invalid +

+ Win32 MSI API: + MsiDatabaseApplyTransform +

+
+ + + Checks whether a transform is valid for this Database, according to its validation data and flags. + + Path to the transform file + true if the transform can be validly applied to this Database; false otherwise + the transform could not be applied + the Database handle is invalid + + + + Checks whether a transform is valid for this Database, according to its SummaryInfo data. + + SummaryInfo data of a transform file + true if the transform can be validly applied to this Database; false otherwise + error processing summary info + the Database or SummaryInfo handle is invalid + + + + Gets the file path the Database was originally opened from, or null if not known. + + + + + Gets the open mode for the database. + + + + + Gets a boolean value indicating whether this database was opened in read-only mode. + +

+ Win32 MSI API: + MsiGetDatabaseState +

+
+ + + Gets the collection of tables in the Database. + + + + + Gets or sets the code page of the Database. + + error exporting/importing the codepage data + the Database handle is invalid +

+ Getting or setting the code page is a slow operation because it involves an export or import + of the codepage data to/from a temporary file. +

+
+ + + Gets the SummaryInfo object for this database that can be used to examine and modify properties + to the summary information stream. + + the Database handle is invalid +

+ The object returned from this property does not need to be explicitly persisted or closed. + Any modifications will be automatically saved when the database is committed. +

+ Win32 MSI API: + MsiGetSummaryInformation +

+
+ + + Managed-code portion of the embedded UI proxy. + + + + + Initializes managed embedded UI by loading the UI class and invoking its Initialize method. + + Integer handle to the installer session. + Name of the class that implements the embedded UI. This must + be of the form: "AssemblyName!Namespace.Class" + On entry, contains the current UI level for the installation. After this + method returns, the installer resets the UI level to the returned value of this parameter. + 0 if the embedded UI was successfully loaded and initialized, + ERROR_INSTALL_USEREXIT if the user canceled the installation during initialization, + or ERROR_INSTALL_FAILURE if the embedded UI could not be initialized. + + Due to interop limitations, the successful resulting UILevel is actually returned + as the high-word of the return value instead of via a ref parameter. + + + + + Passes a progress message to the UI class. + + Installer message type and message box options. + Handle to a record containing message data. + Return value returned by the UI class. + + + + Passes a shutdown message to the UI class. + + + + + Instantiates a UI class from a given assembly and class name. + + Installer session, for logging. + Name of the class that implements the embedded UI. This must + be of the form: "AssemblyName!Namespace.Class" + Interface on the UI class for handling UI messages. + + + + Specifies a return status value for custom actions. + + + + Action completed successfully. + + + Skip remaining actions, not an error. + + + User terminated prematurely. + + + Unrecoverable error or unhandled exception occurred. + + + Action not executed. + + + + Specifies the open mode for a . + + + + Open a database read-only, no persistent changes. + + + Open a database read/write in transaction mode. + + + Open a database direct read/write without transaction. + + + Create a new database, transact mode read/write. + + + Create a new database, direct mode read/write. + + + + Log modes available for + and . + + + + Disable logging. + + + Log out of memory or fatal exit information. + + + Log error messages. + + + Log warning messages. + + + Log user requests. + + + Log status messages that are not displayed. + + + Log request to determine a valid source location. + + + Log insufficient disk space error. + + + Log the start of installation actions. + + + Log the data record for installation actions. + + + Log parameters for user-interface initialization. + + + Log the property values at termination. + + + + Sends large amounts of information to log file not generally useful to users. + May be used for support. + + + + + Log extra debugging information. + + + + + Log only on error. + + + + + Log progress bar information. This message includes information on units so far and total number + of units. See for an explanation of the message format. This message + is only sent to an external user interface and is not logged. + + + + + If this is not a quiet installation, then the basic UI has been initialized. If this is a full + UI installation, the Full UI is not yet initialized. This message is only sent to an external + user interface and is not logged. + + + + + If a full UI is being used, the full UI has ended. If this is not a quiet installation, the basic + UI has not yet ended. This message is only sent to an external user interface and is not logged. + + + + + Sent prior to display of the Full UI dialog. This message is only sent to an external user + interface and is not logged. + + + + + List of files in use that need to be replaced. + + + + + [MSI 4.0] List of apps that the user can request Restart Manager to shut down and restart. + + + + + Type of message to be processed by , + , or . + + + + Premature termination, possibly fatal OOM. + + + Formatted error message. + + + Formatted warning message. + + + User request message. + + + Informative message for log. + + + List of files in use that need to be replaced. + + + Request to determine a valid source location. + + + Insufficient disk space message. + + + Start of action: action name & description. + + + Formatted data associated with individual action item. + + + Progress gauge info: units so far, total. + + + Product info for dialog: language Id, dialog caption. + + + Sent prior to UI initialization, no string data. + + + Sent after UI termination, no string data. + + + Sent prior to display or authored dialog or wizard. + + + [MSI 4.0] List of apps that the user can request Restart Manager to shut down and restart. + + + [MSI 4.5] Sent prior to install of a product. + + + [MSI 4.5] Sent after install of a product. + + + + Specifies the install mode for or . + + + + Provide the component only if the feature's installation state is . + + + Only check that the component is registered, without verifying that the key file of the component exists. + + + Provide the component only if the feature exists. + + + Provide the component and perform any installation necessary to provide the component. + + + + Specifies the run mode for . + + + + The administrative mode is installing, or the product is installing. + + + The advertisements are installing or the product is installing or updating. + + + An existing installation is being modified or there is a new installation. + + + Rollback is enabled. + + + The log file is active. It was enabled prior to the installation session. + + + Execute operations are spooling or they are in the determination phase. + + + A reboot is necessary after a successful installation (settable). + + + A reboot is necessary to continue the installation (settable). + + + Files from cabinets and Media table files are installing. + + + The source LongFileNames is suppressed through the PID_MSISOURCE summary property. + + + The target LongFileNames is suppressed through the SHORTFILENAMES property. + + + The operating system is Windows 95, Windows 98, or Windows ME. + + + The operating system supports demand installation. + + + A custom action called from install script execution. + + + A custom action called from rollback execution script. + + + A custom action called from commit execution script. + + + + Installed state of a Component or Feature. + + + + The component is disabled. + + + The installation configuration data is corrupt. + + + The installation is suspended or in progress. + + + Component is set to run from source, but source is unavailable. + + + The buffer overflow is returned. + + + An invalid parameter was passed to the function. + + + An unrecognized product or feature name was passed to the function. + + + The component is broken. + + + The feature is advertised. + + + The component is being removed. In action state and not settable. + + + The component is not installed, or action state is absent but clients remain. + + + The component is installed on the local drive. + + + The component will run from the source, CD, or network. + + + The component will be installed in the default location: local or source. + + + + Specifies the type of installation for . + + + + Searches system for products to patch. + + + Indicates a administrative installation. + + + Indicates a particular instance. + + + + Level of the installation user interface, specified with + . + + + + Does not change UI level. + + + Uses Default UI level. + + + Silent installation. + + + Simple progress and error handling. + + + Authored UI, wizard dialogs suppressed. + + + Authored UI with wizards, progress, and errors. + + + + When combined with the value, the installer does not display + the cancel button in the progress dialog. + + + + + When combined with the value, the installer displays progress + dialog boxes but does not display any modal dialog boxes or error dialog boxes. + + + + + When combined with another value, the installer displays a modal dialog + box at the end of a successful installation or if there has been an error. + No dialog box is displayed if the user cancels. + + + + + Forces display of the source resolution dialog even if the UI is otherwise silent. + + + + + [MSI 5.0] Forces display of the UAC dialog even if the UI is otherwise silent. + + + + + Specifies a return status value for message handlers. These values are returned by + , , and . + + + + An error was found in the message handler. + + + No action was taken. + + + IDOK + + + IDCANCEL + + + IDABORT + + + IDRETRY + + + IDIGNORE + + + IDYES + + + IDNO + + + + Specifies constants defining which buttons to display for a message. This can be cast to + the MessageBoxButtons enum in System.Windows.Forms and System.Windows. + + + + + The message contains an OK button. + + + + + The message contains OK and Cancel buttons. + + + + + The message contains Abort, Retry, and Ignore buttons. + + + + + The message contains Yes, No, and Cancel buttons. + + + + + The message contains Yes and No buttons. + + + + + The message contains Retry and Cancel buttons. + + + + + Specifies constants defining which information to display. This can be cast to + the MessageBoxIcon enum in System.Windows.Forms and System.Windows. + + + + + The message contain no symbols. + + + + + The message contains a symbol consisting of white X in a circle with a red background. + + + + + The message contains a symbol consisting of a white X in a circle with a red background. + + + + + The message contains a symbol consisting of white X in a circle with a red background. + + + + + The message contains a symbol consisting of a question mark in a circle. + + + + + The message contains a symbol consisting of an exclamation point in a triangle with a yellow background. + + + + + The message contains a symbol consisting of an exclamation point in a triangle with a yellow background. + + + + + The message contains a symbol consisting of a lowercase letter i in a circle. + + + + + The message contains a symbol consisting of a lowercase letter i in a circle. + + + + + Specifies constants defining the default button on a message. This can be cast to + the MessageBoxDefaultButton enum in System.Windows.Forms and System.Windows. + + + + + The first button on the message is the default button. + + + + + The second button on the message is the default button. + + + + + The third button on the message is the default button. + + + + + Additional styles for use with message boxes. + + + + + The message box is created with the WS_EX_TOPMOST window style. + + + + + The caller is a service notifying the user of an event. + The function displays a message box on the current active desktop, even if there is no user logged on to the computer. + + + + + Specifies the different patch states for . + + + + Invalid value. + + + Patches applied to a product. + + + Patches that are superseded by other patches. + + + Patches that are obsolesced by other patches. + + + Patches that are registered to a product but not applied. + + + All valid patch states. + + + + Specifies the reinstall mode for or . + + + + Reinstall only if file is missing. + + + Reinstall if file is missing, or older version. + + + Reinstall if file is missing, or equal or older version. + + + Reinstall if file is missing, or not exact version. + + + Checksum executables, reinstall if missing or corrupt. + + + Reinstall all files, regardless of version. + + + Insure required machine reg entries. + + + Insure required user reg entries. + + + Validate shortcuts items. + + + Use re-cache source install package. + + + + Attributes for methods. + + + + No attributes. + + + Request that the Windows Installer not shutdown the embedded UI until the transaction is complete. + + + Request that the Windows Installer transfer the embedded UI from the original installation. + + + + Transform error conditions available for or + . + + + + No error conditions. + + + Adding a row that already exists. + + + Deleting a row that doesn't exist. + + + Adding a table that already exists. + + + Deleting a table that doesn't exist. + + + Updating a row that doesn't exist. + + + Transform and database code pages do not match and neither code page is neutral. + + + Create the temporary _TransformView table when applying the transform. + + + + Transform validation flags available for . + + + + Validate no properties. + + + Default language must match base database. + + + Product must match base database. + + + Check major version only. + + + Check major and minor versions only. + + + Check major, minor, and update versions. + + + Installed version < base version. + + + Installed version <= base version. + + + Installed version = base version. + + + Installed version >= base version. + + + Installed version > base version. + + + UpgradeCode must match base database. + + + + Specifies the installation context for s, + es, and + + + + + Not installed. + + + User managed install context. + + + User non-managed context. + + + Per-machine context. + + + All contexts, or all valid values. + + + All user-managed contexts. + + + + Defines the type of error encountered by the , , + or methods of the class. + + + + No error. + + + The new record duplicates primary keys of the existing record in a table. + + + There are no null values allowed, or the column is about to be deleted but is referenced by another row. + + + The corresponding record in a foreign table was not found. + + + The data is greater than the maximum value allowed. + + + The data is less than the minimum value allowed. + + + The data is not a member of the values permitted in the set. + + + An invalid version string was supplied. + + + The case was invalid. The case must be all uppercase or all lowercase. + + + An invalid GUID was supplied. + + + An invalid wildcard file name was supplied, or the use of wildcards was invalid. + + + An invalid identifier was supplied. + + + Invalid language IDs were supplied. + + + An invalid file name was supplied. + + + An invalid path was supplied. + + + An invalid conditional statement was supplied. + + + An invalid format string was supplied. + + + An invalid template string was supplied. + + + An invalid string was supplied in the DefaultDir column of the Directory table. + + + An invalid registry path string was supplied. + + + An invalid string was supplied in the CustomSource column of the CustomAction table. + + + An invalid property string was supplied. + + + The _Validation table is missing a reference to a column. + + + The category column of the _Validation table for the column is invalid. + + + The table in the Keytable column of the _Validation table was not found or loaded. + + + The value in the MaxValue column of the _Validation table is less than the value in the MinValue column. + + + An invalid cabinet name was supplied. + + + An invalid shortcut target name was supplied. + + + The string is too long for the length specified by the column definition. + + + An invalid localization attribute was supplied. (Primary keys cannot be localized.) + + + + Specifies the modify mode for . + + + + + Refreshes the information in the supplied record without changing the position + in the result set and without affecting subsequent fetch operations. + + + + Refreshes the data in a Record. + + + Inserts a Record into the view. + + + Updates the View with new data from the Record. + + + Updates or inserts a Record into the View. + + + Updates or deletes and inserts a Record into the View. + + + Inserts or validates a record. + + + Deletes a Record from the View. + + + Inserts a Record into the View. The inserted data is not persistent. + + + Validates a record. + + + Validates a new record. + + + Validates fields of a fetched or new record. Can validate one or more fields of an incomplete record. + + + Validates a record that will be deleted later. + + + + Base class for Windows Installer exceptions. + + + + + Creates a new InstallerException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new InstallerException with a specified error message. + + The message that describes the error. + + + + Creates a new InstallerException. + + + + + Initializes a new instance of the InstallerException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the exception. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Gets extended information about the error, or null if no further information + is available. + + A Record object. Field 1 of the Record contains the installer + message code. Other fields contain data specific to the particular error. +

+ If the record is passed to , it is formatted + by looking up the string in the current database. If there is no installation + session, the formatted error message may be obtained by a query on the Error table using + the error code, followed by a call to . + Alternatively, the standard MSI message can by retrieved by calling the + method. +

+ The following methods and properties may report extended error data: + + (constructor) + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + (constructor) + . + . + . + . + . + . + . + . + . + +

+ The Record object should be d after use. + 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. +

+ Win32 MSI API: + MsiGetLastErrorRecord +

+
+ + + Gets the system error code that resulted in this exception, or 0 if not applicable. + + + + + Gets a message that describes the exception. This message may contain detailed + formatted error data if it was available. + + + + + User Canceled the installation. + + + + + Creates a new InstallCanceledException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new InstallCanceledException with a specified error message. + + The message that describes the error. + + + + Creates a new InstallCanceledException. + + + + + Initializes a new instance of the InstallCanceledException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + A bad SQL query string was passed to or . + + + + + Creates a new BadQuerySyntaxException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new BadQuerySyntaxException with a specified error message. + + The message that describes the error. + + + + Creates a new BadQuerySyntaxException. + + + + + Initializes a new instance of the BadQuerySyntaxException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + A method was called on an invalid installer handle. The handle may have been already closed. + + + + + Creates a new InvalidHandleException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new InvalidHandleException with a specified error message. + + The message that describes the error. + + + + Creates a new InvalidHandleException. + + + + + Initializes a new instance of the InvalidHandleException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + A failure occurred when executing . The exception may contain + details about the merge conflict. + + + + + Creates a new MergeException with a specified error message and a reference to the + inner exception that is the cause of this exception. + + The message that describes the error. + 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. + + + + Creates a new MergeException with a specified error message. + + The message that describes the error. + + + + Creates a new MergeException. + + + + + Initializes a new instance of the MergeException class with serialized data. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Sets the SerializationInfo with information about the exception. + + The SerializationInfo that holds the serialized object data about the exception being thrown. + The StreamingContext that contains contextual information about the source or destination. + + + + Gets the number of merge conflicts in each table, corresponding to the tables returned by + . + + + + + Gets the list of tables containing merge conflicts. + + + + + Gets a message that describes the merge conflits. + + + + + Defines a callback function that the installer calls for progress notification and error messages. + + + + + [MSI 3.1] Defines a callback function that the installer calls for record-based progress notification and error messages. + + + + + Provides static methods for installing and configuring products and patches. + + + + + Enables an external user-interface handler. This external UI handler is called before the + normal internal user-interface handler. The external UI handler has the option to suppress + the internal UI by returning a non-zero value to indicate that it has handled the messages. + + A callback delegate that handles the UI messages + Specifies which messages to handle using the external message handler. + If the external handler returns a non-zero result, then that message will not be sent to the UI, + instead the message will be logged if logging has been enabled. + The previously set external handler, or null if there was no previously set handler +

+ To restore the previous UI handler, a second call is made to SetExternalUI using the + ExternalUIHandler returned by the first call to SetExternalUI and specifying + as the message filter. +

+ The external user interface handler does not have full control over the external user + interface unless is called with the uiLevel parameter set to + . If SetInternalUI is not called, the internal user + interface level defaults to . As a result, any message not + handled by the external user interface handler is handled by Windows Installer. The initial + "Preparing to install..." dialog always appears even if the external user interface + handler handles all messages. +

+ SetExternalUI should only be called from a bootstrapping application. You cannot call + it from a custom action +

+ Win32 MSI API: + MsiSetExternalUI +

+
+ + + [MSI 3.1] Enables a record-based external user-interface handler. This external UI handler is called + before the normal internal user-interface handler. The external UI handler has the option to suppress + the internal UI by returning a non-zero value to indicate that it has handled the messages. + + A callback delegate that handles the UI messages + Specifies which messages to handle using the external message handler. + If the external handler returns a non-zero result, then that message will not be sent to the UI, + instead the message will be logged if logging has been enabled. + The previously set external handler, or null if there was no previously set handler +

+ To restore the previous UI handler, a second call is made to SetExternalUI using the + ExternalUIHandler returned by the first call to SetExternalUI and specifying + as the message filter. +

+ The external user interface handler does not have full control over the external user + interface unless is called with the uiLevel parameter set to + . If SetInternalUI is not called, the internal user + interface level defaults to . As a result, any message not + handled by the external user interface handler is handled by Windows Installer. The initial + "Preparing to install..." dialog always appears even if the external user interface + handler handles all messages. +

+ SetExternalUI should only be called from a bootstrapping application. You cannot call + it from a custom action +

+ Win32 MSI API: + MsiSetExternalUIRecord +

+
+ + + Enables the installer's internal user interface. Then this user interface is used + for all subsequent calls to user-interface-generating installer functions in this process. + + Specifies the level of complexity of the user interface + Handle to a window, which becomes the owner of any user interface created. + A pointer to the previous owner of the user interface is returned. + The previous user interface level +

+ Win32 MSI API: + MsiSetInternalUI +

+
+ + + Enables the installer's internal user interface. Then this user interface is used + for all subsequent calls to user-interface-generating installer functions in this process. + The owner of the user interface does not change. + + Specifies the level of complexity of the user interface + The previous user interface level +

+ Win32 MSI API: + MsiSetInternalUI +

+
+ + + Enables logging of the selected message type for all subsequent install sessions in + the current process space. + + One or more mode flags specifying the type of messages to log + Full path to the log file. A null path disables logging, + in which case the logModes paraneter is ignored. + an invalid log mode was specified + This method takes effect on any new installation processes. Calling this + method from within a custom action will not start logging for that installation. + + + + Enables logging of the selected message type for all subsequent install sessions in + the current process space. + + One or more mode flags specifying the type of messages to log + Full path to the log file. A null path disables logging, + in which case the logModes paraneter is ignored. + If true, the log lines will be appended to any existing file content. + If false, the log file will be truncated if it exists. The default is false. + If true, the log will be flushed after every line. + If false, the log will be flushed every 20 lines. The default is true. + an invalid log mode was specified +

+ This method takes effect on any new installation processes. Calling this + method from within a custom action will not start logging for that installation. +

+ Win32 MSI API: + MsiEnableLog +

+
+ + + increments the usage count for a particular feature and returns the installation state for + that feature. This method should be used to indicate an application's intent to use a feature. + + The product code of the product. + The feature to be used. + Must have the value . + The installed state of the feature. +

+ The UseFeature method should only be used on features known to be published. The application + should determine the status of the feature by calling either the FeatureState method or + Features method. +

+ Win32 MSI APIs: + MsiUseFeature, + MsiUseFeatureEx +

+
+ + + Opens an installer package for use with functions that access the product database and install engine, + returning an Session object. + + Path to the package + Specifies whether or not the create a Session object that ignores the + computer state and that is incapable of changing the current computer state. A value of false yields + the normal behavior. A value of true creates a "safe" Session object that cannot change of the current + machine state. + A Session object allowing access to the product database and install engine + The product could not be opened + The installer configuration data is corrupt +

+ Note that only one Session object can be opened by a single process. OpenPackage cannot be used in a + custom action because the active installation is the only session allowed. +

+ A "safe" Session object ignores the current computer state when opening the package and prevents + changes to the current computer state. +

+ The Session object should be d after use. + 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. +

+ Win32 MSI APIs: + MsiOpenPackage, + MsiOpenPackageEx +

+
+ + + Opens an installer package for use with functions that access the product database and install engine, + returning an Session object. + + Database used to create the session + Specifies whether or not the create a Session object that ignores the + computer state and that is incapable of changing the current computer state. A value of false yields + the normal behavior. A value of true creates a "safe" Session object that cannot change of the current + machine state. + A Session object allowing access to the product database and install engine + The product could not be opened + The installer configuration data is corrupt +

+ Note that only one Session object can be opened by a single process. OpenPackage cannot be used in a + custom action because the active installation is the only session allowed. +

+ A "safe" Session object ignores the current computer state when opening the package and prevents + changes to the current computer state. +

+ The Session object should be d after use. + 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. +

+ Win32 MSI APIs: + MsiOpenPackage, + MsiOpenPackageEx +

+
+ + + Opens an installer package for an installed product using the product code. + + Product code of the installed product + A Session object allowing access to the product database and install engine, + or null if the specified product is not installed. + An unknown product was requested + The product could not be opened + The installer configuration data is corrupt +

+ Note that only one Session object can be opened by a single process. OpenProduct cannot be + used in a custom action because the active installation is the only session allowed. +

+ The Session object should be d after use. + 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. +

+ Win32 MSI API: + MsiOpenProduct +

+
+ + + Gets the full component path, performing any necessary installation. This method prompts for source if + necessary and increments the usage count for the feature. + + Product code for the product that contains the feature with the necessary component + Feature ID of the feature with the necessary component + Component code of the necessary component + Installation mode; this can also include bits from + Path to the component +

+ Win32 MSI API: + MsiProvideComponent +

+
+ + + Gets the full component path for a qualified component that is published by a product and + performs any necessary installation. This method prompts for source if necessary and increments + the usage count for the feature. + + Specifies the component ID for the requested component. This may not be the + GUID for the component itself but rather a server that provides the correct functionality, as in the + ComponentId column of the PublishComponent table. + Specifies a qualifier into a list of advertising components (from PublishComponent Table). + Installation mode; this can also include bits from + Optional; specifies the product to match that has published the qualified component. + Path to the component +

+ Win32 MSI APIs: + MsiProvideQualifiedComponent + MsiProvideQualifiedComponentEx +

+
+ + + Gets the full path to a Windows Installer component containing an assembly. This method prompts for a source and + increments the usage count for the feature. + + Assembly name + Set to null for global assemblies. For private assemblies, set to the full path of the + application configuration file (.cfg file) or executable file (.exe) of the application to which the assembly + has been made private. + Installation mode; this can also include bits from + True if this is a Win32 assembly, false if it is a .NET assembly + Path to the assembly +

+ Win32 MSI API: + MsiProvideAssembly +

+
+ + + Installs files that are unexpectedly missing. + + Product code for the product that owns the component to be installed + Component to be installed + Specifies the way the component should be installed. + the user exited the installation +

+ Win32 MSI API: + MsiInstallMissingComponent +

+
+ + + Installs files that are unexpectedly missing. + + Product code for the product that owns the file to be installed + File to be installed + the user exited the installation +

+ Win32 MSI API: + MsiInstallMissingFile +

+
+ + + Reinstalls a feature. + + Product code for the product containing the feature to be reinstalled + Feature to be reinstalled + Reinstall modes + the user exited the installation +

+ Win32 MSI API: + MsiReinstallFeature +

+
+ + + Reinstalls a product. + + Product code for the product to be reinstalled + Reinstall modes + the user exited the installation +

+ Win32 MSI API: + MsiReinstallProduct +

+
+ + + Opens an installer package and initializes an install session. + + path to the patch package + command line property settings + There was an error installing the product +

+ To completely remove a product, set REMOVE=ALL in . +

+ This method displays the user interface with the current settings and + log mode. You can change user interface settings with the + and functions. You can set the log mode with the + function. +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI API: + MsiInstallProduct +

+
+ + + Installs or uninstalls a product. + + Product code of the product to be configured. + Specifies the default installation configuration of the + product. The parameter is ignored and all features + are installed if the parameter is set to any other + value than . This parameter must be either 0 + (install using authored feature levels), 65535 (install all features), or a value + between 0 and 65535 to install a subset of available features. + Specifies the installation state for the product. + Specifies the command line property settings. This should + be a list of the format Property=Setting Property=Setting. + There was an error configuring the product +

+ This method displays the user interface with the current settings and + log mode. You can change user interface settings with the + and functions. You can set the log mode with the + function. +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI APIs: + MsiConfigureProduct, + MsiConfigureProductEx +

+
+ + + Configures the installed state for a product feature. + + Product code of the product to be configured. + Specifies the feature ID for the feature to be configured. + Specifies the installation state for the feature. + There was an error configuring the feature +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI API: + MsiConfigureFeature +

+
+ + + For each product listed by the patch package as eligible to receive the patch, ApplyPatch invokes + an installation and sets the PATCH property to the path of the patch package. + + path to the patch package + optional command line property settings + There was an error applying the patch +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI API: + MsiApplyPatch +

+
+ + + For each product listed by the patch package as eligible to receive the patch, ApplyPatch invokes + an installation and sets the PATCH property to the path of the patch package. + + path to the patch package + path to the product to be patched, if installType + is set to + type of installation to patch + optional command line property settings + There was an error applying the patch +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI API: + MsiApplyPatch +

+
+ + + Removes one or more patches from a single product. To remove a patch from + multiple products, RemovePatches must be called for each product. + + List of patches to remove. Each patch can be specified by the GUID + of the patch or the full path to the patch package. + The ProductCode (GUID) of the product from which the patches + are removed. This parameter cannot be null. + optional command line property settings + There was an error removing the patches +

+ The and properties should be + tested after calling this method. +

+ Win32 MSI API: + MsiRemovePatches +

+
+ + + Determines which patches apply to a specified product MSI and in what sequence. + + Full path to an MSI file that is the target product + for the set of patches. + An array of strings specifying the patches to be checked. Each item + may be the path to an MSP file, the path an XML file, or just an XML blob. + Callback to be invoked for each inapplicable patch, reporting the + reason the patch is not applicable. This value may be left null if that information is not + desired. + An array of selected patch strings from , indicating + the set of applicable patches. The items are re-ordered to be in the best sequence. +

+ If an item in is a file path but does not end in .MSP or .XML, + it is assumed to be an MSP file. +

+ As this overload uses InstallContext.None, it does not consider the current state of + the system. +

+ Win32 MSI API: + MsiDetermineApplicablePatches +

+
+ + + Determines which patches apply to a specified product and in what sequence. If + the product is installed, this method accounts for patches that have already been applied to + the product and accounts for obsolete and superceded patches. + + The product that is the target for the set of patches. This may be + either a ProductCode (GUID) of a product that is currently installed, or the path to a an + MSI file. + An array of strings specifying the patches to be checked. Each item + may be the path to an MSP file, the path an XML file, or just an XML blob. + Callback to be invoked for each inapplicable patch, reporting the + reason the patch is not applicable. This value may be left null if that information is not + desired. + Specifies a security identifier (SID) of a user. This parameter restricts + the context of enumeration for this user account. This parameter cannot be the special SID + strings s-1-1-0 (everyone) or s-1-5-18 (local system). If is set to + or , then + must be null. For the current user context, + can be null and can be set to + or . + Restricts the enumeration to per-user-unmanaged, per-user-managed, + or per-machine context, or (if referring to an MSI) to no system context at all. This + parameter can be , , + , or . + An array of selected patch strings from , indicating + the set of applicable patches. The items are re-ordered to be in the best sequence. +

+ If an item in is a file path but does not end in .MSP or .XML, + it is assumed to be an MSP file. +

+ Passing an InstallContext of None only analyzes the MSI file; it does not consider the + current state of the system. You cannot use InstallContext.None with a ProductCode GUID. +

+ Win32 MSI APIs: + MsiDetermineApplicablePatches + MsiDeterminePatchSequence +

+
+ + + Applies one or more patches to products that are eligible to receive the patch. + For each product listed by the patch package as eligible to receive the patch, ApplyPatch invokes + an installation and sets the PATCH property to the path of the patch package. + + The set of patch packages to be applied. + Each item is the full path to an MSP file. + Provides the ProductCode of the product being patched. If this parameter + is null, the patches are applied to all products that are eligible to receive these patches. + optional command line property settings +

+ Win32 MSI API: + MsiApplyMultiplePatches +

+
+ + + Extracts information from a patch that can be used to determine whether the patch + applies on a target system. The method returns an XML string that can be provided to + + instead of the full patch file. + + Full path to the patch being queried. + XML string containing patch data. +

+ Win32 MSI API: + MsiExtractPatchXMLData +

+
+ + + [MSI 3.1] Migrates a user's application configuration data to a new SID. + + Previous user SID that data is to be migrated from + New user SID that data is to be migrated to +

+ Win32 MSI API: + MsiNotifySidChange +

+
+ + + Advertises a product to the local computer. + + Path to the package of the product being advertised + True if the product is user-assigned; false if it is machine-assigned. + Semi-colon delimited list of transforms to be applied. This parameter may be null. + The language to use if the source supports multiple languages + the specified package file does not exist + +

+ Win32 MSI APIs: + MsiAdvertiseProduct, + MsiAdvertiseProductEx +

+
+ + + Generates an advertise script. The method enables the installer to write to a + script the registry and shortcut information used to assign or publish a product. + + Path to the package of the product being advertised + path to script file to be created with the advertise information + Semi-colon delimited list of transforms to be applied. This parameter may be null. + The language to use if the source supports multiple languages + the specified package file does not exist + +

+ Win32 MSI APIs: + MsiAdvertiseProduct, + MsiAdvertiseProductEx +

+
+ + + Generates an advertise script. The method enables the installer to write to a + script the registry and shortcut information used to assign or publish a product. + + Path to the package of the product being advertised + path to script file to be created with the advertise information + Semi-colon delimited list of transforms to be applied. This parameter may be null. + The language to use if the source supports multiple languages + Targeted processor architecture. + True to install multiple instances through product code changing transform. + Advertises a new instance of the product. Requires that the parameter + includes the instance transform that changes the product code. + +

+ Win32 MSI APIs: + MsiAdvertiseProduct, + MsiAdvertiseProductEx +

+
+ + + Copies an advertise script file to the local computer. + + Path to a script file generated by + + Flags controlling advertisement + True if specified items are to be removed instead of being created +

+ The process calling this function must be running under the LocalSystem account. To advertise an + application for per-user installation to a targeted user, the thread that calls this function must + impersonate the targeted user. If the thread calling this function is not impersonating a targeted + user, the application is advertised to all users for installation with elevated privileges. +

+
+ + + Processes an advertise script file into the specified locations. + + Path to a script file generated by + + An optional path to a folder in which advertised icon files and transform + files are located. If this parameter is null, no icon or transform files are written. + True if shortcuts should be created + True if specified items are to be removed instead of created +

+ The process calling this function must be running under the LocalSystem account. To advertise an + application for per-user installation to a targeted user, the thread that calls this function must + impersonate the targeted user. If the thread calling this function is not impersonating a targeted + user, the application is advertised to all users for installation with elevated privileges. +

+ Win32 MSI API: + MsiProcessAdvertiseScript +

+
+ + + Gets product information for an installer script file. + + Path to a script file generated by + + ProductInstallation stub with advertise-related properties filled in. + An invalid product property was requested +

+ Only the following properties will be filled in in the returned object:

    +
  • +
  • +
  • +
  • +
  • +
Other properties will be null. +

+ Win32 MSI API: + MsiGetProductInfoFromScript +

+
+ + + Gets a Windows Installer error message in the system default language. + + The error number. + The message string, or null if the error message is not found. +

+ The returned string may have tokens such as [2] and [3] that are meant to be substituted + with context-specific values. +

+ Error numbers greater than 2000 refer to MSI "internal" errors, and are always + returned in English. +

+
+ + + Gets a Windows Installer error message in a specified language. + + The error number. + The locale for the message. + The message string, or null if the error message or locale is not found. +

+ The returned string may have tokens such as [2] and [3] that are meant to be substituted + with context-specific values. +

+ Error numbers greater than 2000 refer to MSI "internal" errors, and are always + returned in English. +

+
+ + + Gets a formatted Windows Installer error message in the system default language. + + Error record containing the error number in the first field, and + error-specific parameters in the other fields. + The message string, or null if the error message is not found. +

+ Error numbers greater than 2000 refer to MSI "internal" errors, and are always + returned in English. +

+
+ + + Gets a formatted Windows Installer error message in a specified language. + + Error record containing the error number in the first field, and + error-specific parameters in the other fields. + The locale for the message. + The message string, or null if the error message or locale is not found. +

+ Error numbers greater than 2000 refer to MSI "internal" errors, and are always + returned in English. +

+
+ + + Gets the version string of the path specified using the format that the installer + expects to find it in in the database. + + Path to the file + Version string in the "#.#.#.#" format, or an empty string if the file + does not contain version information + the file does not exist or could not be read +

+ Win32 MSI API: + MsiGetFileVersion +

+
+ + + Gets the language string of the path specified using the format that the installer + expects to find them in in the database. + + Path to the file + Language string in the form of a decimal language ID, or an empty string if the file + does not contain a language ID + the file does not exist or could not be read +

+ Win32 MSI API: + MsiGetFileVersion +

+
+ + + Gets a 128-bit hash of the specified file. + + Path to the file + Integer array of length 4 which receives the + four 32-bit parts of the hash value. + the file does not exist or + could not be read +

+ Win32 MSI API: + MsiGetFileHash +

+
+ + + Examines a shortcut and returns its product, feature name, and component if available. + + Full path to a shortcut + ShortcutTarget structure containing target product code, feature, and component code +

+ Win32 MSI API: + MsiGetShortcutTarget +

+
+ + + Verifies that the given file is an installation package. + + Path to the package + True if the file is an installation package; false otherwise. + the specified package file does not exist + the package file could not be opened +

+ Win32 MSI API: + MsiVerifyPackage +

+
+ + + [MSI 4.0] Gets the list of files that can be updated by one or more patches. + + ProductCode (GUID) of the product which is + the target of the patches + list of file paths of one or more patches to be + analyzed + List of absolute paths of files that can be updated when the + patches are applied on this system. +

+ Win32 MSI API: + MsiGetPatchFileList +

+
+ + + Indicates whether a system reboot is required after running an installation or configuration operation. + + + + + Indicates whether a system reboot has been initiated after running an installation or configuration operation. + + + + + Gets the current version of the installer. + + + + + Accessor for information about features within the context of an installation session. + + + + + Checks if the collection contains a feature. + + name of the feature + true if the feature is in the collection, else false + + + + Copies the features into an array. + + array that receives the features + offset into the array + + + + Enumerates the features in the collection. + + an enumerator over all features in the collection + + + + Gets information about a feature within the context of an installation session. + + name of the feature + feature object + + + + Gets the number of features defined for the product. + + + + + Provides access to information about a feature within the context of an installation session. + + + + + Calculates the disk space required by the feature and its selected children and parent features. + + If true, the parent features are included in the cost. + If true, the child features are included in the cost. + Specifies the installation state. + The disk space requirement in bytes. +

+ Win32 MSI API: + MsiGetFeatureCost +

+
+ + + Gets the name of the feature (primary key in the Feature table). + + + + + Gets the current install state of the feature. + + the Session handle is invalid + an unknown feature was requested +

+ Win32 MSI API: + MsiGetFeatureState +

+
+ + + Gets or sets the action state of the feature. + + the Session handle is invalid + an unknown feature was requested +

+ When changing the feature action, the action state of all the Components linked to the changed + Feature records are also updated appropriately, based on the new feature Select state. + All Features can be configured at once by specifying the keyword ALL instead of a specific feature name. +

+ Win32 MSI APIs: + MsiGetFeatureState, + MsiSetFeatureState +

+
+ + + Gets a list of valid installation states for the feature. + + the Session handle is invalid + an unknown feature was requested +

+ Win32 MSI API: + MsiGetFeatureValidStates +

+
+ + + Gets or sets the attributes of the feature. + + the Session handle is invalid + an unknown feature was requested +

+ Win32 MSI APIs: + MsiGetFeatureInfo, + MsiSetFeatureAttributes +

+ Since the lpAttributes paramter of + MsiGetFeatureInfo + does not contain an equivalent flag for , this flag will + not be retrieved. +

+ Since the dwAttributes parameter of + MsiSetFeatureAttributes + does not contain an equivalent flag for , the presence + of this flag will be ignored. +

+
+ + + Gets the title of the feature. + + the Session handle is invalid + an unknown feature was requested +

+ Win32 MSI API: + MsiGetFeatureInfo +

+
+ + + Gets the description of the feature. + + the Session handle is invalid + an unknown feature was requested +

+ Win32 MSI API: + MsiGetFeatureInfo +

+
+ + + Represents an instance of a feature of an installed product. + + + + + Creates a new FeatureInstallation instance for a feature of a product. + + feature name + ProductCode GUID + + + + Gets the name of the feature. + + + + + Gets the installed state of the feature. + +

+ Win32 MSI API: + MsiQueryFeatureState +

+
+ + + Gets the parent of the feature, or null if the feature has no parent (it is a root feature). + + + Invocation of this property may be slightly costly for products with many features, + because it involves an enumeration of all the features in the product. + + + + + Gets the usage metrics for the feature. + +

+ If no usage metrics are recorded, the value is 0. +

+ Win32 MSI API: + MsiGetFeatureUsage +

+
+ + + Holds data about the usage of a feature. + + + + + Gets count of the number of times the feature has been used. + + + + + Gets the date the feature was last used. + + + + + [MSI 4.5] Interface for an embedded external user interface for an installation. + + + Classes which implement this interface must have a public constructor that takes no parameters. + + + + + Initializes the embedded UI. + + Handle to the installer which can be used to get and set properties. + The handle is only valid for the duration of this method call. + Path to the directory that contains all the files from the MsiEmbeddedUI table. + On entry, contains the current UI level for the installation. After this + method returns, the installer resets the UI level to the returned value of this parameter. + True if the embedded UI was successfully initialized; false if the installation + should continue without the embedded UI. + The installation was canceled by the user. + The embedded UI failed to initialize and + causes the installation to fail. +

+ Win32 MSI API: + InitializeEmbeddedUI +

+
+ + + Processes information and progress messages sent to the user interface. + + Message type. + Record that contains message data. + Message buttons. + Message box icon. + Message box default button. + Result of processing the message. +

+ Win32 MSI API: + EmbeddedUIHandler +

+
+ + + Shuts down the embedded UI at the end of the installation. + + + If the installation was canceled during initialization, this method will not be called. + If the installation was canceled or failed at any later point, this method will be called at the end. +

+ Win32 MSI API: + ShutdownEmbeddedUI +

+
+ + + Subclasses of this abstract class represent a unique instance of a + registered product or patch installation. + + + + + Gets the user security identifier (SID) under which this product or patch + installation is available. + + + + + Gets the user context of this product or patch installation. + + + + + Gets the source list of this product or patch installation. + + + + + Gets a value indicating whether this product or patch is installed on the current system. + + + + + Gets a property about the product or patch installation. + + Name of the property being retrieved. + + + + + Represents a per-drive disk space cost for an installation. + + + + + Creates a new InstallCost object. + + name of the drive this cost data applies to + installation cost on this drive, as a number of bytes + temporary disk space required on this drive, as a number of bytes + + + + The name of the drive this cost data applies to. + + + + + The installation cost on this drive, as a number of bytes. + + + + + The temporary disk space required on this drive, as a number of bytes. + +

+ This temporary space requirement is space needed only for the duration + of the installation, over the final footprint on disk. +

+
+ + + Receives an exception from + + indicating the reason a particular patch is not applicable to a product. + + MSP file path, XML file path, or XML blob that was passed to + + exception indicating the reason the patch is not applicable +

+ If is an or subclass, then + its and + properties will indicate a more specific reason the patch was not applicable. +

+ The could also be a FileNotFoundException if the + patch string was a file path. +

+
+ + + [MSI 4.5] Handle to a multi-session install transaction. + +

+ Win32 MSI APIs: + MsiBeginTransaction + MsiJoinTransaction + MsiEndTransaction +

+
+ + + [MSI 4.5] Begins transaction processing of a multi-package installation. + + Name of the multi-package installation. + Select optional behavior when beginning the transaction. + The transaction could not be initialized. +

+ Win32 MSI API: + MsiBeginTransaction +

+
+ + + Internal constructor. + + + The second parameter is an array in order to receive multiple values from the initialization method. + + + + + Creates a new Transaction object from an integer handle. + + Integer transaction handle + true to close the handle when this object is disposed + + + + Makes the current process the owner of the multi-package installation transaction. + + Select optional behavior when joining the transaction. + The transaction handle is not valid. + The transaction could not be joined. +

+ Win32 MSI API: + MsiJoinTransaction +

+
+ + + Ends the install transaction and commits all changes to the system belonging to the transaction. + + The transaction could not be committed. +

+ Runs any Commit Custom Actions and commits to the system any changes to Win32 or common language + runtime assemblies. Deletes the rollback script, and after using this option, the transaction's + changes can no longer be undone with a Rollback Installation. +

+ This method can only be called by the current owner of the transaction. +

+ Win32 MSI API: + MsiEndTransaction +

+
+ + + Ends the install transaction and undoes changes to the system belonging to the transaction. + + The transaction could not be rolled back. +

+ This method can only be called by the current owner of the transaction. +

+ Win32 MSI API: + MsiEndTransaction +

+
+ + + Gets the name of the transaction. + + + + + Notifies listeners when the process that owns the transaction changed. + + + + + Represents a media disk source of a product or a patch. + + + + + Creates a new media disk. + + + + + + + + Gets or sets the disk id of the media disk. + + + + + Gets or sets the volume label of the media disk. + + + + + Gets or sets the disk prompt of the media disk. + + + + + The Patch object represents a unique instance of a patch that has been + registered or applied. + + + + + Enumerates patch installations based on certain criteria. + + PatchCode (GUID) of the patch to be enumerated. Only + instances of patches within the scope of the context specified by the + and parameters will be + enumerated. This parameter may be set to null to enumerate all patches in the specified + context. + ProductCode (GUID) product whose patches are to be + enumerated. If non-null, patch enumeration is restricted to instances of this product + within the specified context. If null, the patches for all products under the specified + context are enumerated. + Specifies a security identifier (SID) that restricts the context + of enumeration. A SID value other than s-1-1-0 is considered a user SID and restricts + enumeration to the current user or any user in the system. The special SID string + s-1-1-0 (Everyone) specifies enumeration across all users in the system. This parameter + can be set to null to restrict the enumeration scope to the current user. When + must be null. + Specifies the user context. + The of patches to return. +

+ Win32 MSI APIs: + MsiEnumPatchesEx +

+
+ + + Creates a new object for accessing information about a patch installation on the current system. + + Patch code (GUID) of the patch. + ProductCode (GUID) the patch has been applied to. + This parameter may be null for patches that are registered only and not yet + applied to any product. +

+ All available user contexts will be queried. +

+
+ + + Creates a new object for accessing information about a patch installation on the current system. + + Registered patch code (GUID) of the patch. + ProductCode (GUID) the patch has been applied to. + This parameter may be null for patches that are registered only and not yet + applied to any product. + The specific user, when working in a user context. This + parameter may be null to indicate the current user. The parameter must be null + when working in a machine context. + The user context. The calling process must have administrative + privileges to get information for a product installed for a user other than the + current user. +

+ If the is null, the Patch object may + only be used to read and update the patch's SourceList information. +

+
+ + + Enumerates all patch installations on the system. + + Enumeration of patch objects. +

+ Win32 MSI API: + MsiEnumPatches +

+
+ + + Gets the patch code (GUID) of the patch. + + + + + Gets the ProductCode (GUID) of the product. + + + + + Gets a value indicating whether this patch is currently installed. + + + + + Gets a value indicating whether this patch is marked as obsolte. + + + + + Gets a value indicating whether this patch is present but has been + superseded by a more recent installed patch. + + + + + Gets the installation state of this instance of the patch. + + An unknown patch was requested + The installer configuration data is corrupt + + + + Gets the cached patch file that the product uses. + + + + + Gets the set of patch transforms that the last patch + installation applied to the product. + +

+ This value may not be available for per-user, non-managed applications + if the user is not logged on. +

+
+ + + Gets the date and time when the patch is applied to the product. + + + + + True patch is marked as possible to uninstall from the product. + +

+ Even if this property is true, the installer can still block the + uninstallation if this patch is required by another patch that + cannot be uninstalled. +

+
+ + + Get the registered display name for the patch. + + + + + Gets the registered support information URL for the patch. + + + + + Gets information about a specific patch installation. + + The property being retrieved; see remarks for valid properties. + The property value, or an empty string if the property is not set for the patch. + An unknown patch or property was requested + The installer configuration data is corrupt +

+ Win32 MSI APIs: + MsiGetPatchInfo, + MsiGetPatchInfoEx +

+
+ + + Represents a unique instance of a product that + is either advertised, installed or unknown. + + + + + Gets the set of all products with a specified upgrade code. This method lists the + currently installed and advertised products that have the specified UpgradeCode + property in their Property table. + + Upgrade code of related products + Enumeration of product codes +

+ Win32 MSI API: + MsiEnumRelatedProducts +

+
+ + + Enumerates product installations based on certain criteria. + + ProductCode (GUID) of the product instances to be enumerated. Only + instances of products within the scope of the context specified by the + and parameters will be + enumerated. This parameter may be set to null to enumerate all products in the specified + context. + Specifies a security identifier (SID) that restricts the context + of enumeration. A SID value other than s-1-1-0 is considered a user SID and restricts + enumeration to the current user or any user in the system. The special SID string + s-1-1-0 (Everyone) specifies enumeration across all users in the system. This parameter + can be set to null to restrict the enumeration scope to the current user. When + is set to the machine context only, + must be null. + Specifies the user context. + An enumeration of product objects for enumerated product instances. +

+ Win32 MSI API: + MsiEnumProductsEx +

+
+ + + Creates a new object for accessing information about a product installation on the current system. + + ProductCode (GUID) of the product. +

+ All available user contexts will be queried. +

+
+ + + Creates a new object for accessing information about a product installation on the current system. + + ProductCode (GUID) of the product. + The specific user, when working in a user context. This + parameter may be null to indicate the current user. The parameter must be null + when working in a machine context. + The user context. The calling process must have administrative + privileges to get information for a product installed for a user other than the + current user. + + + + Gets the installed state for a product feature. + + The feature being queried; identifier from the + Feature table + Installation state of the feature for the product instance: either + , , + or . +

+ Win32 MSI APIs: + MsiQueryFeatureState, + MsiQueryFeatureStateEx +

+
+ + + Gets the installed state for a product component. + + The component being queried; GUID of the component + as found in the ComponentId column of the Component table. + Installation state of the component for the product instance: either + or . +

+ Win32 MSI API: + MsiQueryComponentState +

+
+ + + Obtains and stores the user information and product ID from an installation wizard. + +

+ This method is typically called by an application during the first run of the application. The application + first gets the or . + If those properties are missing, the application calls CollectUserInfo. + CollectUserInfo opens the product's installation package and invokes a wizard sequence that collects + user information. Upon completion of the sequence, user information is registered. Since this API requires + an authored user interface, the user interface level should be set to full by calling + as . +

+ The CollectUserInfo method invokes a FirstRun dialog from the product installation database. +

+ Win32 MSI API: + MsiCollectUserInfo +

+
+ + + Some products might write some invalid/nonstandard version strings to the registry. + This method tries to get the best data it can. + + Version string retrieved from the registry. + Version object, or null if the version string is completely invalid. + + + + Enumerates all product installations on the system. + + An enumeration of product objects. +

+ Win32 MSI API: + MsiEnumProducts, +

+
+ + + Gets the set of published features for the product. + + Enumeration of published features for the product. + The installer configuration data is corrupt +

+ Because features are not ordered, any new feature has an arbitrary index, meaning + this property can return features in any order. +

+ Win32 MSI API: + MsiEnumFeatures +

+
+ + + Gets the ProductCode (GUID) of the product. + + + + + Gets a value indicating whether this product is installed on the current system. + + + + + Gets a value indicating whether this product is advertised on the current system. + + + + + Checks whether the product is installed with elevated privileges. An application is called + a "managed application" if elevated (system) privileges are used to install the application. + + True if the product is elevated; false otherwise +

+ Note that this property does not take into account policies such as AlwaysInstallElevated, + but verifies that the local system owns the product's registry data. +

+
+ + + Gets the source list of this product installation. + + + + + The support link. + + + + + The support telephone. + + + + + Date and time the product was installed. + + + + + The installed product name. + + + + + The installation location. + + + + + The installation source. + + + + + The local cached package. + + + + + The publisher. + + + + + URL about information. + + + + + The URL update information. + + + + + The product version. + + + + + The product identifier. + +

+ For more information, see + ProductID +

+
+ + + The company that is registered to use the product. + + + + + The owner who is registered to use the product. + + + + + Transforms. + + + + + Product language. + + + + + Human readable product name. + + + + + True if the product is advertised per-machine; + false if it is per-user or not advertised. + + + + + Identifier of the package that a product is installed from. + + + + + Version of the advertised product. + + + + + Primary icon for the package. + + + + + Name of the installation package for the advertised product. + + + + + True if the advertised product can be serviced by + non-administrators without elevation. + + + + + Gets information about an installation of a product. + + Name of the property being retrieved. + An unknown product or property was requested + The installer configuration data is corrupt +

+ Win32 MSI APIs: + MsiGetProductInfo, + MsiGetProductInfoEx +

+
+ + + The Record object is a container for holding and transferring a variable number of values. + Fields within the record are numerically indexed and can contain strings, integers, streams, + and null values. Record fields are indexed starting with 1. Field 0 is a special format field. + +

+ Most methods on the Record class have overloads that allow using either a number + or a name to designate a field. However note that field names only exist when the + Record is directly returned from a query on a database. For other records, attempting + to access a field by name will result in an InvalidOperationException. +

+
+ + + Creates a new record object with the requested number of fields. + + Required number of fields, which may be 0. + The maximum number of fields in a record is limited to 65535. +

+ The Record object should be d after use. + 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. +

+ Win32 MSI API: + MsiCreateRecord +

+
+ + + Creates a new record object, providing values for an arbitrary number of fields. + + The values of the record fields. The parameters should be of type Int16, Int32 or String +

+ The Record object should be d after use. + 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. +

+ Win32 MSI API: + MsiCreateRecord +

+
+ + + Creates a new Record object from an integer record handle. + +

+ This method is only provided for interop purposes. A Record object + should normally be obtained by calling + other methods. +

The handle will be closed when this object is disposed or finalized.

+

+ Integer record handle + true to close the handle when this object is disposed or finalized +
+ + + Sets all fields in a record to null. + +

+ Win32 MSI API: + MsiRecordClearData +

+
+ + + Reports whether a record field is null. + + Specifies the field to check. + True if the field is null, false otherwise. + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordIsNull +

+
+ + + Reports whether a record field is null. + + Specifies the field to check. + True if the field is null, false otherwise. + The field name does not match any + of the named fields in the Record. + + + + Gets the length of a record field. The count does not include the terminating null. + + The field is less than 0 or greater than the + number of fields in the Record. +

+ The returned data size is 0 if the field is null, non-existent, + or an internal object pointer. The method also returns 0 if the handle is not a valid + Record handle. +

+ If the data is in integer format, the property returns 2 or 4. +

+ If the data is in string format, the property returns the character count + (not including the NULL terminator). +

+ If the data is in stream format, the property returns the byte count. +

+ Win32 MSI API: + MsiRecordDataSize +

+
+ + + Gets the length of a record field. The count does not include the terminating null. + + Specifies the field to check. + The field name does not match any + of the named fields in the Record. +

The returned data size is 0 if the field is null, non-existent, + or an internal object pointer. The method also returns 0 if the handle is not a valid + Record handle. +

+ If the data is in integer format, the property returns 2 or 4. +

+ If the data is in string format, the property returns the character count + (not including the NULL terminator). +

+ If the data is in stream format, the property returns the byte count. +

+
+ + + Gets a field value as an integer. + + Specifies the field to retrieve. + Integer value of the field, or 0 if the field is null. + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordGetInteger +

+ +
+ + + Gets a field value as an integer. + + Specifies the field to retrieve. + Integer value of the field, or 0 if the field is null. + The field name does not match any + of the named fields in the Record. + + + + + Gets a field value as an integer. + + Specifies the field to retrieve. + Integer value of the field, or null if the field is null. + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordGetInteger +

+ +
+ + + Gets a field value as an integer. + + Specifies the field to retrieve. + Integer value of the field, or null if the field is null. + The field name does not match any + of the named fields in the Record. + + + + + Sets the value of a field to an integer. + + Specifies the field to set. + new value of the field + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordSetInteger +

+ +
+ + + Sets the value of a field to an integer. + + Specifies the field to set. + new value of the field + The field name does not match any + of the named fields in the Record. + + + + + Sets the value of a field to a nullable integer. + + Specifies the field to set. + new value of the field + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordSetInteger +

+ +
+ + + Sets the value of a field to a nullable integer. + + Specifies the field to set. + new value of the field + The field name does not match any + of the named fields in the Record. + + + + + Gets a field value as a string. + + Specifies the field to retrieve. + String value of the field, or an empty string if the field is null. + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordGetString +

+
+ + + Gets a field value as a string. + + Specifies the field to retrieve. + String value of the field, or an empty string if the field is null. + The field name does not match any + of the named fields in the Record. + + + + Sets the value of a field to a string. + + Specifies the field to set. + new value of the field + The field is less than 0 or greater than the + number of fields in the Record. +

+ Win32 MSI API: + MsiRecordSetString +

+
+ + + Sets the value of a field to a string. + + Specifies the field to set. + new value of the field + The field name does not match any + of the named fields in the Record. + + + + Reads a record stream field into a file. + + Specifies the field of the Record to get. + Specifies the path to the file to contain the stream. + The field is less than 0 or greater than the + number of fields in the Record. + Attempt to extract a storage from a database open + in read-write mode, or from a database without an associated file path +

+ This method is capable of directly extracting substorages. To do so, first select both the + `Name` and `Data` column of the `_Storages` table, then get the stream of the `Data` field. + However, substorages may only be extracted from a database that is open in read-only mode. +

+ Win32 MSI API: + MsiRecordReadStream +

+
+ + + Reads a record stream field into a file. + + Specifies the field of the Record to get. + Specifies the path to the file to contain the stream. + The field name does not match any + of the named fields in the Record. + Attempt to extract a storage from a database open + in read-write mode, or from a database without an associated file path +

+ This method is capable of directly extracting substorages. To do so, first select both the + `Name` and `Data` column of the `_Storages` table, then get the stream of the `Data` field. + However, substorages may only be extracted from a database that is open in read-only mode. +

+
+ + + Gets a record stream field. + + Specifies the field of the Record to get. + A Stream that reads the field data. + The field is less than 0 or greater than the + number of fields in the Record. +

+ This method is not capable of reading substorages. To extract a substorage, + use . +

+ Win32 MSI API: + MsiRecordReadStream +

+
+ + + Gets a record stream field. + + Specifies the field of the Record to get. + A Stream that reads the field data. + The field name does not match any + of the named fields in the Record. +

+ This method is not capable of reading substorages. To extract a substorage, + use . +

+
+ + + Sets a record stream field from a file. Stream data cannot be inserted into temporary fields. + + Specifies the field of the Record to set. + Specifies the path to the file containing the stream. + The field is less than 0 or greater than the + number of fields in the Record. +

+ The contents of the specified file are read into a stream object. The stream persists if + the Record is inserted into the Database and the Database is committed. +

+ To reset the stream to its beginning you must pass in null for filePath. + Do not pass an empty string, "", to reset the stream. +

+ Setting a stream with this method is more efficient than setting a field to a + FileStream object. +

+ Win32 MSI API: + MsiRecordsetStream +

+
+ + + Sets a record stream field from a file. Stream data cannot be inserted into temporary fields. + + Specifies the field name of the Record to set. + Specifies the path to the file containing the stream. + The field name does not match any + of the named fields in the Record. +

+ The contents of the specified file are read into a stream object. The stream persists if + the Record is inserted into the Database and the Database is committed. + To reset the stream to its beginning you must pass in null for filePath. + Do not pass an empty string, "", to reset the stream. +

+ Setting a stream with this method is more efficient than setting a field to a + FileStream object. +

+
+ + + Sets a record stream field from a Stream object. Stream data cannot be inserted into temporary fields. + + Specifies the field of the Record to set. + Specifies the stream data. + The field is less than 0 or greater than the + number of fields in the Record. +

+ The stream persists if the Record is inserted into the Database and the Database is committed. +

+ Win32 MSI API: + MsiRecordsetStream +

+
+ + + Sets a record stream field from a Stream object. Stream data cannot be inserted into temporary fields. + + Specifies the field name of the Record to set. + Specifies the stream data. + The field name does not match any + of the named fields in the Record. +

+ The stream persists if the Record is inserted into the Database and the Database is committed. +

+
+ + + Gets a formatted string representation of the Record. + + A formatted string representation of the Record. +

+ If field 0 of the Record is set to a nonempty string, it is used to format the data in the Record. +

+ Win32 MSI API: + MsiFormatRecord +

+ + +
+ + + Gets a formatted string representation of the Record, optionally using a Session to format properties. + + an optional Session instance that will be used to lookup any + properties in the Record's format string + A formatted string representation of the Record. +

+ If field 0 of the Record is set to a nonempty string, it is used to format the data in the Record. +

+ Win32 MSI API: + MsiFormatRecord +

+ + +
+ + + Gets a formatted string representation of the Record. + + String to be used to format the data in the Record, + instead of the Record's format string. + A formatted string representation of the Record. +

+ Win32 MSI API: + MsiFormatRecord +

+
+ + + Gets a formatted string representation of the Record, optionally using a Session to format properties. + + String to be used to format the data in the Record, + instead of the Record's format string. + an optional Session instance that will be used to lookup any + properties in the Record's format string + A formatted string representation of the Record. +

+ Win32 MSI API: + MsiFormatRecord +

+ + +
+ + + IsFormatStringInvalid is set from several View methods that invalidate the FormatString + and used to determine behavior during Record.ToString(). + + + + + Gets the number of fields in a record. + +

+ Win32 MSI API: + MsiRecordGetFieldCount +

+
+ + + Gets or sets field 0 of the Record, which is the format string. + + + + + Gets or sets a record field value. + + Specifies the name of the field of the Record to get or set. + The name does not match any known field of the Record. +

+ When getting a field, the type of the object returned depends on the type of the Record field. + The object will be one of: Int16, Int32, String, Stream, or null. +

+ When setting a field, the type of the object provided will be converted to match the View + query that returned the record, or if Record was not returned from a view then the type of + the object provided will determine the type of the Record field. The object should be one of: + Int16, Int32, String, Stream, or null. +

+
+ + + Gets or sets a record field value. + + Specifies the field of the Record to get or set. + The field is less than 0 or greater than the + number of fields in the Record. +

+ Record fields are indexed starting with 1. Field 0 is a special format field. +

+ When getting a field, the type of the object returned depends on the type of the Record field. + The object will be one of: Int16, Int32, String, Stream, or null. If the Record was returned + from a View, the type will match that of the field from the View query. Otherwise, the type + will match the type of the last value set for the field. +

+ When setting a field, the type of the object provided will be converted to match the View + query that returned the Record, or if Record was not returned from a View then the type of + the object provided will determine the type of the Record field. The object should be one of: + Int16, Int32, String, Stream, or null. +

+ The type-specific getters and setters are slightly more efficient than this property, since + they don't have to do the extra work to infer the value's type every time. +

+ Win32 MSI APIs: + MsiRecordGetInteger, + MsiRecordGetString, + MsiRecordSetInteger, + MsiRecordSetString +

+
+ + + Assigns ID numbers to the MSI APIs that are remotable. + +

+ This enumeration MUST stay in sync with the + unmanaged equivalent in RemoteMsiSession.h! +

+
+ + + Defines the signature of the native function + in SfxCA.dll that implements the remoting call. + + + + + Redirects native API calls to either the normal NativeMethods class + or to out-of-proc calls via the remoting channel. + + + + + Checks if the current process is using remoting to access the + MSI session and database APIs. + + + + + Sets a delegate that is used to make remote API calls. + +

+ The implementation of this delegate is provided by the + custom action host DLL. +

+
+ + + The Session object controls the installation process. It opens the + install database, which contains the installation tables and data. + +

+ This object is associated with a standard set of action functions, + each performing particular operations on data from one or more tables. Additional + custom actions may be added for particular product installations. The basic engine + function is a sequencer that fetches sequential records from a designated sequence + table, evaluates any specified condition expression, and executes the designated + action. Actions not recognized by the engine are deferred to the UI handler object + for processing, usually dialog box sequences. +

+ Note that only one Session object can be opened by a single process. +

+
+ + + Creates a new Session object from an integer session handle. + + Integer session handle + true to close the handle when this object is disposed or finalized +

+ This method is only provided for interop purposes. A Session object + should normally be obtained by calling + or . +

+
+ + + Performs any enabled logging operations and defers execution to the UI handler + object associated with the engine. + + Type of message to be processed + Contains message-specific fields + A message-dependent return value + the Session or Record handle is invalid + an invalid message kind is specified + the user exited the installation + the message-handler failed for an unknown reason +

+ Logging may be selectively enabled for the various message types. + See the method. +

+ If record field 0 contains a formatting string, it is used to format the data in + the other fields. Else if the message is an error, warning, or user message, an attempt + is made to find a message template in the Error table for the current database using the + error number found in field 1 of the record for message types and return values. +

+ The parameter may also include message-box flags from + the following enumerations: System.Windows.Forms.MessageBoxButtons, + System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxIcon. These + flags can be combined with the InstallMessage with a bitwise OR. +

+ Note, this method never returns Cancel or Error values. Instead, appropriate + exceptions are thrown in those cases. +

+ Win32 MSI API: + MsiProcessMessage +

+
+ + + Writes a message to the log, if logging is enabled. + + The line to be written to the log +

+ Win32 MSI API: + MsiProcessMessage +

+
+ + + Writes a formatted message to the log, if logging is enabled. + + The line to be written to the log, containing 0 or more format specifiers + An array containing 0 or more objects to be formatted +

+ Win32 MSI API: + MsiProcessMessage +

+
+ + + Evaluates a logical expression containing symbols and values. + + conditional expression + The result of the condition evaluation + the Session handle is invalid + the condition is null or empty + the conditional expression is invalid +

+ Win32 MSI API: + MsiEvaluateCondition +

+
+ + + Evaluates a logical expression containing symbols and values, specifying a default + value to be returned in case the condition is empty. + + conditional expression + value to return if the condition is empty + The result of the condition evaluation + the Session handle is invalid + the conditional expression is invalid +

+ Win32 MSI API: + MsiEvaluateCondition +

+
+ + + Formats a string containing installer properties. + + A format string containing property tokens + A formatted string containing property data + the Record handle is invalid +

+ Win32 MSI API: + MsiFormatRecord +

+
+ + + Returns a formatted string from record data. + + Record object containing a template and data to be formatted. + The template string must be set in field 0 followed by any referenced data parameters. + A formatted string containing the record data + the Record handle is invalid +

+ Win32 MSI API: + MsiFormatRecord +

+
+ + + Returns a formatted string from record data using a specified format. + + Record object containing a template and data to be formatted + Format string to be used instead of field 0 of the Record + A formatted string containing the record data + the Record handle is invalid +

+ Win32 MSI API: + MsiFormatRecord +

+
+ + + Retrieves product properties (not session properties) from the product database. + + Value of the property, or an empty string if the property is not set. +

+ Note this is not the correct method for getting ordinary session properties. For that, + see the indexer on the Session class. +

+ Win32 MSI API: + MsiGetProductProperty +

+
+ + + Checks to see if sufficient disk space is present for the current installation. + + True if there is sufficient disk space; false otherwise. +

+ Win32 MSI API: + MsiVerifyDiskSpace +

+
+ + + Gets the total disk space per drive required for the installation. + + A list of InstallCost structures, specifying the cost for each drive +

+ Win32 MSI API: + MsiEnumComponentCosts +

+
+ + + Gets the designated mode flag for the current install session. + + The type of mode to be checked. + The value of the designated mode flag. + the Session handle is invalid + an invalid mode flag was specified +

+ Note that only the following run modes are available to read from + a deferred custom action: + + + + +

+ Win32 MSI API: + MsiGetMode +

+
+ + + Sets the designated mode flag for the current install session. + + The type of mode to be set. + The desired value of the mode. + the Session handle is invalid + an invalid mode flag was specified + the mode cannot not be set +

+ Win32 MSI API: + MsiSetMode +

+
+ + + Gets the full path to the designated folder on the source media or server image. + + the folder was not found in the Directory table + the Session handle is invalid +

+ Win32 MSI API: + MsiGetSourcePath +

+
+ + + Gets the full path to the designated folder on the installation target drive. + + the folder was not found in the Directory table + the Session handle is invalid +

+ Win32 MSI API: + MsiGetTargetPath +

+
+ + + Sets the full path to the designated folder on the installation target drive. + + the folder was not found in the Directory table + the Session handle is invalid +

+ Setting the target path of a directory changes the path specification for the directory + in the in-memory Directory table. Also, the path specifications of all other path objects + in the table that are either subordinate or equivalent to the changed path are updated + to reflect the change. The properties for each affected path are also updated. +

+ If an error occurs in this function, all updated paths and properties revert to + their previous values. Therefore, it is safe to treat errors returned by this function + as non-fatal. +

+ Do not attempt to configure the target path if the components using those paths + are already installed for the current user or for a different user. Check the + ProductState property before setting the target path to determine if the product + containing this component is installed. +

+ Win32 MSI API: + MsiSetTargetPath +

+
+ + + Sets the install level for the current installation to a specified value and + recalculates the Select and Installed states for all features in the Feature + table. Also sets the Action state of each component in the Component table based + on the new level. + + New install level + the Session handle is invalid +

+ The SetInstallLevel method sets the following: + The installation level for the current installation to a specified value + The Select and Installed states for all features in the Feature table + The Action state of each component in the Component table, based on the new level + + If 0 or a negative number is passed in the ilnstallLevel parameter, + the current installation level does not change, but all features are still + updated based on the current installation level. +

+ Win32 MSI API: + MsiSetInstallLevel +

+
+ + + Executes a built-in action, custom action, or user-interface wizard action. + + Name of the action to execute. Case-sensitive. + the Session handle is invalid + the user exited the installation +

+ The DoAction method executes the action that corresponds to the name supplied. If the + name is not recognized by the installer as a built-in action or as a custom action in + the CustomAction table, the name is passed to the user-interface handler object, which + can invoke a function or a dialog box. If a null action name is supplied, the installer + uses the upper-case value of the ACTION property as the action to perform. If no property + value is defined, the default action is performed, defined as "INSTALL". +

+ Actions that update the system, such as the InstallFiles and WriteRegistryValues + actions, cannot be run by calling MsiDoAction. The exception to this rule is if DoAction + is called from a custom action that is scheduled in the InstallExecuteSequence table + between the InstallInitialize and InstallFinalize actions. Actions that do not update the + system, such as AppSearch or CostInitialize, can be called. +

+ Win32 MSI API: + MsiDoAction +

+
+ + + Executes a built-in action, custom action, or user-interface wizard action. + + Name of the action to execute. Case-sensitive. + Optional data to be passed to a deferred custom action. + the Session handle is invalid + the user exited the installation +

+ The DoAction method executes the action that corresponds to the name supplied. If the + name is not recognized by the installer as a built-in action or as a custom action in + the CustomAction table, the name is passed to the user-interface handler object, which + can invoke a function or a dialog box. If a null action name is supplied, the installer + uses the upper-case value of the ACTION property as the action to perform. If no property + value is defined, the default action is performed, defined as "INSTALL". +

+ Actions that update the system, such as the InstallFiles and WriteRegistryValues + actions, cannot be run by calling MsiDoAction. The exception to this rule is if DoAction + is called from a custom action that is scheduled in the InstallExecuteSequence table + between the InstallInitialize and InstallFinalize actions. Actions that do not update the + system, such as AppSearch or CostInitialize, can be called. +

+ If the called action is a deferred, rollback, or commit custom action, then the supplied + will be available via the + property of that custom action's session. +

+ Win32 MSI API: + MsiDoAction +

+
+ + + Executes an action sequence described in the specified table. + + Name of the table containing the action sequence. + the Session handle is invalid + the user exited the installation +

+ This method queries the specified table, ordering the actions by the numbers in the Sequence column. + For each row retrieved, an action is executed, provided that any supplied condition expression does + not evaluate to FALSE. +

+ An action sequence containing any actions that update the system, such as the InstallFiles and + WriteRegistryValues actions, cannot be run by calling DoActionSequence. The exception to this rule is if + DoActionSequence is called from a custom action that is scheduled in the InstallExecuteSequence table + between the InstallInitialize and InstallFinalize actions. Actions that do not update the system, such + as AppSearch or CostInitialize, can be called. +

+ Win32 MSI API: + MsiSequence +

+
+ + + Implements formatting for data. + + Type of format object to get. + The the current instance, if is the same type + as the current instance; otherwise, null. + + + + Closes the session handle. Also closes the active database handle, if it is open. + After closing a handle, further method calls may throw an . + + 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, only unmanaged resources will be disposed. + + + + Throws an exception if the custom action is not able to access immedate session details. + + + + + Gets the Database for the install session. + + the Session handle is invalid + the Database cannot be accessed +

+ Normally there is no need to close this Database object. The same object can be + used throughout the lifetime of the Session, and it will be closed when the Session + is closed. +

+ Win32 MSI API: + MsiGetActiveDatabase +

+
+ + + Gets the numeric language ID used by the current install session. + +

+ Win32 MSI API: + MsiGetLanguage +

+
+ + + Gets or sets the string value of a named installer property, as maintained by the + Session object in the in-memory Property table, or, if it is prefixed with a percent + sign (%), the value of a system environment variable for the current process. + + the Session handle is invalid +

+ Win32 MSI APIs: + MsiGetProperty, + MsiSetProperty +

+
+ + + Gets an accessor for components in the current session. + + + + + Gets an accessor for features in the current session. + + + + + Gets custom action data for the session that was supplied by the caller. + + + + + + Gets the (short) list of properties that are available from non-immediate custom actions. + + + + + Holds information about the target of a shortcut file. + + + + + Tests whether two shortcut targets have the same product code, feature, and/or component code. + + The first shortcut target to compare. + The second shortcut target to compare. + True if all parts of the targets are the same, else false. + + + + Tests whether two shortcut targets have the same product code, feature, and/or component code. + + The first shortcut target to compare. + The second shortcut target to compare. + True if any parts of the targets are different, else false. + + + + Tests whether two shortcut targets have the same product code, feature, and/or component code. + + The shortcut target to compare to the current object. + True if is a shortcut target and all parts of the targets are the same, else false. + + + + Generates a hash code using all parts of the shortcut target. + + An integer suitable for hashing the shortcut target. + + + + Gets the target product code of the shortcut, or null if not available. + + + + + Gets the name of the target feature of the shortcut, or null if not available. + + + + + Gets the target component code of the shortcut, or null if not available. + + + + + A list of sources for an installed product or patch. + + + + + Adds a network or URL source to the source list of the installed product. + + Path to the source to be added. This parameter is + expected to contain only the path without the filename. +

+ If this method is called with a new source, the installer adds the source + to the end of the source list. +

+ If this method is called with a source already existing in the source + list, it has no effect. +

+ Win32 MSI APIs: + MsiSourceListAddSource, + MsiSourceListAddSourceEx +

+ +
+ + + Adds or reorders a network or URL source for the product or patch. + + Path to the source to be added. This parameter is + expected to contain only the path without the filename. + Specifies the priority order in which the source + will be inserted +

+ If this method is called with a new source and + is set to 0, the installer adds the source to the end of the source list. +

+ If this method is called with a source already existing in the source + list and is set to 0, the installer retains the + source's existing index. +

+ If the method is called with an existing source in the source list + and is set to a non-zero value, the source is + removed from its current location in the list and inserted at the position + specified by Index, before any source that already exists at that position. +

+ If the method is called with a new source and Index is set to a + non-zero value, the source is inserted at the position specified by + , before any source that already exists at + that position. The index value for all sources in the list after the + index specified by Index are updated to ensure unique index values and + the pre-existing order is guaranteed to remain unchanged. +

+ If is greater than the number of sources + in the list, the source is placed at the end of the list with an index + value one larger than any existing source. +

+ Win32 MSI API: + MsiSourceListAddSourceEx +

+
+ + + Clears sources of all types: network, url, and media. + +

+ Win32 MSI API: + MsiSourceListClearAll +

+
+ + + Removes all network sources from the list. URL sources are not affected. + +

+ Win32 MSI API: + MsiSourceListClearAllEx +

+
+ + + Removes all URL sources from the list. Network sources are not affected. + +

+ Win32 MSI API: + MsiSourceListClearAllEx +

+
+ + + Checks if the specified source exists in the list. + + case-insensitive source to look for + true if the source exists in the list, false otherwise + + + + Copies the network and URL sources from this list into an array. + + destination array to be filed + offset into the destination array where copying begins + + + + Removes a network or URL source. + +

+ Win32 MSI API: + MsiSourceListClearSource +

+
+ + + Enumerates the network and URL sources in the source list of the patch or product installation. + +

+ Win32 MSI API: + MsiSourceListEnumSources +

+
+ + + Forces the installer to search the source list for a valid + source the next time a source is required. For example, when the + installer performs an installation or reinstallation, or when it + requires the path for a component that is set to run from source. + +

+ Win32 MSI APIs: + MsiSourceListForceResolution, + MsiSourceListForceResolutionEx +

+
+ + + Gets the list of disks registered for the media source of + the patch or product installation. + + + + + Gets the number of network and URL sources in the list. + + + + + Gets a boolean value indicating whether the list is read-only. + A SourceList is never read-only. + + read-only status of the list + + + + Gets or sets the path relative to the root of the installation media. + + + + + Gets or sets the prompt template that is used when prompting the user + for installation media. + + + + + Gets or sets the most recently used source location for the product. + + + + + Gets or sets the name of the Windows Installer package or patch package + on the source. + + + + + Gets the type of the last-used source. + +

+

    +
  • "n" = network location
  • +
  • "u" = URL location
  • +
  • "m" = media location
  • +
  • (empty string) = no last used source
  • +
+

+
+ + + Gets or sets source list information properties of a product or patch installation. + + The source list information property name. + An unknown product, patch, or property was requested +

+ Win32 MSI API: + MsiSourceListGetInfo +

+
+ + + A list of source media for an installed product or patch. + + + + + Adds or updates a disk of the media source for the product or patch. + +

+ Win32 MSI API: + MsiSourceListAddMediaDisk +

+
+ + + Removes all source media from the list. + +

+ Win32 MSI API: + MsiSourceListClearAllEx +

+
+ + + Checks if the specified media disk id exists in the list. + + disk id of the media to look for + true if the media exists in the list, false otherwise + + + + Copies the source media info from this list into an array. + + destination array to be filed + offset into the destination array where copying begins + + + + Removes a specified disk from the set of registered disks. + + ID of the disk to remove +

+ Win32 MSI API: + MsiSourceListClearMediaDisk +

+
+ + + Enumerates the source media in the source list of the patch or product installation. + +

+ Win32 MSI API: + MsiSourceListEnumMediaDisks +

+
+ + + Gets the number of source media in the list. + + + + + Gets a boolean value indicating whether the list is read-only. + A SourceMediaList is never read-only. + + read-only status of the list + + + + Provides access to summary information of a Windows Installer database. + + + + + Gets a SummaryInfo object that can be used to examine, update, and add + properties to the summary information stream of a package or transform. + + Path to the package (database) or transform + True to reserve resources for writing summary information properties. + the package does not exist or could not be read + the package is an invalid format +

+ The SummaryInfo object should be d after use. + 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. +

+ Win32 MSI API: + MsiGetSummaryInformation +

+
+ + + Formats and writes the previously stored properties into the standard summary information stream. + + The stream cannot be successfully written. +

+ This method may only be called once after all the property values have been set. Properties may + still be read after the stream is written. +

+ Win32 MSI API: + MsiSummaryInfoPersist +

+
+ + Gets or sets the Title summary information property. +

+ The Title summary information property briefly describes the type of installer package. Phrases + such as "Installation Database" or "Transform" or "Patch" may be used for this property. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Subject summary information property. +

+ The Subject summary information property conveys to a file browser the product that can be installed using + the logic and data in this installer database. For example, the value of the summary property for + Microsoft Office 97 would be "Microsoft Office 97 Professional". This value is typically set from the + installer property ProductName. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Author summary information property. +

+ The Author summary information property conveys to a file browser the manufacturer of the installation + database. This value is typically set from the installer property Manufacturer. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Keywords summary information property. +

+ The Keywords summary information property is used by file browsers to hold keywords that permit the + database file to be found in a keyword search. The set of keywords typically includes "Installer" as + well as product-specific keywords, and may be localized. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Comments summary information property. +

+ The Comments summary information property conveys the general purpose of the installer database. By convention, + the value for this summary property is set to the following: +

+ "This installer database contains the logic and data required to install <product name>." +

+ where <product name> is the name of the product being installed. In general the value for this summary + property only changes in the product name, nothing else. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Template summary information property. +

+ The Template summary information propery indicates the platform and language versions supported by the database. +

+ The syntax of the Template Summary property information is: + [platform property][,platform property][,...];[language id][,language id][,...] +

+ For example, the following are all valid values for the Template Summary property: + + Intel;1033 + Intel64;1033 + ;1033 + ; + Intel ;1033,2046 + Intel64;1033,2046 + Intel;0 + +

+ If this is a 64-bit Windows Installer, enter Intel64 in the Template summary information property. Note that an + installation package cannot have both the Intel and Intel64 properties set. +

+ If the current platform does not match one of the platforms specified then the installer will not process the + package. Not specifying a platform implies that the package is platform-independent. +

+ Entering 0 in the language ID field of the Template summary information property, or leaving this field empty, + indicates that the package is language neutral. +

+ There are variations of this property depending on whether it is in a source installer database or a transform. +

+ Source Installer Database - Only one language can be specified in a source installer database. Merge Modules are + the only packages that may have multiple languages. For more information, see Multiple Language Merge Modules. +

+ Transform - In a transform file, only one language may be specified. The specified platform and language determine + whether a transform can be applied to a particular database. The platform property and the language property can + be left blank if no transform restriction relies on them to validate the transform. +

+ This summary property is REQUIRED. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the LastSavedBy summary information property. +

+ The installer sets the Last Saved By summary information property to the value of the LogonUser property during + an administrative installation. The installer never uses this property and a user never needs to modify it. + Developers of a database editing tool may use this property to track the last person to modify the database. + This property should be left set to null in a final shipping database. +

+ In a transform, this summary property contains the platform and language ID(s) that a database should have + after it has been transformed. The property specifies to what the Template should be set in the new database. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the RevisionNumber summary information property. +

+ The Revision Number summary information property contains the package code for the installer package. The + package code is a unique identifier of the installer package. +

+ The Revision Number summary information property of a patch package specifies the GUID patch code for + the patch. This is followed by a list of patch code GUIDs for obsolete patches that are removed when this + patch is applied. The patch codes are concatenated with no delimiters separating GUIDs in the list. +

+ The Revision Number summary information property of a transform package lists the product code GUIDs + and version of the new and original products and the upgrade code GUID. The list is separated with + semicolons as follows. +

+ Original-Product-Code Original-Product-Version ; New-Product Code New-Product-Version; Upgrade-Code +

+ This summary property is REQUIRED. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the CreatingApp summary information property. +

+ The CreatingApp summary information property conveys which application created the installer database. + In general the value for this summary property is the name of the software used to author this database. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the LastPrintTime summary information property. +

+ The LastPrintTime summary information property can be set to the date and time during an administrative + installation to record when the administrative image was created. For non-administrative installations + this property is the same as the CreateTime summary information property. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the CreateTime summary information property. +

+ The CreateTime summary information property conveys when the installer database was created. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the LastSaveTime summary information property. +

+ The LastSaveTime summary information property conveys when the last time the installer database was + modified. Each time a user changes an installation the value for this summary property is updated to + the current system time/date at the time the installer database was saved. Initially the value for + this summary property is set to null to indicate that no changes have yet been made. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the CodePage summary information property. +

+ The Codepage summary information property is the numeric value of the ANSI code page used for any + strings that are stored in the summary information. Note that this is not the same code page for + strings in the installation database. The Codepage summary information property is used to translate + the strings in the summary information into Unicode when calling the Unicode API functions. The + Codepage summary information property must be set before any string properties are set in the + summary information. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the PageCount summary information property. +

+ For an installation package, the PageCount summary information property contains the minimum + installer version required. For Windows Installer version 1.0, this property must be set to the + integer 100. For 64-bit Windows Installer Packages, this property must be set to the integer 200. +

+ For a transform package, the PageCount summary information property contains minimum installer + version required to process the transform. Set to the greater of the two PageCount summary information + property values belonging to the databases used to generate the transform. +

+ The PageCount summary information property is set to null in patch packages. +

+ This summary property is REQUIRED. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the WordCount summary information property. +

+ The WordCount summary information property indicates the type of source file image. If this property is + not present, it defaults to 0. Note that this property is stored in place of the standard Count property. +

+ This property is a bit field. New bits may be added in the future. At present the following bits are + available: + + Bit 0: 0 = long file names, 1 = short file names + Bit 1: 0 = source is uncompressed, 1 = source is compressed + Bit 2: 0 = source is original media, 1 = source is administrative installation + [MSI 4.0] Bit 3: 0 = elevated privileges can be required to install, 1 = elevated privileges are not required to install + +

+ These are combined to give the WordCount summary information property one of the following values + indicating a type of source file image: + + 0 - Original source using long file names. Matches tree in Directory table. + 1 - Original source using short file names. Matches tree in Directory table. + 2 - Compressed source files using long file names. Matches cabinets and files in the Media table. + 3 - Compressed source files using short file names. Matches cabinets and files in the Media table. + 4 - Administrative image using long file names. Matches tree in Directory table. + 5 - Administrative image using short file names. Matches tree in Directory table. + +

+ Note that if the package is marked as compressed (bit 1 is set), the installer only installs files + located at the root of the source. In this case, even files marked as uncompressed in the File table must + be located at the root to be installed. To specify a source image that has both a cabinet file (compressed + files) and uncompressed files that match the tree in the Directory table, mark the package as uncompressed + by leaving bit 1 unset (value=0) in the WordCount summary information property and set + (value=16384) in the Attributes column of the File table + for each file in the cabinet. +

+ For a patch package, the WordCount summary information property specifies the patch engine that was used + to create the patch files. The default value is 1 and indicates that MSPATCH was used to create the patch + A value of "2" means that the patch is using smaller, optimized, files available only with Windows Installer + version 1.2 or later. A patch with a WordCount of "2" fails immediately if used with a Windows Installer + version earlier than 1.2. A patch with a WordCount of "3" fails immediately if used with a Windows Installer + version earlier than 2.0. +

+ This summary property is REQUIRED. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the CharacterCount summary information property. +

+ The CharacterCount summary information property is only used in transforms. This part of the summary + information stream is divided into two 16-bit words. The upper word contains the transform validation + flags. The lower word contains the transform error condition flags. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + Gets or sets the Security summary information property. +

+ The Security summary information property conveys whether the package should be opened as read-only. The database + editing tool should not modify a read-only enforced database and should issue a warning at attempts to modify a + read-only recommended database. The following values of this property are applicable to Windows Installer files: + + 0 - no restriction + 2 - read only recommended + 4 - read only enforced + +

+ This property should be set to read-only recommended (2) for an installation database and to read-only + enforced (4) for a transform or patch. +

+ Win32 MSI APIs: + MsiSummaryInfoGetProperty, + MsiSummaryInfoSetProperty +

+
+ + + Contains information about all the tables in a Windows Installer database. + + + + + Adds a new table to the database. + + information about the table to be added + a table with the same name already exists in the database + + + + Removes all tables (and all data) from the database. + + + + + Checks if the database contains a table with the given name. + + case-sensitive name of the table to search for + True if the table exists, false otherwise. + + + + Copies the table information from this collection into an array. + + destination array to be filed + offset into the destination array where copying begins + + + + Removes a table from the database. + + case-sensitive name of the table to be removed + true if the table was removed, false if the table did not exist + + + + Enumerates the tables in the database. + + + + + Gets the number of tables in the database. + + + + + Gets a boolean value indicating whether the collection is read-only. + A TableCollection is read-only when the database is read-only. + + read-only status of the collection + + + + Gets information about a given table. + + case-sensitive name of the table + information about the requested table, or null if the table does not exist in the database + + + + Defines a table in an installation database. + + + + + Creates a table definition. + + Name of the table. + Columns in the table. + The primary keys of the table. + + + + Gets a string representation of the table. + + The name of the table. + + + + Gets the name of the table. + + + + + Gets information about the columns in this table. + +

+ This property queries the database every time it is called, + to ensure the returned values are up-to-date. For best performance, + hold onto the returned collection if using it more than once. +

+
+ + + Gets the names of the columns that are primary keys of the table. + + + + + Gets an SQL CREATE string that can be used to create the table. + + + + + Gets an SQL INSERT string that can be used insert a new record into the table. + +

+ The values are expressed as question-mark tokens, to be supplied by the record. +

+
+ + + Gets an SQL SELECT string that can be used to select all columns of the table. + +

+ The columns are listed explicitly in the SELECT string, as opposed to using "SELECT *". +

+
+ + + Contains specific information about an error encountered by the , + , or methods of the + class. + + + + + Gets the type of validation error encountered. + + + + + Gets the column containing the error, or null if the error applies to the whole row. + + + + + A View represents a result set obtained when processing a query using the + method of a + . Before any data can be transferred, + the query must be executed using the method, passing to + it all replaceable parameters designated within the SQL query string. + + + + + Executes a SQL View query and supplies any required parameters. The query uses the + question mark token to represent parameters as described in SQL Syntax. The values of + these parameters are passed in as the corresponding fields of a parameter record. + + Optional Record that supplies the parameters. This + Record contains values to replace the parameter tokens in the SQL query. + the View could not be executed + the View handle is invalid +

+ Win32 MSI API: + MsiViewExecute +

+
+ + + Executes a SQL View query. + + the View could not be executed + the View handle is invalid +

+ Win32 MSI API: + MsiViewExecute +

+
+ + + Fetches the next sequential record from the view, or null if there are no more records. + + the View is not in an active state + the View handle is invalid +

+ The Record object should be d after use. + 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. +

+ Win32 MSI API: + MsiViewFetch +

+
+ + + Updates a fetched Record. + + specifies the modify mode + the Record to modify + the modification failed, + or a validation was requested and the data did not pass + the View handle is invalid +

+ You can update or delete a record immediately after inserting, or seeking provided you + have NOT modified the 0th field of the inserted or sought record. +

+ To execute any SQL statement, a View must be created. However, a View that does not + create a result set, such as CREATE TABLE, or INSERT INTO, cannot be used with any of + the Modify methods to update tables though the view. +

+ You cannot fetch a record containing binary data from one database and then use + that record to insert the data into another database. To move binary data from one database + to another, you should export the data to a file and then import it into the new database + using a query and the . This ensures that each database has + its own copy of the binary data. +

+ Note that custom actions can only add, modify, or remove temporary rows, columns, + or tables from a database. Custom actions cannot modify persistent data in a database, + such as data that is a part of the database stored on disk. +

+ Win32 MSI API: + MsiViewModify +

+ + + + + + + + + + + + + +
+ + + Refreshes the data in a Record. + + the Record to be refreshed + the refresh failed + the View handle is invalid +

+ The Record must have been obtained by calling . Fails with + a deleted Record. Works only with read-write Records. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Inserts a Record into the view. + + the Record to be inserted + the insertion failed + the View handle is invalid +

+ Fails if a row with the same primary keys exists. Fails with a read-only database. + This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Updates the View with new data from the Record. + + the new data + the update failed + the View handle is invalid +

+ Only non-primary keys can be updated. The Record must have been obtained by calling + . Fails with a deleted Record. Works only with read-write Records. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Updates or inserts a Record into the View. + + the Record to be assigned + the assignment failed + the View handle is invalid +

+ Updates record if the primary keys match an existing row and inserts if they do not match. + Fails with a read-only database. This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Updates or deletes and inserts a Record into the View. + + the Record to be replaced + the replacement failed + the View handle is invalid +

+ The Record must have been obtained by calling . Updates record if the + primary keys are unchanged. Deletes old row and inserts new if primary keys have changed. + Fails with a read-only database. This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Deletes a Record from the View. + + the Record to be deleted + the deletion failed + the View handle is invalid +

+ The Record must have been obtained by calling . Fails if the row has been + deleted. Works only with read-write records. This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Inserts a Record into the View. The inserted data is not persistent. + + the Record to be inserted + the insertion failed + the View handle is invalid +

+ Fails if a row with the same primary key exists. Works only with read-write records. + This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Refreshes the information in the supplied record without changing the position + in the result set and without affecting subsequent fetch operations. + + the Record to be filled with the result of the seek + the seek failed + the View handle is invalid +

+ After seeking, the Record may then be used for subsequent Update, Delete, and Refresh + operations. All primary key columns of the table must be in the query and the Record must + have at least as many fields as the query. Seek cannot be used with multi-table queries. + This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Inserts or validates a record. + + the Record to be merged + true if the record was inserted or validated, false if there is an existing + record with the same primary keys that is not identical + the merge failed (for a reason other than invalid data) + the View handle is invalid +

+ Works only with read-write records. This method cannot be used with a + View containing joins. +

+ See for more remarks. +

+ Win32 MSI API: + MsiViewModify +

+
+ + + Validates a record, returning information about any errors. + + the Record to be validated + null if the record was validated; if there is an existing record with + the same primary keys that has conflicting data then error information is returned + the validation failed (for a reason other than invalid data) + the View handle is invalid +

+ The Record must have been obtained by calling . + Works with read-write and read-only records. This method cannot be used + with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI APIs: + MsiViewModify, + MsiViewGetError +

+
+ + + Validates a new record, returning information about any errors. + + the Record to be validated + null if the record was validated; if there is an existing + record with the same primary keys then error information is returned + the validation failed (for a reason other than invalid data) + the View handle is invalid +

+ Checks for duplicate keys. The Record must have been obtained by + calling . Works with read-write and read-only records. + This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI APIs: + MsiViewModify, + MsiViewGetError +

+
+ + + Validates fields of a fetched or new record, returning information about any errors. + Can validate one or more fields of an incomplete record. + + the Record to be validated + null if the record was validated; if there is an existing record with + the same primary keys that has conflicting data then error information is returned + the validation failed (for a reason other than invalid data) + the View handle is invalid +

+ Works with read-write and read-only records. This method cannot be used with + a View containing joins. +

+ See for more remarks. +

+ Win32 MSI APIs: + MsiViewModify, + MsiViewGetError +

+
+ + + Validates a record that will be deleted later, returning information about any errors. + + the Record to be validated + null if the record is safe to delete; if another row refers to + the primary keys of this row then error information is returned + the validation failed (for a reason other than invalid data) + the View handle is invalid +

+ Validation does not check for the existence of the primary keys of this row in properties + or strings. Does not check if a column is a foreign key to multiple tables. Works with + read-write and read-only records. This method cannot be used with a View containing joins. +

+ See for more remarks. +

+ Win32 MSI APIs: + MsiViewModify, + MsiViewGetError +

+
+ + + Enumerates over the Records retrieved by the View. + + An enumerator of Record objects. + The View was not d before attempting the enumeration. +

+ Each Record object should be d after use. + 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. + However, note that it is not necessary to complete the enumeration just + for the purpose of closing handles, because Records are fetched lazily + on each step of the enumeration. +

+ Win32 MSI API: + MsiViewFetch +

+
+ + + Gets the Database on which this View was opened. + + + + + Gets the SQL query string used to open this View. + + + + + Gets the set of tables that were included in the SQL query for this View. + + + + + Gets the set of columns that were included in the query for this View, + or null if this view is not a SELECT query. + + the View is not in an active state + the View handle is invalid +

+ Win32 MSI API: + MsiViewGetColumnInfo +

+
+ + + Distribution specific strings. + + + + + News URL for the distribution. + + + + + Short product name for the distribution. + + + + + Support URL for the distribution. + + + + + Telemetry URL format for the distribution. + + +
+
diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/BalBaseBootstrapperApplication.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/BalBaseBootstrapperApplication.h new file mode 100644 index 0000000000000000000000000000000000000000..7b6618cee7b30754eaf714d819e7d898e763104f --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/BalBaseBootstrapperApplication.h @@ -0,0 +1,700 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +//------------------------------------------------------------------------------------------------- + +#include +#include + +#include "IBootstrapperEngine.h" +#include "IBootstrapperApplication.h" + +#include "balutil.h" +#include "balretry.h" + +class CBalBaseBootstrapperApplication : public IBootstrapperApplication +{ +public: // IUnknown + virtual STDMETHODIMP QueryInterface( + __in REFIID riid, + __out LPVOID *ppvObject + ) + { + if (!ppvObject) + { + return E_INVALIDARG; + } + + *ppvObject = NULL; + + if (::IsEqualIID(__uuidof(IBootstrapperApplication), riid)) + { + *ppvObject = static_cast(this); + } + else if (::IsEqualIID(IID_IUnknown, riid)) + { + *ppvObject = static_cast(this); + } + else // no interface for requested iid + { + return E_NOINTERFACE; + } + + AddRef(); + return S_OK; + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return ::InterlockedIncrement(&this->m_cReferences); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + long l = ::InterlockedDecrement(&this->m_cReferences); + if (0 < l) + { + return l; + } + + delete this; + return 0; + } + +public: // IBootstrapperApplication + virtual STDMETHODIMP OnStartup() + { + return S_OK; + } + + virtual STDMETHODIMP_(int) OnShutdown() + { + return IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnSystemShutdown( + __in DWORD dwEndSession, + __in int /*nRecommendation*/ + ) + { + // Allow requests to shut down when critical or not applying. + if (ENDSESSION_CRITICAL & dwEndSession || !m_fApplying) + { + return IDOK; + } + + return IDCANCEL; + } + + virtual STDMETHODIMP_(int) OnDetectBegin( + __in BOOL /*fInstalled*/, + __in DWORD /*cPackages*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectForwardCompatibleBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in_z LPCWSTR /*wzBundleTag*/, + __in BOOL /*fPerMachine*/, + __in DWORD64 /*dw64Version*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(int) OnDetectUpdateBegin( + __in_z LPCWSTR /*wzUpdateLocation*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(int) OnDetectUpdate( + __in_z LPCWSTR /*wzUpdateLocation*/, + __in DWORD64 /*dw64Size*/, + __in DWORD64 /*dw64Version*/, + __in_z LPCWSTR /*wzTitle*/, + __in_z LPCWSTR /*wzSummary*/, + __in_z LPCWSTR /*wzContentType*/, + __in_z LPCWSTR /*wzContent*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(void) OnDetectUpdateComplete( + __in HRESULT /*hrStatus*/, + __in_z_opt LPCWSTR /*wzUpdateLocation*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnDetectCompatiblePackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageId*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectPriorBundle( + __in_z LPCWSTR /*wzBundleId*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectPackageBegin( + __in_z LPCWSTR /*wzPackageId*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectRelatedBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in_z LPCWSTR /*wzBundleTag*/, + __in BOOL /*fPerMachine*/, + __in DWORD64 /*dw64Version*/, + __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectRelatedMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzProductCode*/, + __in BOOL /*fPerMachine*/, + __in DWORD64 /*dw64Version*/, + __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectTargetMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzProductCode*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*patchState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDetectMsiFeature( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzFeatureId*/, + __in BOOTSTRAPPER_FEATURE_STATE /*state*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(void) OnDetectPackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*state*/ + ) + { + } + + virtual STDMETHODIMP_(void) OnDetectComplete( + __in HRESULT /*hrStatus*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnPlanBegin( + __in DWORD /*cPackages*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnPlanRelatedBundle( + __in_z LPCWSTR /*wzBundleId*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnPlanPackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnPlanCompatiblePackage( + __in_z LPCWSTR /*wzPackageId*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnPlanTargetMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzProductCode*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnPlanMsiFeature( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzFeatureId*/, + __inout BOOTSTRAPPER_FEATURE_STATE* /*pRequestedState*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(void) OnPlanPackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*state*/, + __in BOOTSTRAPPER_REQUEST_STATE /*requested*/, + __in BOOTSTRAPPER_ACTION_STATE /*execute*/, + __in BOOTSTRAPPER_ACTION_STATE /*rollback*/ + ) + { + } + + virtual STDMETHODIMP_(void) OnPlanComplete( + __in HRESULT /*hrStatus*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnApplyBegin() + { + m_fApplying = TRUE; + + m_dwProgressPercentage = 0; + m_dwOverallProgressPercentage = 0; + + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + // DEPRECATED: this will be merged with OnApplyBegin in wix4. + virtual STDMETHODIMP_(void) OnApplyPhaseCount( + __in DWORD /*dwPhaseCount*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnElevate() + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnRegisterBegin() + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(void) OnRegisterComplete( + __in HRESULT /*hrStatus*/ + ) + { + return; + } + + virtual STDMETHODIMP_(void) OnUnregisterBegin() + { + return; + } + + virtual STDMETHODIMP_(void) OnUnregisterComplete( + __in HRESULT /*hrStatus*/ + ) + { + return; + } + + virtual STDMETHODIMP_(int) OnApplyComplete( + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_APPLY_RESTART restart + ) + { + m_fApplying = FALSE; + return BOOTSTRAPPER_APPLY_RESTART_REQUIRED == restart ? IDRESTART : CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnCacheBegin() + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnCachePackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*cCachePayloads*/, + __in DWORD64 /*dw64PackageCacheSize*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnCacheAcquireBegin( + __in_z LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in BOOTSTRAPPER_CACHE_OPERATION /*operation*/, + __in_z LPCWSTR /*wzSource*/ + ) + { + BalRetryStartPackage(BALRETRY_TYPE_CACHE, wzPackageOrContainerId, wzPayloadId); + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnCacheAcquireProgress( + __in_z LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in DWORD64 /*dw64Progress*/, + __in DWORD64 /*dw64Total*/, + __in DWORD /*dwOverallPercentage*/ + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + // Send progress even though we don't update the numbers to at least give the caller an opportunity + // to cancel. + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded cache progress."); + } + + LExit: + return FAILED(hr) ? IDERROR : CheckCanceled() ? IDCANCEL : nResult; + } + + virtual STDMETHODIMP_(int) OnCacheAcquireComplete( + __in_z LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in HRESULT hrStatus, + __in int nRecommendation + ) + { + int nResult = CheckCanceled() ? IDCANCEL : BalRetryEndPackage(BALRETRY_TYPE_CACHE, wzPackageOrContainerId, wzPayloadId, hrStatus); + return IDNOACTION == nResult ? nRecommendation : nResult; + } + + virtual STDMETHODIMP_(int) OnCacheVerifyBegin( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzPayloadId*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnCacheVerifyComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzPayloadId*/, + __in HRESULT /*hrStatus*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(int) OnCachePackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(void) OnCacheComplete( + __in HRESULT /*hrStatus*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnExecuteBegin( + __in DWORD /*cExecutingPackages*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnExecutePackageBegin( + __in_z LPCWSTR wzPackageId, + __in BOOL fExecute + ) + { + // Only track retry on execution (not rollback). + if (fExecute) + { + BalRetryStartPackage(BALRETRY_TYPE_EXECUTE, wzPackageId, NULL); + } + + m_fRollingBack = !fExecute; + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnExecutePatchTarget( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzTargetProductCode*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnError( + __in BOOTSTRAPPER_ERROR_TYPE errorType, + __in_z LPCWSTR wzPackageId, + __in DWORD dwCode, + __in_z LPCWSTR /*wzError*/, + __in DWORD /*dwUIHint*/, + __in DWORD /*cData*/, + __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, + __in int nRecommendation + ) + { + BalRetryErrorOccurred(wzPackageId, dwCode); + + if (BOOTSTRAPPER_DISPLAY_FULL == m_display) + { + if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType ||BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) + { + nRecommendation = IDTRYAGAIN; + } + } + + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(int) OnProgress( + __in DWORD dwProgressPercentage, + __in DWORD dwOverallProgressPercentage + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + m_dwProgressPercentage = dwProgressPercentage; + m_dwOverallProgressPercentage = dwOverallProgressPercentage; + + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded overall progress."); + } + + LExit: + return FAILED(hr) ? IDERROR : CheckCanceled() ? IDCANCEL : nResult; + } + + virtual STDMETHODIMP_(int) OnDownloadPayloadBegin( + __in_z LPCWSTR /*wzPayloadId*/, + __in_z LPCWSTR /*wzPayloadFileName*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnDownloadPayloadComplete( + __in_z LPCWSTR /*wzPayloadId*/, + __in_z LPCWSTR /*wzPayloadFileName*/, + __in HRESULT /*hrStatus*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnExecuteProgress( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*dwProgressPercentage*/, + __in DWORD /*dwOverallProgressPercentage*/ + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + // Send progress even though we don't update the numbers to at least give the caller an opportunity + // to cancel. + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded execute progress."); + } + + LExit: + return FAILED(hr) ? IDERROR : CheckCanceled() ? IDCANCEL : nResult; + } + + virtual STDMETHODIMP_(int) OnExecuteMsiMessage( + __in_z LPCWSTR /*wzPackageId*/, + __in INSTALLMESSAGE /*mt*/, + __in UINT /*uiFlags*/, + __in_z LPCWSTR /*wzMessage*/, + __in DWORD /*cData*/, + __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, + __in int nRecommendation + ) + { + return CheckCanceled() ? IDCANCEL : nRecommendation; + } + + virtual STDMETHODIMP_(int) OnExecuteFilesInUse( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*cFiles*/, + __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnExecutePackageComplete( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrExitCode, + __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, + __in int nRecommendation + ) + { + int nResult = CheckCanceled() ? IDCANCEL : CheckCanceled() ? IDCANCEL : BalRetryEndPackage(BALRETRY_TYPE_EXECUTE, wzPackageId, NULL, hrExitCode); + return IDNOACTION == nResult ? nRecommendation : nResult; + } + + virtual STDMETHODIMP_(void) OnExecuteComplete( + __in HRESULT /*hrStatus*/ + ) + { + } + + virtual STDMETHODIMP_(int) OnResolveSource( + __in_z LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in_z LPCWSTR /*wzLocalSource*/, + __in_z_opt LPCWSTR /*wzDownloadSource*/ + ) + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(int) OnLaunchApprovedExeBegin() + { + return CheckCanceled() ? IDCANCEL : IDNOACTION; + } + + virtual STDMETHODIMP_(void) OnLaunchApprovedExeComplete( + __in HRESULT /*hrStatus*/, + __in DWORD /*dwProcessId*/ + ) + { + } + +protected: + // + // PromptCancel - prompts the user to close (if not forced). + // + virtual BOOL PromptCancel( + __in HWND hWnd, + __in BOOL fForceCancel, + __in_z LPCWSTR wzMessage, + __in_z LPCWSTR wzCaption + ) + { + ::EnterCriticalSection(&m_csCanceled); + + // Only prompt the user to close if we have not canceled already. + if (!m_fCanceled) + { + if (fForceCancel) + { + m_fCanceled = TRUE; + } + else + { + m_fCanceled = (IDYES == ::MessageBoxW(hWnd, wzMessage, wzCaption, MB_YESNO | MB_ICONEXCLAMATION)); + } + } + + ::LeaveCriticalSection(&m_csCanceled); + + return m_fCanceled; + } + + // + // CheckCanceled - waits if the cancel dialog is up and checks to see if the user canceled the operation. + // + BOOL CheckCanceled() + { + ::EnterCriticalSection(&m_csCanceled); + ::LeaveCriticalSection(&m_csCanceled); + return m_fRollingBack ? FALSE : m_fCanceled; + } + + BOOL IsRollingBack() + { + return m_fRollingBack; + } + + BOOL IsCanceled() + { + return m_fCanceled; + } + + CBalBaseBootstrapperApplication( + __in IBootstrapperEngine* pEngine, + __in const BOOTSTRAPPER_COMMAND* pCommand, + __in DWORD dwRetryCount = 0, + __in DWORD dwRetryTimeout = 1000 + ) + { + m_cReferences = 1; + m_display = pCommand->display; + m_restart = pCommand->restart; + + pEngine->AddRef(); + m_pEngine = pEngine; + + ::InitializeCriticalSection(&m_csCanceled); + m_fCanceled = FALSE; + m_fApplying = FALSE; + m_fRollingBack = FALSE; + + BalRetryInitialize(dwRetryCount, dwRetryTimeout); + } + + virtual ~CBalBaseBootstrapperApplication() + { + BalRetryUninitialize(); + ::DeleteCriticalSection(&m_csCanceled); + + ReleaseNullObject(m_pEngine); + } + +private: + long m_cReferences; + BOOTSTRAPPER_DISPLAY m_display; + BOOTSTRAPPER_RESTART m_restart; + IBootstrapperEngine* m_pEngine; + + CRITICAL_SECTION m_csCanceled; + BOOL m_fCanceled; + BOOL m_fApplying; + BOOL m_fRollingBack; + + DWORD m_dwProgressPercentage; + DWORD m_dwOverallProgressPercentage; +}; diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperApplication.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperApplication.h new file mode 100644 index 0000000000000000000000000000000000000000..672ca9413bf4177d039e7c4196fb96c6d986d015 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperApplication.h @@ -0,0 +1,767 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// IBootstrapperApplication implemented by a bootstrapper application and used by bootstrapper engine. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +enum BOOTSTRAPPER_DISPLAY +{ + BOOTSTRAPPER_DISPLAY_UNKNOWN, + BOOTSTRAPPER_DISPLAY_EMBEDDED, + BOOTSTRAPPER_DISPLAY_NONE, + BOOTSTRAPPER_DISPLAY_PASSIVE, + BOOTSTRAPPER_DISPLAY_FULL, +}; + + +enum BOOTSTRAPPER_RESTART +{ + BOOTSTRAPPER_RESTART_UNKNOWN, + BOOTSTRAPPER_RESTART_NEVER, + BOOTSTRAPPER_RESTART_PROMPT, + BOOTSTRAPPER_RESTART_AUTOMATIC, + BOOTSTRAPPER_RESTART_ALWAYS, +}; + + +enum BOOTSTRAPPER_RESUME_TYPE +{ + BOOTSTRAPPER_RESUME_TYPE_NONE, + BOOTSTRAPPER_RESUME_TYPE_INVALID, // resume information is present but invalid + BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, // relaunched after an unexpected interruption + BOOTSTRAPPER_RESUME_TYPE_REBOOT_PENDING, // reboot has not taken place yet + BOOTSTRAPPER_RESUME_TYPE_REBOOT, // relaunched after reboot + BOOTSTRAPPER_RESUME_TYPE_SUSPEND, // relaunched after suspend + BOOTSTRAPPER_RESUME_TYPE_ARP, // launched from ARP +}; + + +enum BOOTSTRAPPER_ERROR_TYPE +{ + BOOTSTRAPPER_ERROR_TYPE_ELEVATE, // error occurred trying to elevate. + BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, // error came from windows installer. + BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, // error came from an exe package. + BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER, // error occurred trying to authenticate with HTTP server. + BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY, // error occurred trying to authenticate with HTTP proxy. + BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply. +}; + + +enum BOOTSTRAPPER_RELATED_OPERATION +{ + BOOTSTRAPPER_RELATED_OPERATION_NONE, + BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE, + BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE, + BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE, + BOOTSTRAPPER_RELATED_OPERATION_REMOVE, + BOOTSTRAPPER_RELATED_OPERATION_INSTALL, + BOOTSTRAPPER_RELATED_OPERATION_REPAIR, +}; + + +enum BOOTSTRAPPER_CACHE_OPERATION +{ + BOOTSTRAPPER_CACHE_OPERATION_COPY, + BOOTSTRAPPER_CACHE_OPERATION_DOWNLOAD, + BOOTSTRAPPER_CACHE_OPERATION_EXTRACT, +}; + + +enum BOOTSTRAPPER_APPLY_RESTART +{ + BOOTSTRAPPER_APPLY_RESTART_NONE, + BOOTSTRAPPER_APPLY_RESTART_REQUIRED, + BOOTSTRAPPER_APPLY_RESTART_INITIATED, +}; + + +enum BOOTSTRAPPER_RELATION_TYPE +{ + BOOTSTRAPPER_RELATION_NONE, + BOOTSTRAPPER_RELATION_DETECT, + BOOTSTRAPPER_RELATION_UPGRADE, + BOOTSTRAPPER_RELATION_ADDON, + BOOTSTRAPPER_RELATION_PATCH, + BOOTSTRAPPER_RELATION_DEPENDENT, + BOOTSTRAPPER_RELATION_UPDATE, +}; + + +struct BOOTSTRAPPER_COMMAND +{ + BOOTSTRAPPER_ACTION action; + BOOTSTRAPPER_DISPLAY display; + BOOTSTRAPPER_RESTART restart; + + LPWSTR wzCommandLine; + int nCmdShow; + + BOOTSTRAPPER_RESUME_TYPE resumeType; + HWND hwndSplashScreen; + + // If this was run from a related bundle, specifies the relation type + BOOTSTRAPPER_RELATION_TYPE relationType; + BOOL fPassthrough; + + LPWSTR wzLayoutDirectory; +}; + + +DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-AB06-099D717C67FE") +{ + // OnStartup - called when the engine is ready for the bootstrapper application to start. + // + STDMETHOD(OnStartup)() = 0; + + // OnShutdown - called after the bootstrapper application quits the engine. + // + // Return: + // IDRESTART instructs the engine to restart. The engine will not launch again after the machine + // is rebooted. Ignored if reboot was already initiated by OnExecutePackageComplete(). + // + // IDRELOAD_BOOTSTRAPPER instructs the engine to unload the bootstrapper application and restart + // the engine which will load the bootstrapper application again. Typically + // used to switch from a native bootstrapper application to a managed one. + // + // All other return codes are ignored. + STDMETHOD_(int, OnShutdown)() = 0; + + // OnSystemShutdown - called when the operating system is instructed to shutdown the machine. + // + // Return: + // IDCANCEL instructs the engine to block the shutdown of the machine. + // + // All other return codes allow the shutdown to commence. + STDMETHOD_(int, OnSystemShutdown)( + __in DWORD dwEndSession, + __in int nRecommendation + ) = 0; + + // OnDetectBegin - called when the engine begins detection. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectBegin)( + __in BOOL fInstalled, + __in DWORD cPackages + ) = 0; + + // OnDetectForwardCompatibleBundle - called when the engine detects a forward compatible bundle. + // + // Return: + // IDOK instructs the engine to use the forward compatible bundle. + // + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to not use the forward compatible bundle. + STDMETHOD_(int, OnDetectForwardCompatibleBundle)( + __in_z LPCWSTR wzBundleId, + __in BOOTSTRAPPER_RELATION_TYPE relationType, + __in_z LPCWSTR wzBundleTag, + __in BOOL fPerMachine, + __in DWORD64 dw64Version, + __in int nRecommendation + ) = 0; + + // OnDetectUpdateBegin - called when the engine begins detection for bundle update. + // + // Return: + // IDOK instructs the engine to attempt update detection. + // + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to skip update detection. + STDMETHOD_(int, OnDetectUpdateBegin)( + __in_z LPCWSTR wzUpdateLocation, + __in int nRecommendation + ) = 0; + + // OnDetectUpdate - called when the engine has an update candidate for bundle update. + // + // Return: + // IDOK instructs the engine to stop further update detection. + // + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to process further update candidates. + STDMETHOD_(int, OnDetectUpdate)( + __in_z_opt LPCWSTR wzUpdateLocation, + __in DWORD64 dw64Size, + __in DWORD64 dw64Version, + __in_z_opt LPCWSTR wzTitle, + __in_z_opt LPCWSTR wzSummary, + __in_z_opt LPCWSTR wzContentType, + __in_z_opt LPCWSTR wzContent, + __in int nRecommendation + ) = 0; + + // OnDetectUpdateComplete - called when the engine completes detection for bundle update. + // + // Remarks: + // wzUpdateLocation is null if no update was available. + STDMETHOD_(void, OnDetectUpdateComplete)( + __in HRESULT hrStatus, + __in_z_opt LPCWSTR wzUpdateLocation + ) = 0; + + // OnDetectRelatedBundle - called when the engine detects a related bundle. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectRelatedBundle)( + __in_z LPCWSTR wzBundleId, + __in BOOTSTRAPPER_RELATION_TYPE relationType, + __in_z LPCWSTR wzBundleTag, + __in BOOL fPerMachine, + __in DWORD64 dw64Version, + __in BOOTSTRAPPER_RELATED_OPERATION operation + ) = 0; + + // OnDetectPackageBegin - called when the engine begins detecting a package. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectPackageBegin)( + __in_z LPCWSTR wzPackageId + ) = 0; + + // OnDetectCompatiblePackage - called when the engine detects that a package is not installed but a newer package using the same provider key is. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectCompatiblePackage)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzCompatiblePackageId + ) = 0; + + // OnDetectRelatedMsiPackage - called when the engine begins detects a related package. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectRelatedMsiPackage)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzProductCode, + __in BOOL fPerMachine, + __in DWORD64 dw64Version, + __in BOOTSTRAPPER_RELATED_OPERATION operation + ) = 0; + + // OnDetectTargetMsiPackage - called when the engine detects a target MSI package for + // an MSP package. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectTargetMsiPackage)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzProductCode, + __in BOOTSTRAPPER_PACKAGE_STATE patchState + ) = 0; + + // OnDetectMsiFeature - called when the engine detects a feature in an MSI package. + // + // Return: + // IDCANCEL instructs the engine to stop detection. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnDetectMsiFeature)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzFeatureId, + __in BOOTSTRAPPER_FEATURE_STATE state + ) = 0; + + // OnDetectPackageComplete - called after the engine detects a package. + // + STDMETHOD_(void, OnDetectPackageComplete)( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrStatus, + __in BOOTSTRAPPER_PACKAGE_STATE state + ) = 0; + + // OnDetectPackageComplete - called after the engine completes detection. + // + STDMETHOD_(void, OnDetectComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnPlanBegin - called when the engine begins planning. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanBegin)( + __in DWORD cPackages + ) = 0; + + // OnPlanRelatedBundle - called when the engine begins planning a related bundle. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanRelatedBundle)( + __in_z LPCWSTR wzBundleId, + __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState + ) = 0; + + // OnPlanPackageBegin - called when the engine begins planning a package. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanPackageBegin)( + __in_z LPCWSTR wzPackageId, + __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState + ) = 0; + + // OnPlanCompatiblePackage - called when the engine plans a newer, compatible package using the same provider key. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanCompatiblePackage)( + __in_z LPCWSTR wzPackageId, + __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState + ) = 0; + + // OnPlanTargetMsiPackage - called when the engine plans an MSP package + // to apply to an MSI package. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanTargetMsiPackage)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzProductCode, + __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState + ) = 0; + + // OnPlanMsiFeature - called when the engine plans a feature in an + // MSI package. + // + // Return: + // IDCANCEL instructs the engine to stop planning. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnPlanMsiFeature)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzFeatureId, + __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState + ) = 0; + + // OnPlanPackageComplete - called after the engine plans a package. + // + STDMETHOD_(void, OnPlanPackageComplete)( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrStatus, + __in BOOTSTRAPPER_PACKAGE_STATE state, + __in BOOTSTRAPPER_REQUEST_STATE requested, + __in BOOTSTRAPPER_ACTION_STATE execute, + __in BOOTSTRAPPER_ACTION_STATE rollback + ) = 0; + + // OnPlanComplete - called when the engine completes planning. + // + STDMETHOD_(void, OnPlanComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnApplyBegin - called when the engine begins applying the plan. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnApplyBegin)() = 0; + + // DEPRECATED: In wix4, this will be merged with OnApplyBegin. + // OnApplyPhaseCount - called right after OnApplyBegin. + // + STDMETHOD_(void, OnApplyPhaseCount)( + __in DWORD dwPhaseCount + ) = 0; + + // OnElevate - called before the engine displays an elevation prompt. + // Will only happen once per execution of the engine. + // + // Return: + // IDCANCEL instructs the engine to abort elevation and stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnElevate)() = 0; + + // OnProgress - called when the engine makes progress. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnProgress)( + __in DWORD dwProgressPercentage, + __in DWORD dwOverallPercentage + ) = 0; + + // OnError - called when the engine encounters an error. + // + // Return: + // uiFlags is a combination of valid ID* return values appropriate for + // the error. + // + // IDNOACTION instructs the engine to pass the error through to default + // handling which usually results in the apply failing. + STDMETHOD_(int, OnError)( + __in BOOTSTRAPPER_ERROR_TYPE errorType, + __in_z_opt LPCWSTR wzPackageId, + __in DWORD dwCode, + __in_z_opt LPCWSTR wzError, + __in DWORD uiFlags, + __in DWORD cData, + __in_ecount_z_opt(cData) LPCWSTR* rgwzData, + __in int nRecommendation + ) = 0; + + // OnRegisterBegin - called when the engine registers the bundle. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnRegisterBegin)() = 0; + + // OnRegisterComplete - called when the engine registration is + // complete. + // + STDMETHOD_(void, OnRegisterComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnCacheBegin - called when the engine begins caching. + // + // Return: + // IDCANCEL instructs the engine to stop caching. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnCacheBegin)() = 0; + + // OnCachePackageBegin - called when the engine begins caching + // a package. + // + // Return: + // IDCANCEL instructs the engine to stop caching. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnCachePackageBegin)( + __in_z LPCWSTR wzPackageId, + __in DWORD cCachePayloads, + __in DWORD64 dw64PackageCacheSize + ) = 0; + + // OnCacheAcquireBegin - called when the engine begins copying or + // downloading a payload to the working folder. + // + // Return: + // IDCANCEL instructs the engine to stop caching. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnCacheAcquireBegin)( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in BOOTSTRAPPER_CACHE_OPERATION operation, + __in_z LPCWSTR wzSource + ) = 0; + + // OnCacheAcquireProgress - called when the engine makes progresss copying + // or downloading a payload to the working folder. + // + // Return: + // IDCANCEL instructs the engine to stop caching. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnCacheAcquireProgress)( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in DWORD64 dw64Progress, + __in DWORD64 dw64Total, + __in DWORD dwOverallPercentage + ) = 0; + + // OnResolveSource - called when a payload or container cannot be found locally. + // + // Parameters: + // wzPayloadId will be NULL when resolving a container. + // wzDownloadSource will be NULL if the container or payload does not provide a DownloadURL. + // + // Return: + // IDRETRY instructs the engine to try the local source again. + // + // IDDOWNLOAD instructs the engine to try the download source. + // + // All other return codes result in an error. + // + // Notes: + // It is expected the BA may call IBurnCore::SetLocalSource() or IBurnCore::SetDownloadSource() + // to update the source location before returning IDRETRY or IDDOWNLOAD. + STDMETHOD_(int, OnResolveSource)( + __in_z LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in_z LPCWSTR wzLocalSource, + __in_z_opt LPCWSTR wzDownloadSource + ) = 0; + + // OnCacheAcquireComplete - called after the engine copied or downloaded + // a payload to the working folder. + // + // Return: + // IDRETRY instructs the engine to try the copy or download of the payload again. + // + // All other return codes are ignored. + STDMETHOD_(int, OnCacheAcquireComplete)( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in HRESULT hrStatus, + __in int nRecommendation + ) = 0; + + // OnCacheVerifyBegin - called when the engine begins to verify then copy + // a payload or container to the package cache folder. + // + // Return: + // IDCANCEL instructs the engine to stop caching. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnCacheVerifyBegin)( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId + ) = 0; + + // OnCacheVerifyComplete - called after the engine verifies and copies + // a payload or container to the package cache folder. + // + // Return: + // IDRETRY instructs the engine to try the verification of the payload again. + // Ignored if hrStatus is success. + // + // IDTRYAGAIN instructs the engine to acquire the payload again. Ignored if + // hrStatus is success. + // + // All other return codes are ignored. + STDMETHOD_(int, OnCacheVerifyComplete)( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in HRESULT hrStatus, + __in int nRecommendation + ) = 0; + + // OnCachePackageComplete - called after the engine attempts to copy or download all + // payloads of a package into the package cache folder. + // + // Return: + // IDIGNORE instructs the engine to ignore non-vital package failures and continue with the + // caching. Ignored if hrStatus is a success or the package is vital. + // + // IDRETRY instructs the engine to try the acquisition and verification of the package + // again. Ignored if hrStatus is a success. + // + // All other return codes are ignored. + STDMETHOD_(int, OnCachePackageComplete)( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrStatus, + __in int nRecommendation + ) = 0; + + // OnCacheComplete - called when the engine caching is complete. + // + STDMETHOD_(void, OnCacheComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnExecuteBegin - called when the engine begins executing the plan. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnExecuteBegin)( + __in DWORD cExecutingPackages + ) = 0; + + // OnExecuteBegin - called when the engine begins executing a package. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnExecutePackageBegin)( + __in_z LPCWSTR wzPackageId, + __in BOOL fExecute + ) = 0; + + // OnExecutePatchTarget - called when the engine executes one or more patches targeting + // a product. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnExecutePatchTarget)( + __in_z LPCWSTR wzPackageId, + __in_z LPCWSTR wzTargetProductCode + ) = 0; + + // OnExecuteProgress - called when the engine makes progress executing a package. + // + // Return: + // IDCANCEL instructs the engine to stop applying. + // + // IDNOACTION instructs the engine to continue. + STDMETHOD_(int, OnExecuteProgress)( + __in_z LPCWSTR wzPackageId, + __in DWORD dwProgressPercentage, + __in DWORD dwOverallPercentage + ) = 0; + + // OnExecuteMsiMessage - called when the engine receives an MSI package message. + // + // Return: + // uiFlags is a combination of valid ID* return values appropriate for + // the message. + // + // IDNOACTION instructs the engine to pass the message through to default + // handling which usually results in the execution continuing. + STDMETHOD_(int, OnExecuteMsiMessage)( + __in_z LPCWSTR wzPackageId, + __in INSTALLMESSAGE mt, + __in UINT uiFlags, + __in_z LPCWSTR wzMessage, + __in DWORD cData, + __in_ecount_z_opt(cData) LPCWSTR* rgwzData, + __in int nRecommendation + ) = 0; + + // OnExecuteFilesInUse - called when the engine encounters files in use while + // executing a package. + // + // Return: + // IDOK instructs the engine to let the Restart Manager attempt to close the + // applications to avoid a restart. + // + // IDCANCEL instructs the engine to abort the execution and start rollback. + // + // IDIGNORE instructs the engine to ignore the running applications. A restart will be + // required. + // + // IDRETRY instructs the engine to check if the applications are still running again. + // + // IDNOACTION is equivalent to ignoring the running applications. A restart will be + // required. + STDMETHOD_(int, OnExecuteFilesInUse)( + __in_z LPCWSTR wzPackageId, + __in DWORD cFiles, + __in_ecount_z(cFiles) LPCWSTR* rgwzFiles + ) = 0; + + // OnExecutePackageComplete - called when a package execution is complete. + // + // Parameters: + // restart will indicate whether this package requires a reboot or initiated the reboot already. + // + // Return: + // IDIGNORE instructs the engine to ignore non-vital package failures and continue with the + // install. Ignored if hrStatus is a success or the package is vital. + // + // IDRETRY instructs the engine to try the execution of the package again. Ignored if hrStatus + // is a success. + // + // IDRESTART instructs the engine to stop processing the chain and restart. The engine will + // launch again after the machine is restarted. + // + // IDSUSPEND instructs the engine to stop processing the chain and suspend the current state. + // + // All other return codes are ignored. + STDMETHOD_(int, OnExecutePackageComplete)( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrStatus, + __in BOOTSTRAPPER_APPLY_RESTART restart, + __in int nRecommendation + ) = 0; + + // OnExecuteComplete - called when the engine execution is complete. + // + STDMETHOD_(void, OnExecuteComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnUnregisterBegin - called when the engine unregisters the bundle. + // + STDMETHOD_(void, OnUnregisterBegin)() = 0; + + // OnUnregisterComplete - called when the engine unregistration is complete. + // + STDMETHOD_(void, OnUnregisterComplete)( + __in HRESULT hrStatus + ) = 0; + + // OnApplyComplete - called after the plan has been applied. + // + // Parameters: + // restart will indicate whether any package required a reboot or initiated the reboot already. + // + // Return: + // IDRESTART instructs the engine to restart. The engine will not launch again after the machine + // is rebooted. Ignored if reboot was already initiated by OnExecutePackageComplete(). + // + // All other return codes are ignored. + STDMETHOD_(int, OnApplyComplete)( + __in HRESULT hrStatus, + __in BOOTSTRAPPER_APPLY_RESTART restart + ) = 0; + + // OnLaunchApprovedExeBegin - called before trying to launch the preapproved executable. + // + STDMETHOD_(int, OnLaunchApprovedExeBegin)() = 0; + + + // OnLaunchApprovedExeComplete - called after trying to launch the preapproved executable. + // + // Parameters: + // dwProcessId is only valid if the operation succeeded. + // + STDMETHOD_(void, OnLaunchApprovedExeComplete)( + __in HRESULT hrStatus, + __in DWORD dwProcessId + ) = 0; +}; + + +extern "C" typedef HRESULT (WINAPI *PFN_BOOTSTRAPPER_APPLICATION_CREATE)( + __in IBootstrapperEngine* pEngine, + __in const BOOTSTRAPPER_COMMAND* pCommand, + __out IBootstrapperApplication** ppApplication + ); + +extern "C" typedef void (WINAPI *PFN_BOOTSTRAPPER_APPLICATION_DESTROY)(); diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperBAFunction.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperBAFunction.h new file mode 100644 index 0000000000000000000000000000000000000000..3dcf3baf19a90e6bf6bba7bfe192a5ddd88114c5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperBAFunction.h @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + +#include + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperEngine.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperEngine.h new file mode 100644 index 0000000000000000000000000000000000000000..27cd2c8b131347d95f19f63cc62df70b131be99b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/IBootstrapperEngine.h @@ -0,0 +1,229 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// IBoostrapperEngine implemented by engine and used by bootstrapper application. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + +#define IDERROR -1 +#define IDNOACTION 0 + +#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 + +enum BOOTSTRAPPER_ACTION +{ + BOOTSTRAPPER_ACTION_UNKNOWN, + BOOTSTRAPPER_ACTION_HELP, + BOOTSTRAPPER_ACTION_LAYOUT, + BOOTSTRAPPER_ACTION_UNINSTALL, + 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 LPWSTR wzUser, + __in_z_opt LPWSTR 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; +}; diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/aclutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/aclutil.h new file mode 100644 index 0000000000000000000000000000000000000000..ee688ec32882c3b8c52088883fdad0c599f20dc9 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/aclutil.h @@ -0,0 +1,151 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Access Control List helper functions. +// +//------------------------------------------------------------------------------------------------- + +#include +#include + +#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 + ); +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/apuputil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/apuputil.h new file mode 100644 index 0000000000000000000000000000000000000000..e197e40f199450471835e9978bb2b493c63299ba --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/apuputil.h @@ -0,0 +1,96 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Application Update helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/atomutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/atomutil.h new file mode 100644 index 0000000000000000000000000000000000000000..7f4f71e3d6c3186dd54b448dbff852be39b229e8 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/atomutil.h @@ -0,0 +1,158 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// ATOM helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balcondition.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balcondition.h new file mode 100644 index 0000000000000000000000000000000000000000..8f3a78a740d0aee2f1823b80343aed79ab4d2c38 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balcondition.h @@ -0,0 +1,69 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Bootstrapper Application Layer condition utility. +// +//------------------------------------------------------------------------------------------------- + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balinfo.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balinfo.h new file mode 100644 index 0000000000000000000000000000000000000000..dfc11382e964620b05668d4bdf1abfcf70e09ed7 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balinfo.h @@ -0,0 +1,118 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Bootstrapper Application Layer package utility. +// +//------------------------------------------------------------------------------------------------- + + +#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; +} 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balretry.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balretry.h new file mode 100644 index 0000000000000000000000000000000000000000..a91576502183d450918cc4016f7b052a376dde78 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balretry.h @@ -0,0 +1,75 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Bootstrapper Application Layer retry utility. +// +//------------------------------------------------------------------------------------------------- + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balutil.h new file mode 100644 index 0000000000000000000000000000000000000000..d047c996006a22a281bea586df8e8e143be2aabd --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/balutil.h @@ -0,0 +1,126 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Burn utility library. +// +//------------------------------------------------------------------------------------------------- + +#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; } + +#define FACILITY_WIX 500 + +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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/buffutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/buffutil.h new file mode 100644 index 0000000000000000000000000000000000000000..ae85f3067a05fa646f0ae76fb710b8b4a183dde2 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/buffutil.h @@ -0,0 +1,92 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Binary serialization helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/butil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/butil.h new file mode 100644 index 0000000000000000000000000000000000000000..c90ddd59c06a3c733e5a6794929e229e44fd8d57 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/butil.h @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for bundle helper functions. +// +//------------------------------------------------------------------------------------------------- +#pragma once + +#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 \ No newline at end of file diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabcutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabcutil.h new file mode 100644 index 0000000000000000000000000000000000000000..1797a8f00a6b0a401e19214bec956e89f136c722 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabcutil.h @@ -0,0 +1,72 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for cabinet creation helper functions. +// +//------------------------------------------------------------------------------------------------- + +#include +#include +#include + +// 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabutil.h new file mode 100644 index 0000000000000000000000000000000000000000..77920466438d00935eae8db01882e81c0881b584 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cabutil.h @@ -0,0 +1,66 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for cabinet decompression helper functions +// +//------------------------------------------------------------------------------------------------- + +#include +#include + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/certutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/certutil.h new file mode 100644 index 0000000000000000000000000000000000000000..5cd27d4aae007cd80ed856719ca64d0c70344c3e --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/certutil.h @@ -0,0 +1,76 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Certificate helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/conutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/conutil.h new file mode 100644 index 0000000000000000000000000000000000000000..0424ff97a43ab2a265377f74e582c9a3b5f4c417 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/conutil.h @@ -0,0 +1,110 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Console helper functions. +// +//------------------------------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +#define ConsoleExitOnFailure(x, c, f) if (FAILED(x)) { ConsoleWriteError(x, c, f); ExitTrace(x, f); goto LExit; } +#define ConsoleExitOnFailure1(x, c, f, s) if (FAILED(x)) { ConsoleWriteError(x, c, f, s, NULL); ExitTrace1(x, f, s); goto LExit; } +#define ConsoleExitOnFailure2(x, c, f, s, t) if (FAILED(x)) { ConsoleWriteError(x, c, f, s, t); ExitTrace2(x, f, s, t); goto LExit; } +#define ConsoleExitOnFailure3(x, c, f, s, t, u) if (FAILED(x)) { ConsoleWriteError(x, c, f, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; } + +#define ConsoleExitOnLastError(x, c, f) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f); ExitTrace(x, f); goto LExit; } } +#define ConsoleExitOnLastError1(x, c, f, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f, s, NULL); ExitTrace1(x, f, s); goto LExit; } } +#define ConsoleExitOnLastError2(x, c, f, s, t) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f, s, t); ExitTrace2(x, f, s, t); goto LExit; } } +#define ConsoleExitOnLastError3(x, c, f, s, t, u) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ConsoleWriteError(x, c, f, s, t, u); ExitTrace3(x, f, s, t, u); goto LExit; } } + +#define ConsoleExitOnNull(p, x, e, c, f) if (NULL == p) { x = e; ConsoleWriteError(x, c, f); ExitTrace(x, f); goto LExit; } +#define ConsoleExitOnNull1(p, x, e, c, f, s) if (NULL == p) { x = e; ConsoleWriteError(x, c, f, s, NULL); ExitTrace1(x, f, s); goto LExit; } +#define ConsoleExitOnNull2(p, x, e, c, f, s, t) if (NULL == p) { x = e; ConsoleWriteError(x, c, f, s, t); ExitTrace2(x, f, s, t); goto LExit; } +#define ConsoleExitOnNull3(p, x, e, c, f, s, t, u) if (NULL == p) { x = e; ConsoleWriteError(x, c, f, s, t, u); ExitTrace2(x, f, s, t, u); goto LExit; } + + +// the following macros need to go away +#define ConsoleTrace(l, f) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f); Trace(l, f); } +#define ConsoleTrace1(l, f, s) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f, s); Trace1(l, f, s); } +#define ConsoleTrace2(l, f, s, t) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f, s, t); Trace2(l, f, s, t); } +#define ConsoleTrace3(l, f, s, t, u) { ConsoleWriteLine(CONSOLE_COLOR_NORMAL, f, s, t, u); Trace3(l, f, s, t, u); } + +#define ConsoleWarning(f) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f); Trace(REPORT_STANDARD, f); } +#define ConsoleWarning1(f, s) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f, s); Trace1(REPORT_STANDARD, f, s); } +#define ConsoleWarning2(f, s, t) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f, s, t); Trace2(REPORT_STANDARD, f, s, t); } +#define ConsoleWarning3(f, s, t, u) { ConsoleWriteLine(CONSOLE_COLOR_YELLOW, f, s, t, u); Trace3(REPORT_STANDARD, f, s, t, u); } + +#define ConsoleError(x, f) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f); TraceError(x, f); } +#define ConsoleError1(x, f, s) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f, s); TraceError1(x, f, s); } +#define ConsoleError2(x, f, s, t) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f, s, t); TraceError2(x, f, s, t); } +#define ConsoleError3(x, f, s, t, u) { ConsoleWriteError(x, CONSOLE_COLOR_RED, f, s, t, u); TraceError3(x, f, s, t, u); } + + +// 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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cryputil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cryputil.h new file mode 100644 index 0000000000000000000000000000000000000000..6a9d1c1606280b307477dd2ee77b2dba7ce73ed2 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/cryputil.h @@ -0,0 +1,113 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Cryptography helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/custommsierrors.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/custommsierrors.h new file mode 100644 index 0000000000000000000000000000000000000000..ca9505a0ac3d5fa92414752c76cce8498118cb0d --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/custommsierrors.h @@ -0,0 +1,153 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +//------------------------------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// Indexes for custom errors in the MSI +// +// Note: Custom Errors must be in the range 25000-30000, all other error +// codes are reserved for the Windows Installer as standard error ranges +// NEVER reuse an error number or you're likely to break the builds. +//--------------------------------------------------------------------------- + +// Instructions: +// 1. add the index to this file +// 2. define the error table row +// 3. #include CustomMsiErrors to refer to the index +// 4. Import Misc\CustomErrors { MYDEFINE=1 }; with your errorgroup under MYDEFINE + + +//--------------------------------------------------------------------------- +// GLOBAL 25501-25600 +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/deputil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/deputil.h new file mode 100644 index 0000000000000000000000000000000000000000..b41bb06c37b2ae9ff2a865a4bcd9e362cff62854 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/deputil.h @@ -0,0 +1,157 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Common function declarations for the dependency/ref-counting feature. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dictutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dictutil.h new file mode 100644 index 0000000000000000000000000000000000000000..9e7202b5ff445338651c30effe89b11370ea2383 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dictutil.h @@ -0,0 +1,79 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for string dict helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dirutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dirutil.h new file mode 100644 index 0000000000000000000000000000000000000000..306fdbd11090fc0286ae7298bb1c8b68e0c3b1b1 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dirutil.h @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Directory helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + +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 + ); + +HRESULT DAPI DirGetCurrent( + __deref_out_z LPWSTR* psczCurrentDirectory + ); + +HRESULT DAPI DirSetCurrent( + __in_z LPCWSTR wzDirectory + ); + +#ifdef __cplusplus +} +#endif + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dlutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dlutil.h new file mode 100644 index 0000000000000000000000000000000000000000..76224b2aa5998c33aea1de50223fe5846bb24d46 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dlutil.h @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Setup chainer/bootstrapper download engine for WiX toolset. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dutil.h new file mode 100644 index 0000000000000000000000000000000000000000..086beade6c017d322785019538e2268dbf8c55f8 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/dutil.h @@ -0,0 +1,235 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for utility layer that provides standard support for asserts, exit macros +// +//------------------------------------------------------------------------------------------------- + +#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 szMsg); + +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, NULL) +#define Trace1(l, f, s) (void)Dutil_Trace(__FILE__, __LINE__, l, f, s) +#define Trace2(l, f, s, t) (void)Dutil_Trace(__FILE__, __LINE__, l, f, s, t) +#define Trace3(l, f, s, t, u) (void)Dutil_Trace(__FILE__, __LINE__, l, f, s, t, u) + +#define TraceError(x, f) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, NULL) +#define TraceError1(x, f, s) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, s) +#define TraceError2(x, f, s, t) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, s, t) +#define TraceError3(x, f, s, t, u) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_ERROR, x, f, s, t, u) + +#define TraceErrorDebug(x, f) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, NULL) +#define TraceErrorDebug1(x, f, s) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, s) +#define TraceErrorDebug2(x, f, s, t) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, s, t) +#define TraceErrorDebug3(x, f, s, t, u) (void)Dutil_TraceError(__FILE__, __LINE__, REPORT_DEBUG, x, f, s, t, u) + +#else // !DEBUG + +#define AssertSetModule(m) +#define AssertSetDisplayFunction(pfn) +#define Assert(f) +#define AssertSz(f, sz) + +#define TraceSetLevel(l, f) +#define Trace(l, f) +#define Trace1(l, f, s) +#define Trace2(l, f, s, t) +#define Trace3(l, f, s, t, u) + +#define TraceError(x, f) +#define TraceError1(x, f, s) +#define TraceError2(x, f, s, t) +#define TraceError3(x, f, s, t, u) + +#define TraceErrorDebug(x, f) +#define TraceErrorDebug1(x, f, s) +#define TraceErrorDebug2(x, f, s, t) +#define TraceErrorDebug3(x, f, s, t, u) + +#endif // DEBUG + + +// 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); goto LExit; } } +#define ExitOnLastError1(x, f, s) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } } +#define ExitOnLastError2(x, f, s, t) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } } + +#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); goto LExit; } } +#define ExitOnLastErrorDebugTrace1(x, f, s) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug1(x, f, s); goto LExit; } } +#define ExitOnLastErrorDebugTrace2(x, f, s, t) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug2(x, f, s, t); goto LExit; } } + +#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); goto LExit; } +#define ExitWithLastError1(x, f, s) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } +#define ExitWithLastError2(x, f, s, t) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } +#define ExitWithLastError3(x, f, s, t, u) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; } + +#define ExitOnFailure(x, s) if (FAILED(x)) { ExitTrace(x, s); goto LExit; } +#define ExitOnFailure1(x, f, s) if (FAILED(x)) { ExitTrace1(x, f, s); goto LExit; } +#define ExitOnFailure2(x, f, s, t) if (FAILED(x)) { ExitTrace2(x, f, s, t); goto LExit; } +#define ExitOnFailure3(x, f, s, t, u) if (FAILED(x)) { ExitTrace3(x, f, s, t, u); goto LExit; } + +#define ExitOnRootFailure(x, s) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s); goto LExit; } +#define ExitOnRootFailure1(x, f, s) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } +#define ExitOnRootFailure2(x, f, s, t) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } +#define ExitOnRootFailure3(x, f, s, t, u) if (FAILED(x)) { Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace3(x, f, s, t, u); goto LExit; } + +#define ExitOnFailureDebugTrace(x, s) if (FAILED(x)) { TraceErrorDebug(x, s); goto LExit; } +#define ExitOnFailureDebugTrace1(x, f, s) if (FAILED(x)) { TraceErrorDebug1(x, f, s); goto LExit; } +#define ExitOnFailureDebugTrace2(x, f, s, t) if (FAILED(x)) { TraceErrorDebug2(x, f, s, t); goto LExit; } +#define ExitOnFailureDebugTrace3(x, f, s, t, u) if (FAILED(x)) { TraceErrorDebug3(x, f, s, t, u); goto LExit; } + +#define ExitOnNull(p, x, e, s) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace(x, s); goto LExit; } +#define ExitOnNull1(p, x, e, f, s) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } +#define ExitOnNull2(p, x, e, f, s, t) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } + +#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); goto LExit; } +#define ExitOnNullWithLastError1(p, x, f, 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); ExitTrace1(x, f, s); goto LExit; } + +#define ExitOnNullDebugTrace(p, x, e, s) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug(x, s); goto LExit; } +#define ExitOnNullDebugTrace1(p, x, e, f, s) if (NULL == p) { x = e; Dutil_RootFailure(__FILE__, __LINE__, x); TraceErrorDebug1(x, f, s); goto LExit; } + +#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); goto LExit; } +#define ExitOnInvalidHandleWithLastError1(p, x, f, 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); ExitTrace1(x, f, s); goto LExit; } + +#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); goto LExit; } +#define ExitOnWin32Error1(e, x, f, s) if (ERROR_SUCCESS != e) { x = HRESULT_FROM_WIN32(e); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace1(x, f, s); goto LExit; } +#define ExitOnWin32Error2(e, x, f, s, t) if (ERROR_SUCCESS != e) { x = HRESULT_FROM_WIN32(e); if (!FAILED(x)) { x = E_FAIL; } Dutil_RootFailure(__FILE__, __LINE__, x); ExitTrace2(x, f, s, t); goto LExit; } + +// 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 static char countofVerify(void const *, T) throw() { return 0; } +template 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/eseutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/eseutil.h new file mode 100644 index 0000000000000000000000000000000000000000..62d654d8d05d1d3a29494364ac17fbd08b75247e --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/eseutil.h @@ -0,0 +1,233 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Extensible Storage Engine (Jetblue) helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/fileutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/fileutil.h new file mode 100644 index 0000000000000000000000000000000000000000..2f4707e06a5671ed2f6e2d3fe4c1d7cc8612df2a --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/fileutil.h @@ -0,0 +1,229 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for file helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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((static_cast(major & 0xFFFF) << 48) \ + | (static_cast(minor & 0xFFFF) << 32) \ + | (static_cast(build & 0xFFFF) << 16) \ + | (static_cast(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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/gdiputil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/gdiputil.h new file mode 100644 index 0000000000000000000000000000000000000000..0241f7b2ddb870efccf9024cb4a65b66f97ceb4b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/gdiputil.h @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// GDI+ helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iis7util.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iis7util.h new file mode 100644 index 0000000000000000000000000000000000000000..953c6b17ee9d255684e792fc916e59782c4e5a42 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iis7util.h @@ -0,0 +1,233 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// IIS7 helper functions. +// +//------------------------------------------------------------------------------------------------- + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/inetutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/inetutil.h new file mode 100644 index 0000000000000000000000000000000000000000..1b875735a37c3b1d657de1d3a050f520fd08080d --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/inetutil.h @@ -0,0 +1,49 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Internet utilites. +// +//------------------------------------------------------------------------------------------------- + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iniutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iniutil.h new file mode 100644 index 0000000000000000000000000000000000000000..b2dfee968101b47f1efb9d1001b9200fa7bcbdb3 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/iniutil.h @@ -0,0 +1,83 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Ini/cfg file helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/jsonutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/jsonutil.h new file mode 100644 index 0000000000000000000000000000000000000000..50de1404f88ed59bdd57a9cf5d6f5b6ef7477d91 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/jsonutil.h @@ -0,0 +1,122 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// JavaScript Object Notation (JSON) helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/locutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/locutil.h new file mode 100644 index 0000000000000000000000000000000000000000..5046d5703be2ee36fa3c16679be79c52938825f8 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/locutil.h @@ -0,0 +1,120 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for localization helper functions. +// +//------------------------------------------------------------------------------------------------- +#pragma once + +#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 + ); + +/******************************************************************** + 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 + ); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/logutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/logutil.h new file mode 100644 index 0000000000000000000000000000000000000000..73ce81f7e11797cf01932f4a4835e7e27760197c --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/logutil.h @@ -0,0 +1,210 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Logging helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/memutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/memutil.h new file mode 100644 index 0000000000000000000000000000000000000000..7c3ded6fda0cc400e6b21f9b26062047cbcf4ec0 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/memutil.h @@ -0,0 +1,65 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for memory helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/metautil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/metautil.h new file mode 100644 index 0000000000000000000000000000000000000000..b4df17d33cfc2f7807ed2cb8b54f0814be0d630b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/metautil.h @@ -0,0 +1,62 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// IIS Metabase helper functions. +// +//------------------------------------------------------------------------------------------------- + +#include +#include +#include +#include + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/osutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/osutil.h new file mode 100644 index 0000000000000000000000000000000000000000..a84a31c3264164d5acfadb1db78e4dd87bca32f4 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/osutil.h @@ -0,0 +1,49 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Operating system helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/pathutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/pathutil.h new file mode 100644 index 0000000000000000000000000000000000000000..50ec25454579038abca48a55f6389ae8dee49960 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/pathutil.h @@ -0,0 +1,230 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for path helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 + ); + +/******************************************************************* + 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/perfutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/perfutil.h new file mode 100644 index 0000000000000000000000000000000000000000..0245db351a60d3a57318eed1af4d15c48ce2d9c2 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/perfutil.h @@ -0,0 +1,34 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Performance helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/polcutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/polcutil.h new file mode 100644 index 0000000000000000000000000000000000000000..9ee1946be4d332bf998b2a8ef04bce62068a21a5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/polcutil.h @@ -0,0 +1,49 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Policy utility functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/procutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/procutil.h new file mode 100644 index 0000000000000000000000000000000000000000..7b7e5a2d2a0b7641cf4d95d4147073196f2cd942 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/procutil.h @@ -0,0 +1,85 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for process helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/regutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/regutil.h new file mode 100644 index 0000000000000000000000000000000000000000..73933014ef9343f644f9f17a4508c94bc26653a2 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/regutil.h @@ -0,0 +1,245 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Registry helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/resrutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/resrutil.h new file mode 100644 index 0000000000000000000000000000000000000000..9accf8e3a3275fe953cbbd5e972ea25cf818e9d5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/resrutil.h @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Resource read helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/reswutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/reswutil.h new file mode 100644 index 0000000000000000000000000000000000000000..e8933dfae60b441572ebac42f1856a8b8f1702fb --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/reswutil.h @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Resource writer helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rexutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rexutil.h new file mode 100644 index 0000000000000000000000000000000000000000..21cbb5348d7e66355b46a761a3c48b87ada0eb3d --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rexutil.h @@ -0,0 +1,64 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Resource Cabinet Extract Utilities +// +//------------------------------------------------------------------------------------------------- + +#include +#include + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rmutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rmutil.h new file mode 100644 index 0000000000000000000000000000000000000000..beec457d867fbb46d07d364bf3a2eaac62db7c11 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rmutil.h @@ -0,0 +1,56 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Restart Manager utility functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rssutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rssutil.h new file mode 100644 index 0000000000000000000000000000000000000000..9df757c7f8c35b2477e3bfff6dd9c3db7af3ca63 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/rssutil.h @@ -0,0 +1,101 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// RSS helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sceutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sceutil.h new file mode 100644 index 0000000000000000000000000000000000000000..9a3fd5209915dc09dcaf219fd53440468a548ba4 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sceutil.h @@ -0,0 +1,271 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for SQL Compact Edition helper functions. +// +//------------------------------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/shelutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/shelutil.h new file mode 100644 index 0000000000000000000000000000000000000000..462dcacbbe757cefda3b9d3b73f25c5803022a06 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/shelutil.h @@ -0,0 +1,57 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for shell helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sqlutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sqlutil.h new file mode 100644 index 0000000000000000000000000000000000000000..eadcb31c610ba7b3d1dcefb7ef75f0c70d628c38 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/sqlutil.h @@ -0,0 +1,146 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// SQL helper functions. +// +//------------------------------------------------------------------------------------------------- + +#include +#include +#include + + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/srputil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/srputil.h new file mode 100644 index 0000000000000000000000000000000000000000..a28989d55e4b744881b052a98744b6b21ac389c6 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/srputil.h @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// System restore point helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/strutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/strutil.h new file mode 100644 index 0000000000000000000000000000000000000000..0ed4d02f857531ee0c6dc68e63f1c5b828f3bb7d --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/strutil.h @@ -0,0 +1,311 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for string helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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_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 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 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 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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/svcutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/svcutil.h new file mode 100644 index 0000000000000000000000000000000000000000..d7d87ffb7fa7f5ec9f5b8b26e286a9f2134b1013 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/svcutil.h @@ -0,0 +1,31 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Windows service helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/thmutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/thmutil.h new file mode 100644 index 0000000000000000000000000000000000000000..92603975534b1d187905833f1566556f15e27ab4 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/thmutil.h @@ -0,0 +1,559 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Theme helper functions. +// +//------------------------------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +#define ReleaseTheme(p) if (p) { ThemeFree(p); p = NULL; } + +typedef enum THEME_CONTROL_DATA +{ + THEME_CONTROL_DATA_HOVER = 1, +} THEME_CONTROL_DATA; + +typedef enum THEME_CONTROL_TYPE +{ + THEME_CONTROL_TYPE_UNKNOWN, + THEME_CONTROL_TYPE_BILLBOARD, + THEME_CONTROL_TYPE_BUTTON, + THEME_CONTROL_TYPE_CHECKBOX, + THEME_CONTROL_TYPE_EDITBOX, + THEME_CONTROL_TYPE_HYPERLINK, + THEME_CONTROL_TYPE_HYPERTEXT, + THEME_CONTROL_TYPE_IMAGE, + THEME_CONTROL_TYPE_PROGRESSBAR, + THEME_CONTROL_TYPE_RICHEDIT, + THEME_CONTROL_TYPE_STATIC, + THEME_CONTROL_TYPE_TEXT, + THEME_CONTROL_TYPE_LISTVIEW, + THEME_CONTROL_TYPE_TREEVIEW, + THEME_CONTROL_TYPE_TAB, +} THEME_CONTROL_TYPE; + + +struct THEME_BILLBOARD +{ + HBITMAP hImage; + LPWSTR sczUrl; +}; + + +struct THEME_COLUMN +{ + LPWSTR pszName; + UINT uStringId; + int nWidth; +}; + + +struct THEME_TAB +{ + LPWSTR pszName; + UINT uStringId; +}; + +// THEME_ASSIGN_CONTROL_ID - Used to apply a specific id to a named control (usually +// to set the WM_COMMAND). +struct THEME_ASSIGN_CONTROL_ID +{ + WORD wId; // id to apply to control + LPCWSTR wzName; // name of control to match +}; + +const DWORD THEME_FIRST_ASSIGN_CONTROL_ID = 1024; // Recommended first control id to be assigned. + +struct THEME_CONTROL +{ + THEME_CONTROL_TYPE type; + + WORD wId; + WORD wPageId; + + LPWSTR sczName; // optional name for control, only used to apply control id. + LPWSTR sczText; + int nX; + int nY; + int nHeight; + int nWidth; + int nSourceX; + int nSourceY; + UINT uStringId; + + HBITMAP hImage; + + // Don't free these; it's just a handle to the central image lists stored in THEME. The handle is freed once, there. + HIMAGELIST rghImageList[4]; + + DWORD dwStyle; + DWORD dwExtendedStyle; + DWORD dwInternalStyle; + + DWORD dwFontId; + DWORD dwFontHoverId; + DWORD dwFontSelectedId; + + // Used by billboard controls + THEME_BILLBOARD* ptbBillboards; + DWORD cBillboards; + WORD wBillboardInterval; + WORD wBillboardUrls; + BOOL fBillboardLoops; + + // Used by listview controls + THEME_COLUMN *ptcColumns; + DWORD cColumns; + + // Used by tab controls + THEME_TAB *pttTabs; + DWORD cTabs; + + // state variables that should be ignored + HWND hWnd; + DWORD dwData; // type specific data +}; + + +struct THEME_IMAGELIST +{ + LPWSTR sczName; + + HIMAGELIST hImageList; +}; + +struct THEME_PAGE +{ + WORD wId; + LPWSTR sczName; + + DWORD cControlIndices; + DWORD* rgdwControlIndices; +}; + +struct THEME_FONT +{ + HFONT hFont; + COLORREF crForeground; + HBRUSH hForeground; + COLORREF crBackground; + HBRUSH hBackground; +}; + + +struct THEME +{ + WORD wId; + + DWORD dwStyle; + DWORD dwFontId; + HANDLE hIcon; + LPWSTR sczCaption; + int nHeight; + int nWidth; + int nSourceX; + int nSourceY; + UINT uStringId; + + HBITMAP hImage; + + DWORD cFonts; + THEME_FONT* rgFonts; + + DWORD cPages; + THEME_PAGE* rgPages; + + DWORD cImageLists; + THEME_IMAGELIST* rgImageLists; + + DWORD cControls; + THEME_CONTROL* rgControls; + + // state variables that should be ignored + HWND hwndParent; // parent for loaded controls + HWND hwndHover; // current hwnd hovered over +}; + + +/******************************************************************** + ThemeInitialize - initialized theme management. + +*******************************************************************/ +DAPI_(HRESULT) ThemeInitialize( + __in_opt HMODULE hModule + ); + +/******************************************************************** + ThemeUninitialize - unitialize theme management. + +*******************************************************************/ +DAPI_(void) ThemeUninitialize(); + +/******************************************************************** + ThemeLoadFromFile - loads a theme from a loose file. + + *******************************************************************/ +DAPI_(HRESULT) ThemeLoadFromFile( + __in_z LPCWSTR wzThemeFile, + __out THEME** ppTheme + ); + +/******************************************************************** + ThemeLoadFromResource - loads a theme from a module's data resource. + + NOTE: The resource data must be UTF-8 encoded. +*******************************************************************/ +DAPI_(HRESULT) ThemeLoadFromResource( + __in_opt HMODULE hModule, + __in_z LPCSTR szResource, + __out THEME** ppTheme + ); + +/******************************************************************** + ThemeFree - frees any memory associated with a theme. + +*******************************************************************/ +DAPI_(void) ThemeFree( + __in THEME* pTheme + ); + +/******************************************************************** + ThemeLoadControls - creates the windows for all the theme controls. + +*******************************************************************/ +DAPI_(HRESULT) ThemeLoadControls( + __in THEME* pTheme, + __in HWND hwndParent, + __in_ecount_opt(cAssignControlIds) const THEME_ASSIGN_CONTROL_ID* rgAssignControlIds, + __in DWORD cAssignControlIds + ); + +/******************************************************************** + ThemeUnloadControls - resets all the theme control windows so the theme + controls can be reloaded. + +*******************************************************************/ +DAPI_(void) ThemeUnloadControls( + __in THEME* pTheme + ); + +/******************************************************************** + ThemeLocalize - Localizes all of the strings in the them. + +*******************************************************************/ +DAPI_(HRESULT) ThemeLocalize( + __in THEME *pTheme, + __in const WIX_LOCALIZATION *pLocStringSet + ); + +DAPI_(HRESULT) ThemeLoadStrings( + __in THEME* pTheme, + __in HMODULE hResModule + ); + +/******************************************************************** + ThemeLoadRichEditFromFile - Attach a richedit control to a RTF file. + + *******************************************************************/ +DAPI_(HRESULT) ThemeLoadRichEditFromFile( + __in THEME* pTheme, + __in DWORD dwControl, + __in_z LPCWSTR wzFileName, + __in HMODULE hModule + ); + +/******************************************************************** + ThemeLoadRichEditFromResource - Attach a richedit control to resource data. + + *******************************************************************/ +DAPI_(HRESULT) ThemeLoadRichEditFromResource( + __in THEME* pTheme, + __in DWORD dwControl, + __in_z LPCSTR szResourceName, + __in HMODULE hModule + ); + +/******************************************************************** + ThemeLoadRichEditFromResourceToHWnd - Attach a richedit control (by + HWND) to resource data. + + *******************************************************************/ +DAPI_(HRESULT) ThemeLoadRichEditFromResourceToHWnd( + __in HWND hWnd, + __in_z LPCSTR szResourceName, + __in HMODULE hModule + ); + +/******************************************************************** + ThemeHandleKeyboardMessage - will translate the message using the active + accelerator table. + +*******************************************************************/ +DAPI_(BOOL) ThemeHandleKeyboardMessage( + __in_opt THEME* pTheme, + __in HWND hWnd, + __in MSG* pMsg + ); + +/******************************************************************** + ThemeDefWindowProc - replacement for DefWindowProc() when using theme. + +*******************************************************************/ +LRESULT CALLBACK ThemeDefWindowProc( + __in_opt THEME* pTheme, + __in HWND hWnd, + __in UINT uMsg, + __in WPARAM wParam, + __in LPARAM lParam + ); + +/******************************************************************** + ThemeGetPageIds - gets the page ids for the theme via page names. + +*******************************************************************/ +DAPI_(void) ThemeGetPageIds( + __in const THEME* pTheme, + __in_ecount(cGetPages) LPCWSTR* rgwzFindNames, + __in_ecount(cGetPages) DWORD* rgdwPageIds, + __in DWORD cGetPages + ); + +/******************************************************************** + ThemeGetPage - gets a theme page by id. + + *******************************************************************/ +DAPI_(THEME_PAGE*) ThemeGetPage( + __in const THEME* pTheme, + __in DWORD dwPage + ); + +/******************************************************************** + ThemeShowPage - shows or hides all of the controls in the page at one time. + + *******************************************************************/ +DAPI_(void) ThemeShowPage( + __in THEME* pTheme, + __in DWORD dwPage, + __in int nCmdShow + ); + +/******************************************************************** + ThemeControlExists - check if a control with the specified id exists. + + *******************************************************************/ +DAPI_(BOOL) ThemeControlExists( + __in THEME* pTheme, + __in DWORD dwControl + ); + +/******************************************************************** + ThemeControlEnable - enables/disables a control. + + *******************************************************************/ +DAPI_(void) ThemeControlEnable( + __in THEME* pTheme, + __in DWORD dwControl, + __in BOOL fEnable + ); + +/******************************************************************** + ThemeControlEnabled - returns whether a control is enabled/disabled. + + *******************************************************************/ +DAPI_(BOOL) ThemeControlEnabled( + __in THEME* pTheme, + __in DWORD dwControl + ); + +/******************************************************************** + ThemeControlElevates - sets/removes the shield icon on a control. + + *******************************************************************/ +DAPI_(void) ThemeControlElevates( + __in THEME* pTheme, + __in DWORD dwControl, + __in BOOL fElevates + ); + +/******************************************************************** + ThemeShowControl - shows/hides a control. + + *******************************************************************/ +DAPI_(void) ThemeShowControl( + __in THEME* pTheme, + __in DWORD dwControl, + __in int nCmdShow + ); + +/******************************************************************** + ThemeControlVisible - returns whether a control is visible. + + *******************************************************************/ +DAPI_(BOOL) ThemeControlVisible( + __in THEME* pTheme, + __in DWORD dwControl + ); + +DAPI_(BOOL) ThemePostControlMessage( + __in THEME* pTheme, + __in DWORD dwControl, + __in UINT Msg, + __in WPARAM wParam, + __in LPARAM lParam + ); + +DAPI_(LRESULT) ThemeSendControlMessage( + __in THEME* pTheme, + __in DWORD dwControl, + __in UINT Msg, + __in WPARAM wParam, + __in LPARAM lParam + ); + +/******************************************************************** + ThemeDrawBackground - draws the theme background. + +*******************************************************************/ +DAPI_(HRESULT) ThemeDrawBackground( + __in THEME* pTheme, + __in PAINTSTRUCT* pps + ); + +/******************************************************************** + ThemeDrawControl - draw an owner drawn control. + +*******************************************************************/ +DAPI_(HRESULT) ThemeDrawControl( + __in THEME* pTheme, + __in DRAWITEMSTRUCT* pdis + ); + +/******************************************************************** + ThemeHoverControl - mark a control as hover. + +*******************************************************************/ +DAPI_(BOOL) ThemeHoverControl( + __in THEME* pTheme, + __in HWND hwndParent, + __in HWND hwndControl + ); + +/******************************************************************** + ThemeIsControlChecked - gets whether a control is checked. Only + really useful for checkbox controls. + +*******************************************************************/ +DAPI_(BOOL) ThemeIsControlChecked( + __in THEME* pTheme, + __in DWORD dwControl + ); + +/******************************************************************** + ThemeSetControlColor - sets the color of text for a control. + +*******************************************************************/ +DAPI_(BOOL) ThemeSetControlColor( + __in THEME* pTheme, + __in HDC hdc, + __in HWND hWnd, + __out HBRUSH* phBackgroundBrush + ); + +/******************************************************************** + ThemeStartBillboard - starts a billboard control changing images according + to their interval. + + NOTE: iImage specifies the image to start on. If iImage is + greater than the number of images, the last image shown + will be the start image. +*******************************************************************/ +DAPI_(HRESULT) ThemeStartBillboard( + __in const THEME* pTheme, + __in DWORD dwControl, + __in WORD iImage + ); + +/******************************************************************** + ThemeStopBillboard - stops a billboard control from changing images. + +*******************************************************************/ +DAPI_(HRESULT) ThemeStopBillboard( + __in const THEME* pTheme, + __in DWORD dwControl + ); + +/******************************************************************** + ThemeSetProgressControl - sets the current percentage complete in a + progress bar control. + +*******************************************************************/ +DAPI_(HRESULT) ThemeSetProgressControl( + __in THEME* pTheme, + __in DWORD dwControl, + __in DWORD dwProgressPercentage + ); + +/******************************************************************** + ThemeSetProgressControlColor - sets the current color of a + progress bar control. + +*******************************************************************/ +DAPI_(HRESULT) ThemeSetProgressControlColor( + __in THEME* pTheme, + __in DWORD dwControl, + __in DWORD dwColorIndex + ); + +/******************************************************************** + ThemeSetTextControl - sets the text of a control. + +*******************************************************************/ +DAPI_(HRESULT) ThemeSetTextControl( + __in THEME* pTheme, + __in DWORD dwControl, + __in_z LPCWSTR wzText + ); + +/******************************************************************** + ThemeGetTextControl - gets the text of a control. + +*******************************************************************/ +DAPI_(HRESULT) ThemeGetTextControl( + __in const THEME* pTheme, + __in DWORD dwControl, + __out LPWSTR* psczText + ); + +/******************************************************************** + ThemeUpdateCaption - updates the caption in the theme. + +*******************************************************************/ +DAPI_(HRESULT) ThemeUpdateCaption( + __in THEME* pTheme, + __in_z LPCWSTR wzCaption + ); + +/******************************************************************** + ThemeSetFocus - set the focus to the control supplied or the next + enabled control if it is disabled. + +*******************************************************************/ +DAPI_(void) ThemeSetFocus( + __in THEME* pTheme, + __in DWORD dwControl + ); + +#ifdef __cplusplus +} +#endif + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/timeutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/timeutil.h new file mode 100644 index 0000000000000000000000000000000000000000..b5f4eabd798e0d5f61cd0524053b9669bb78fd14 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/timeutil.h @@ -0,0 +1,45 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Time helper functions. +// +//------------------------------------------------------------------------------------------------- + + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/uriutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/uriutil.h new file mode 100644 index 0000000000000000000000000000000000000000..1a6a39316e6d970fc1ea86df8b407a86a74f5fe6 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/uriutil.h @@ -0,0 +1,111 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// URI helper functions. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + +#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 + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/userutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/userutil.h new file mode 100644 index 0000000000000000000000000000000000000000..569bc8a539485f82af5cc18e12bd11777e9a71e5 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/userutil.h @@ -0,0 +1,42 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// User helper functions. +// +//------------------------------------------------------------------------------------------------- + +#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 diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcalog.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcalog.h new file mode 100644 index 0000000000000000000000000000000000000000..b42f09827f6057ce6273452c7470fc2ad79db41c --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcalog.h @@ -0,0 +1,24 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Private header for internal logging functions +// +//------------------------------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +BOOL WIXAPI IsVerboseLogging(); +HRESULT WIXAPI SetVerboseLoggingAtom(BOOL bValue); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcautil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcautil.h new file mode 100644 index 0000000000000000000000000000000000000000..a483a98f59e45543cff0a283979e5d429f91815b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcautil.h @@ -0,0 +1,372 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Windows Installer XML CustomAction utility library. +// +//------------------------------------------------------------------------------------------------- + +#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 + ); + +WCA_TODO WIXAPI WcaGetComponentToDo( + __in_z LPCWSTR wzComponentId + ); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawow64.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawow64.h new file mode 100644 index 0000000000000000000000000000000000000000..f714107b855b6cde1850f13e001e4e08a52f5a50 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawow64.h @@ -0,0 +1,30 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Windows Installer XML CustomAction utility library for Wow64 API-related functionality. +// +//------------------------------------------------------------------------------------------------- + +#include "wcautil.h" + +#ifdef __cplusplus +extern "C" { +#endif + +HRESULT WIXAPI WcaInitializeWow64(); +BOOL WIXAPI WcaIsWow64Process(); +BOOL WIXAPI WcaIsWow64Initialized(); +HRESULT WIXAPI WcaDisableWow64FSRedirection(); +HRESULT WIXAPI WcaRevertWow64FSRedirection(); +HRESULT WIXAPI WcaFinalizeWow64(); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawrapquery.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawrapquery.h new file mode 100644 index 0000000000000000000000000000000000000000..2eed0dd2a7f9f8b21bab8ea89262816e60123f0b --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wcawrapquery.h @@ -0,0 +1,141 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Windows Installer XML CustomAction utility library wrappers meant to wrap an MSI view as +// opened by an immediate custom action and transmit it to a deferred custom action +// +//------------------------------------------------------------------------------------------------- + +#include "wcautil.h" + +// Enumerations +typedef enum eWrapQueryAction +{ + wqaTableBegin = 1, + wqaTableFinish, + wqaRowBegin, + wqaRowFinish +} eWrapQueryAction; + +typedef enum eColumnDataType +{ + cdtString = 1, + cdtInt, + cdtStream, + cdtUnknown +} eColumnDataType; + +typedef enum eFormatMaskColumn +{ + efmcColumn1 = 1, + efmcColumn2 = 1 << 1, + efmcColumn3 = 1 << 2, + efmcColumn4 = 1 << 3, + efmcColumn5 = 1 << 4, + efmcColumn6 = 1 << 5, + efmcColumn7 = 1 << 6, + efmcColumn8 = 1 << 7, + efmcColumn9 = 1 << 8, + efmcColumn10 = 1 << 9, + efmcColumn11 = 1 << 10, + efmcColumn12 = 1 << 11, + efmcColumn13 = 1 << 12, + efmcColumn14 = 1 << 13, + efmcColumn15 = 1 << 14, + efmcColumn16 = 1 << 15, + efmcColumn17 = 1 << 16, + efmcColumn18 = 1 << 17, + efmcColumn19 = 1 << 18, + efmcColumn20 = 1 << 19, + efmcColumn21 = 1 << 20, + efmcColumn22 = 1 << 21, + efmcColumn23 = 1 << 22, + efmcColumn24 = 1 << 23, + efmcColumn25 = 1 << 24, + efmcColumn26 = 1 << 25, + efmcColumn27 = 1 << 26, + efmcColumn28 = 1 << 27, + efmcColumn29 = 1 << 28, + efmcColumn30 = 1 << 29, + efmcColumn31 = 1 << 30, + efmcColumn32 = 1 << 31, +} eFormatMaskColumn; + +// Keeps track of the query instance for the reading CA (deferred CA) +typedef struct WCA_WRAPQUERY_STRUCT +{ + // These are used to size our dynamic arrays below + DWORD dwColumns, dwRows, dwNextIndex; + + // Dynamic arrays of column schema information + eColumnDataType *pcdtColumnType; + LPWSTR *ppwzColumnNames; + + // Dynamic array of raw record data + MSIHANDLE *phRecords; +} *WCA_WRAPQUERY_HANDLE; + +// Wrap a query +// Setting the pfFormatMask enables control over which fields will be formatted, and which will be left unchanged +// Setting dwComponentColumn to something other than 0xFFFFFFFF tells WcaWrapQuery to add two additional columns to the right side of the table +// - ISInstalled and ISAction - which map to the ComponentState of the component (the component is found in the column specified) +// Note that if a component is NULL, the component state columns will also be left null, and it will be up to the deferred CA to fail or ignore the case appropriately +// Setting dwDirectoryColumn to something other than 0xFFFFFFFF tells WcaWrapQuery to add two more additional columns to the right side of the table +// - SourcePath and TargetPath - which map to the Directory's Source and Target Path (the directory is found in the column specified) +// Note that if a directory is NULL, the directory source/target path columns will also be left null, and it will be up to the deferred CA to fail or ignore the case appropriately +HRESULT WIXAPI WcaWrapQuery( + __in_z LPCWSTR pwzQuery, + __inout LPWSTR * ppwzCustomActionData, + __in_opt DWORD dwFormatMask, + __in_opt DWORD dwComponentColumn, + __in_opt DWORD dwDirectoryColumn + ); +// This wraps an empty table query into the custom action data - this is a way to indicate to the deferred custom action that a necessary table doesn't exist, or its query returned no results +HRESULT WIXAPI WcaWrapEmptyQuery( + __inout LPWSTR * ppwzCustomActionData + ); + +// Open a new unwrap query operation, with data from the ppwzCustomActionData string +HRESULT WIXAPI WcaBeginUnwrapQuery( + __out WCA_WRAPQUERY_HANDLE * phWrapQuery, + __inout LPWSTR * ppwzCustomActionData + ); + +// Get the number of records in a query being unwrapped +DWORD WIXAPI WcaGetQueryRecords( + __in const WCA_WRAPQUERY_HANDLE hWrapQuery + ); + +// This function resets a query back to its first row, so that the next fetch returns the first record +void WIXAPI WcaFetchWrappedReset( + __in WCA_WRAPQUERY_HANDLE hWrapQuery + ); +// Fetch the next record in this query +// NOTE: the MSIHANDLE returned by this function should not be released, as it is the same handle used by the query object to maintain the item. +// so, don't use this function with PMSIHANDLE objects! +HRESULT WIXAPI WcaFetchWrappedRecord( + __in WCA_WRAPQUERY_HANDLE hWrapQuery, + __out MSIHANDLE* phRec + ); + +// Fetch the next record in the query where the string value in column dwComparisonColumn equals the value pwzExpectedValue +// NOTE: the MSIHANDLE returned by this function should not be released, as it is the same handle used by the query object to maintain the item. +// so, don't use this function with PMSIHANDLE objects! +HRESULT WIXAPI WcaFetchWrappedRecordWhereString( + __in WCA_WRAPQUERY_HANDLE hWrapQuery, + __in DWORD dwComparisonColumn, + __in_z LPCWSTR pwzExpectedValue, + __out MSIHANDLE* phRec + ); + +// Release a query ID (frees memory, and frees the ID for a new query) +void WIXAPI WcaFinishUnwrapQuery( + __in_opt WCA_WRAPQUERY_HANDLE hWrapQuery + ); diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wiutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wiutil.h new file mode 100644 index 0000000000000000000000000000000000000000..cfb31ef6803d41a59ac0c14ec40950b46563d1fc --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wiutil.h @@ -0,0 +1,383 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Windows Installer helper functions. +// +//------------------------------------------------------------------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +// constants + +#define IDNOACTION 0 +#define WIU_MB_OKIGNORECANCELRETRY 0xE + +#define MAX_DARWIN_KEY 73 +#define MAX_DARWIN_COLUMN 255 + +#define WIU_LOG_DEFAULT INSTALLLOGMODE_FATALEXIT | INSTALLLOGMODE_ERROR | INSTALLLOGMODE_WARNING | \ + INSTALLLOGMODE_USER | INSTALLLOGMODE_INFO | INSTALLLOGMODE_RESOLVESOURCE | \ + INSTALLLOGMODE_OUTOFDISKSPACE | INSTALLLOGMODE_ACTIONSTART | \ + INSTALLLOGMODE_ACTIONDATA | INSTALLLOGMODE_COMMONDATA | INSTALLLOGMODE_PROPERTYDUMP + +#define ReleaseMsi(h) if (h) { ::MsiCloseHandle(h); } +#define ReleaseNullMsi(h) if (h) { ::MsiCloseHandle(h); h = NULL; } + + +typedef enum WIU_RESTART +{ + WIU_RESTART_NONE, + WIU_RESTART_REQUIRED, + WIU_RESTART_INITIATED, +} WIU_RESTART; + +typedef enum WIU_MSI_EXECUTE_MESSAGE_TYPE +{ + WIU_MSI_EXECUTE_MESSAGE_NONE, + WIU_MSI_EXECUTE_MESSAGE_PROGRESS, + WIU_MSI_EXECUTE_MESSAGE_ERROR, + WIU_MSI_EXECUTE_MESSAGE_MSI_MESSAGE, + WIU_MSI_EXECUTE_MESSAGE_MSI_FILES_IN_USE, +} WIU_MSI_EXECUTE_MESSAGE_TYPE; + + +// structures + +typedef struct _WIU_MSI_EXECUTE_MESSAGE +{ + WIU_MSI_EXECUTE_MESSAGE_TYPE type; + DWORD dwAllowedResults; + + DWORD cData; + LPCWSTR* rgwzData; + + INT nResultRecommendation; // recommended return result for this message based on analysis of real world installs. + + union + { + struct + { + DWORD dwPercentage; + } progress; + struct + { + DWORD dwErrorCode; + LPCWSTR wzMessage; + } error; + struct + { + INSTALLMESSAGE mt; + LPCWSTR wzMessage; + } msiMessage; + struct + { + DWORD cFiles; + LPCWSTR* rgwzFiles; + } msiFilesInUse; + }; +} WIU_MSI_EXECUTE_MESSAGE; + +typedef struct _WIU_MSI_PROGRESS +{ + DWORD dwTotal; + DWORD dwCompleted; + DWORD dwStep; + BOOL fMoveForward; + BOOL fEnableActionData; + BOOL fScriptInProgress; +} WIU_MSI_PROGRESS; + + +typedef int (*PFN_MSIEXECUTEMESSAGEHANDLER)( + __in WIU_MSI_EXECUTE_MESSAGE* pMessage, + __in_opt LPVOID pvContext + ); + +typedef struct _WIU_MSI_EXECUTE_CONTEXT +{ + BOOL fRollback; + PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler; + LPVOID pvContext; + WIU_MSI_PROGRESS rgMsiProgress[64]; + DWORD dwCurrentProgressIndex; + + INSTALLUILEVEL previousInstallUILevel; + HWND hwndPreviousParentWindow; + INSTALLUI_HANDLERW pfnPreviousExternalUI; + INSTALLUI_HANDLER_RECORD pfnPreviousExternalUIRecord; + + BOOL fSetPreviousExternalUIRecord; + BOOL fSetPreviousExternalUI; +} WIU_MSI_EXECUTE_CONTEXT; + + +// typedefs +typedef UINT (WINAPI *PFN_MSIENABLELOGW)( + __in DWORD dwLogMode, + __in_z LPCWSTR szLogFile, + __in DWORD dwLogAttributes + ); +typedef UINT (WINAPI *PFN_MSIGETPRODUCTINFOW)( + __in LPCWSTR szProductCode, + __in LPCWSTR szProperty, + __out_ecount_opt(*pcchValue) LPWSTR szValue, + __inout LPDWORD pcchValue + ); +typedef INSTALLSTATE (WINAPI *PFN_MSIGETCOMPONENTPATHW)( + __in LPCWSTR szProduct, + __in LPCWSTR szComponent, + __out_ecount_opt(*pcchBuf) LPWSTR lpPathBuf, + __inout_opt LPDWORD pcchBuf + ); +typedef INSTALLSTATE (WINAPI *PFN_MSILOCATECOMPONENTW)( + __in LPCWSTR szComponent, + __out_ecount_opt(*pcchBuf) LPWSTR lpPathBuf, + __inout_opt LPDWORD pcchBuf + ); +typedef UINT (WINAPI *PFN_MSIGETPRODUCTINFOEXW)( + __in LPCWSTR szProductCode, + __in_opt LPCWSTR szUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in LPCWSTR szProperty, + __out_ecount_opt(*pcchValue) LPWSTR szValue, + __inout_opt LPDWORD pcchValue + ); +typedef INSTALLSTATE (WINAPI *PFN_MSIQUERYFEATURESTATEW)( + __in LPCWSTR szProduct, + __in LPCWSTR szFeature + ); +typedef UINT (WINAPI *PFN_MSIGETPATCHINFOEXW)( + __in_z LPCWSTR wzPatchCode, + __in_z LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in_z LPCWSTR wzProperty, + __out_opt LPWSTR wzValue, + __inout DWORD* pcchValue + ); +typedef UINT (WINAPI *PFN_MSIDETERMINEPATCHSEQUENCEW)( + __in_z LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT context, + __in DWORD cPatchInfo, + __in PMSIPATCHSEQUENCEINFOW pPatchInfo + ); +typedef UINT (WINAPI *PFN_MSIDETERMINEAPPLICABLEPATCHESW)( + __in_z LPCWSTR wzProductPackagePath, + __in DWORD cPatchInfo, + __in PMSIPATCHSEQUENCEINFOW pPatchInfo + ); +typedef UINT (WINAPI *PFN_MSIINSTALLPRODUCTW)( + __in LPCWSTR szPackagePath, + __in_opt LPCWSTR szCommandLine + ); +typedef UINT (WINAPI *PFN_MSICONFIGUREPRODUCTEXW)( + __in LPCWSTR szProduct, + __in int iInstallLevel, + __in INSTALLSTATE eInstallState, + __in_opt LPCWSTR szCommandLine + ); +typedef UINT (WINAPI *PFN_MSIREMOVEPATCHESW)( + __in_z LPCWSTR wzPatchList, + __in_z LPCWSTR wzProductCode, + __in INSTALLTYPE eUninstallType, + __in_z_opt LPCWSTR szPropertyList + ); +typedef INSTALLUILEVEL (WINAPI *PFN_MSISETINTERNALUI)( + __in INSTALLUILEVEL dwUILevel, + __inout_opt HWND *phWnd + ); +typedef UINT (WINAPI *PFN_MSISETEXTERNALUIRECORD)( + __in_opt INSTALLUI_HANDLER_RECORD puiHandler, + __in DWORD dwMessageFilter, + __in_opt LPVOID pvContext, + __out_opt PINSTALLUI_HANDLER_RECORD ppuiPrevHandler + ); +typedef INSTALLUI_HANDLERW (WINAPI *PFN_MSISETEXTERNALUIW)( + __in_opt INSTALLUI_HANDLERW puiHandler, + __in DWORD dwMessageFilter, + __in_opt LPVOID pvContext + ); +typedef UINT (WINAPI *PFN_MSIENUMPRODUCTSW)( + __in DWORD iProductIndex, + __out_ecount(MAX_GUID_CHARS + 1) LPWSTR lpProductBuf + ); +typedef UINT (WINAPI *PFN_MSIENUMPRODUCTSEXW)( + __in_z_opt LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in DWORD dwContext, + __in DWORD dwIndex, + __out_opt WCHAR wzInstalledProductCode[39], + __out_opt MSIINSTALLCONTEXT *pdwInstalledContext, + __out_opt LPWSTR wzSid, + __inout_opt LPDWORD pcchSid + ); + +typedef UINT (WINAPI *PFN_MSIENUMRELATEDPRODUCTSW)( + __in LPCWSTR lpUpgradeCode, + __reserved DWORD dwReserved, + __in DWORD iProductIndex, + __out_ecount(MAX_GUID_CHARS + 1) LPWSTR lpProductBuf + ); +typedef UINT (WINAPI *PFN_MSISOURCELISTADDSOURCEEXW)( + __in LPCWSTR szProductCodeOrPatchCode, + __in_opt LPCWSTR szUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in DWORD dwOptions, + __in LPCWSTR szSource, + __in_opt DWORD dwIndex + ); + + +HRESULT DAPI WiuInitialize( + ); +void DAPI WiuUninitialize( + ); +void DAPI WiuFunctionOverride( + __in_opt PFN_MSIENABLELOGW pfnMsiEnableLogW, + __in_opt PFN_MSIGETCOMPONENTPATHW pfnMsiGetComponentPathW, + __in_opt PFN_MSILOCATECOMPONENTW pfnMsiLocateComponentW, + __in_opt PFN_MSIQUERYFEATURESTATEW pfnMsiQueryFeatureStateW, + __in_opt PFN_MSIGETPRODUCTINFOW pfnMsiGetProductInfoW, + __in_opt PFN_MSIGETPRODUCTINFOEXW pfnMsiGetProductInfoExW, + __in_opt PFN_MSIINSTALLPRODUCTW pfnMsiInstallProductW, + __in_opt PFN_MSICONFIGUREPRODUCTEXW pfnMsiConfigureProductExW, + __in_opt PFN_MSISETINTERNALUI pfnMsiSetInternalUI, + __in_opt PFN_MSISETEXTERNALUIW pfnMsiSetExternalUIW, + __in_opt PFN_MSIENUMRELATEDPRODUCTSW pfnMsiEnumRelatedProductsW, + __in_opt PFN_MSISETEXTERNALUIRECORD pfnMsiSetExternalUIRecord, + __in_opt PFN_MSISOURCELISTADDSOURCEEXW pfnMsiSourceListAddSourceExW + ); +HRESULT DAPI WiuGetComponentPath( + __in_z LPCWSTR wzProductCode, + __in_z LPCWSTR wzComponentId, + __out INSTALLSTATE* pInstallState, + __out_z LPWSTR* psczValue + ); +HRESULT DAPI WiuLocateComponent( + __in_z LPCWSTR wzComponentId, + __out INSTALLSTATE* pInstallState, + __out_z LPWSTR* psczValue + ); +HRESULT DAPI WiuQueryFeatureState( + __in_z LPCWSTR wzProduct, + __in_z LPCWSTR wzFeature, + __out INSTALLSTATE* pInstallState + ); +HRESULT DAPI WiuGetProductInfo( + __in_z LPCWSTR wzProductCode, + __in_z LPCWSTR wzProperty, + __out LPWSTR* psczValue + ); +HRESULT DAPI WiuGetProductInfoEx( + __in_z LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in_z LPCWSTR wzProperty, + __out LPWSTR* psczValue + ); +HRESULT DAPI WiuGetProductProperty( + __in MSIHANDLE hProduct, + __in_z LPCWSTR wzProperty, + __out LPWSTR* psczValue + ); +HRESULT DAPI WiuGetPatchInfoEx( + __in_z LPCWSTR wzPatchCode, + __in_z LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in_z LPCWSTR wzProperty, + __out LPWSTR* psczValue + ); +HRESULT DAPI WiuDeterminePatchSequence( + __in_z LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT context, + __in PMSIPATCHSEQUENCEINFOW pPatchInfo, + __in DWORD cPatchInfo + ); +HRESULT DAPI WiuDetermineApplicablePatches( + __in_z LPCWSTR wzProductPackagePath, + __in PMSIPATCHSEQUENCEINFOW pPatchInfo, + __in DWORD cPatchInfo + ); +HRESULT DAPI WiuEnumProducts( + __in DWORD iProductIndex, + __out_ecount(MAX_GUID_CHARS + 1) LPWSTR wzProductCode + ); +HRESULT DAPI WiuEnumProductsEx( + __in_z_opt LPCWSTR wzProductCode, + __in_z_opt LPCWSTR wzUserSid, + __in DWORD dwContext, + __in DWORD dwIndex, + __out_opt WCHAR wzInstalledProductCode[39], + __out_opt MSIINSTALLCONTEXT *pdwInstalledContext, + __out_opt LPWSTR wzSid, + __inout_opt LPDWORD pcchSid + ); +HRESULT DAPI WiuEnumRelatedProducts( + __in_z LPCWSTR wzUpgradeCode, + __in DWORD iProductIndex, + __out_ecount(MAX_GUID_CHARS + 1) LPWSTR wzProductCode + ); +HRESULT DAPI WiuEnumRelatedProductCodes( + __in_z LPCWSTR wzUpgradeCode, + __deref_out_ecount_opt(pcRelatedProducts) LPWSTR** prgsczProductCodes, + __out DWORD* pcRelatedProducts, + __in BOOL fReturnHighestVersionOnly + ); +HRESULT DAPI WiuEnableLog( + __in DWORD dwLogMode, + __in_z LPCWSTR wzLogFile, + __in DWORD dwLogAttributes + ); +HRESULT DAPI WiuInitializeExternalUI( + __in PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler, + __in INSTALLUILEVEL internalUILevel, + __in HWND hwndParent, + __in LPVOID pvContext, + __in BOOL fRollback, + __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext + ); +void DAPI WiuUninitializeExternalUI( + __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext + ); +HRESULT DAPI WiuConfigureProductEx( + __in_z LPCWSTR wzProduct, + __in int iInstallLevel, + __in INSTALLSTATE eInstallState, + __in_z LPCWSTR wzCommandLine, + __out WIU_RESTART* pRestart + ); +HRESULT DAPI WiuInstallProduct( + __in_z LPCWSTR wzPackagPath, + __in_z LPCWSTR wzCommandLine, + __out WIU_RESTART* pRestart + ); +HRESULT DAPI WiuRemovePatches( + __in_z LPCWSTR wzPatchList, + __in_z LPCWSTR wzProductCode, + __in_z LPCWSTR wzPropertyList, + __out WIU_RESTART* pRestart + ); +HRESULT DAPI WiuSourceListAddSourceEx( + __in_z LPCWSTR wzProductCodeOrPatchCode, + __in_z_opt LPCWSTR wzUserSid, + __in MSIINSTALLCONTEXT dwContext, + __in DWORD dwCode, + __in_z LPCWSTR wzSource, + __in_opt DWORD dwIndex + ); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wuautil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wuautil.h new file mode 100644 index 0000000000000000000000000000000000000000..59c285308972a41f76b07466024c83dce22b77c6 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/wuautil.h @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// Header for Windows Update Agent helpers. +// +//------------------------------------------------------------------------------------------------- + +#pragma once + + +#if defined(__cplusplus) +extern "C" { +#endif + +HRESULT DAPI WuaPauseAutomaticUpdates(); + +HRESULT DAPI WuaResumeAutomaticUpdates(); + +HRESULT DAPI WuaRestartRequired( + __out BOOL* pfRestartRequired + ); + +#if defined(__cplusplus) +} +#endif \ No newline at end of file diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/xmlutil.h b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/xmlutil.h new file mode 100644 index 0000000000000000000000000000000000000000..1ed95bf30d1bf9c08e1839741cb70d81a151576c --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/inc/xmlutil.h @@ -0,0 +1,178 @@ +#pragma once +//------------------------------------------------------------------------------------------------- +// +// Copyright (c) 2004, Outercurve Foundation. +// This software is released under Microsoft Reciprocal License (MS-RL). +// The license and further copyright text can be found in the file +// LICENSE.TXT at the root directory of the distribution. +// +// +// +// XML helper functions. +// +//------------------------------------------------------------------------------------------------- + +// constant XML CLSIDs and IIDs +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument = {0x2933BF90, 0x7B36, 0x11d2, {0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument20 = {0xF6D90F11, 0x9C73, 0x11D3, {0xB3, 0x2E, 0x00, 0xC0, 0x4F, 0x99, 0x0B, 0xB4}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument26 = {0xf5078f1b, 0xc551, 0x11d3, {0x89, 0xb9, 0x00, 0x00, 0xf8, 0x1f, 0xe2, 0x21}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument30 = {0xf5078f32, 0xc551, 0x11d3, {0x89, 0xb9, 0x00, 0x00, 0xf8, 0x1f, 0xe2, 0x21}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument40 = {0x88d969c0, 0xf192, 0x11d4, {0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument50 = {0x88d969e5, 0xf192, 0x11d4, {0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_DOMDocument60 = {0x88d96a05, 0xf192, 0x11d4, {0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5}}; +extern __declspec(selectany) const CLSID XmlUtil_CLSID_XMLSchemaCache = {0x88d969c2, 0xf192, 0x11d4, {0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5}}; + +extern __declspec(selectany) const IID XmlUtil_IID_IXMLDOMDocument = {0x2933BF81, 0x7B36, 0x11D2, {0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60}}; +extern __declspec(selectany) const IID XmlUtil_IID_IXMLDOMDocument2 = {0x2933BF95, 0x7B36, 0x11D2, {0xB2, 0x0E, 0x00, 0xC0, 0x4F, 0x98, 0x3E, 0x60}}; +extern __declspec(selectany) const IID XmlUtil_IID_IXMLDOMSchemaCollection = {0x373984C8, 0xB845, 0x449B, {0x91, 0xE7, 0x45, 0xAC, 0x83, 0x03, 0x6A, 0xDE}}; + +typedef enum XML_LOAD_ATTRIBUTE +{ + XML_LOAD_PRESERVE_WHITESPACE = 1, +} XML_LOAD_ATTRIBUTE; + + +#ifdef __cplusplus +extern "C" { +#endif + +HRESULT DAPI XmlInitialize(); +void DAPI XmlUninitialize(); + +HRESULT DAPI XmlCreateElement( + __in IXMLDOMDocument *pixdDocument, + __in_z LPCWSTR wzElementName, + __out IXMLDOMElement **ppixnElement + ); +HRESULT DAPI XmlCreateDocument( + __in_opt LPCWSTR pwzElementName, + __out IXMLDOMDocument** ppixdDocument, + __out_opt IXMLDOMElement** ppixeRootElement = NULL + ); +HRESULT DAPI XmlLoadDocument( + __in_z LPCWSTR wzDocument, + __out IXMLDOMDocument** ppixdDocument + ); +HRESULT DAPI XmlLoadDocumentEx( + __in_z LPCWSTR wzDocument, + __in DWORD dwAttributes, + __out IXMLDOMDocument** ppixdDocument + ); +HRESULT DAPI XmlLoadDocumentFromFile( + __in_z LPCWSTR wzPath, + __out IXMLDOMDocument** ppixdDocument + ); +HRESULT DAPI XmlLoadDocumentFromBuffer( + __in_bcount(cbSource) const BYTE* pbSource, + __in DWORD cbSource, + __out IXMLDOMDocument** ppixdDocument + ); +HRESULT DAPI XmlLoadDocumentFromFileEx( + __in_z LPCWSTR wzPath, + __in DWORD dwAttributes, + __out IXMLDOMDocument** ppixdDocument + ); +HRESULT DAPI XmlSelectSingleNode( + __in IXMLDOMNode* pixnParent, + __in_z LPCWSTR wzXPath, + __out IXMLDOMNode **ppixnChild + ); +HRESULT DAPI XmlSetAttribute( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute, + __in_z LPCWSTR pwzAttributeValue + ); +HRESULT DAPI XmlCreateTextNode( + __in IXMLDOMDocument *pixdDocument, + __in_z LPCWSTR wzText, + __out IXMLDOMText **ppixnTextNode + ); +HRESULT DAPI XmlGetText( + __in IXMLDOMNode* pixnNode, + __deref_out_z BSTR* pbstrText + ); +HRESULT DAPI XmlGetAttribute( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute, + __deref_out_z BSTR* pbstrAttributeValue + ); +HRESULT DAPI XmlGetAttributeEx( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR wzAttribute, + __deref_out_z LPWSTR* psczAttributeValue + ); +HRESULT DAPI XmlGetYesNoAttribute( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR wzAttribute, + __out BOOL* pfYes + ); +HRESULT DAPI XmlGetAttributeNumber( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute, + __out DWORD* pdwValue + ); +HRESULT DAPI XmlGetAttributeNumberBase( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute, + __in int nBase, + __out DWORD* pdwValue + ); +HRESULT DAPI XmlGetAttributeLargeNumber( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute, + __out DWORD64* pdw64Value + ); +HRESULT DAPI XmlGetNamedItem( + __in IXMLDOMNamedNodeMap *pixnmAttributes, + __in_opt LPCWSTR wzName, + __out IXMLDOMNode **ppixnNamedItem + ); +HRESULT DAPI XmlSetText( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzText + ); +HRESULT DAPI XmlSetTextNumber( + __in IXMLDOMNode *pixnNode, + __in DWORD dwValue + ); +HRESULT DAPI XmlCreateChild( + __in IXMLDOMNode* pixnParent, + __in_z LPCWSTR pwzElementType, + __out IXMLDOMNode** ppixnChild + ); +HRESULT DAPI XmlRemoveAttribute( + __in IXMLDOMNode* pixnNode, + __in_z LPCWSTR pwzAttribute + ); +HRESULT DAPI XmlSelectNodes( + __in IXMLDOMNode* pixnParent, + __in_z LPCWSTR wzXPath, + __out IXMLDOMNodeList **ppixnChild + ); +HRESULT DAPI XmlNextAttribute( + __in IXMLDOMNamedNodeMap* pixnnm, + __out IXMLDOMNode** pixnAttribute, + __deref_opt_out_z_opt BSTR* pbstrAttribute + ); +HRESULT DAPI XmlNextElement( + __in IXMLDOMNodeList* pixnl, + __out IXMLDOMNode** pixnElement, + __deref_opt_out_z_opt BSTR* pbstrElement + ); +HRESULT DAPI XmlRemoveChildren( + __in IXMLDOMNode* pixnSource, + __in_z LPCWSTR pwzXPath + ); +HRESULT DAPI XmlSaveDocument( + __in IXMLDOMDocument* pixdDocument, + __inout LPCWSTR wzPath + ); +HRESULT DAPI XmlSaveDocumentToBuffer( + __in IXMLDOMDocument* pixdDocument, + __deref_out_bcount(*pcbDest) BYTE** ppbDest, + __out DWORD* pcbDest + ); + +#ifdef __cplusplus +} +#endif diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/balutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/balutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..38e6b68f42d1964d3e969a9a6ae9fdf4ec84609b Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/balutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/deputil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/deputil.lib new file mode 100644 index 0000000000000000000000000000000000000000..4095546185ff93a5474fddf8acc69c35c607b3c5 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/deputil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/dutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/dutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..a1b9cb775d7551ed62777ac773fc8d09e6497e5b Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/dutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/wcautil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/wcautil.lib new file mode 100644 index 0000000000000000000000000000000000000000..c0f94aafcd081c27332b308d212ecf8cefa232d4 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2010/lib/x86/wcautil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/balutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/balutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..7e180bb638fc4dfad4e1d370db9ad45ab2d89d65 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/balutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/deputil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/deputil.lib new file mode 100644 index 0000000000000000000000000000000000000000..f9a7c722b8b66de01e39e6160670ac51c937a296 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/deputil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/dutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/dutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..2648bbf4f49a4840b28653b22ceb2cde9f133c79 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/dutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/wcautil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/wcautil.lib new file mode 100644 index 0000000000000000000000000000000000000000..31353c67149fb22502467717b83b9e7b0bbb94cd Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2012/lib/x86/wcautil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/balutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/balutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..9766f8e3b1377c9e9e7ba8d355bbcc3e228c3da5 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/balutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/deputil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/deputil.lib new file mode 100644 index 0000000000000000000000000000000000000000..f8304dae9451cf6558f43371c67907ff1b478a8d Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/deputil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/dutil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/dutil.lib new file mode 100644 index 0000000000000000000000000000000000000000..f6915bf14e23d641db34ec5d3e0ced4c1e536441 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/dutil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/wcautil.lib b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/wcautil.lib new file mode 100644 index 0000000000000000000000000000000000000000..f38641f01260429ac1511fa613292450be32c6c9 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/vs2013/lib/x86/wcautil.lib differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/wix.ca.targets b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/wix.ca.targets new file mode 100644 index 0000000000000000000000000000000000000000..5be98bee2a2e7d0624110ecb82496dab59272602 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/wix.ca.targets @@ -0,0 +1,196 @@ + + + + + + + + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.ca.targets + $(MSBuildExtensionsPath32)\..\WiX Toolset v3.9\bin\WixTasks.dll + $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\wix.ca.targets + $(MSBuildExtensionsPath)\..\WiX Toolset v3.9\bin\WixTasks.dll + $(TargetName).CA$(TargetExt) + + + + + + + SOFTWARE\Microsoft\Windows Installer XML\3.9 + SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/x86/sfxca.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/x86/sfxca.dll new file mode 100644 index 0000000000000000000000000000000000000000..ca280672a895ed1a9222a4723351d4121185e15f Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/sdk/x86/sfxca.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/shine.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/shine.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..d38f8b619c1d2c74119e8e358796c59e608f57ae --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/shine.exe.config @@ -0,0 +1,14 @@ + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/smoke.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/smoke.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/smoke.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/torch.exe.config b/msvs/RedisWindowsX64/lib/wix39-binaries/torch.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..91db23504ea4d73055287fd806ecffe65db60845 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/torch.exe.config @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/wconsole.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/wconsole.dll new file mode 100644 index 0000000000000000000000000000000000000000..3b934b7e6f1b64ba7f00b7ddbab55ccb2f0b2882 Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/wconsole.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/winterop.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/winterop.dll new file mode 100644 index 0000000000000000000000000000000000000000..18bfb96bc5708d983aa37e8d938862ef32e838cd Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/winterop.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/wix.dll b/msvs/RedisWindowsX64/lib/wix39-binaries/wix.dll new file mode 100644 index 0000000000000000000000000000000000000000..e84d60dc7d807d4a7dbb1a656ae6585ff9354bbd Binary files /dev/null and b/msvs/RedisWindowsX64/lib/wix39-binaries/wix.dll differ diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/wix.targets b/msvs/RedisWindowsX64/lib/wix39-binaries/wix.targets new file mode 100644 index 0000000000000000000000000000000000000000..c0b6a3f0f03f0c064c1663a95a7b0d12dfabccaf --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/wix.targets @@ -0,0 +1,59 @@ + + + + + + + + + + + + wix2010.targets + + wix200x.targets + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/wix200x.targets b/msvs/RedisWindowsX64/lib/wix39-binaries/wix200x.targets new file mode 100644 index 0000000000000000000000000000000000000000..b83b457afd78892b1a43bb0d3137ed2e0f58e0e2 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/wix200x.targets @@ -0,0 +1,3127 @@ + + + + + + + + + + $(MSBuildProjectFullPath).user + + + + + + + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets + $(MSBuildExtensionsPath32)\..\WiX Toolset v3.9\bin\WixTasks.dll + $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets + $(MSBuildExtensionsPath)\..\WiX Toolset v3.9\bin\WixTasks.dll + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Lux.targets + $(MSBuildExtensionsPath32)\..\WiX Toolset v3.9\bin\LuxTasks.dll + $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Lux.targets + $(MSBuildExtensionsPath)\..\WiX Toolset v3.9\bin\LuxTasks.dll + + + + + $(MSBuildAllProjects);$(MSBuildProjectFullPath) + $(MSBuildAllProjects);$(WixTargetsPath) + $(MSBuildAllProjects);$(LuxTargetsPath) + $(MSBuildAllProjects);$(UserTargetsPath) + $(MSBuildAllProjects);$(CustomBeforeWixTargets) + $(MSBuildAllProjects);$(CustomAfterWixTargets) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + Debug + AnyCPU + bin\$(Configuration)\ + + $(OutputPath)\ + <_OriginalOutputType>$(OutputType) + Package + true + + + + + obj\ + $(IntermediateOutputPath)\ + $(BaseIntermediateOutputPath)$(Configuration)\ + $(BaseIntermediateOutputPath)$(Platform)\$(Configuration)\ + .wixobj + $(IntermediateOutputPath)cabcache\ + $(MSBuildProjectFile).FileList.txt + $(MSBuildProjectFile).BindContentsFileList + .txt + $(MSBuildProjectFile).BindOutputsFileList + .txt + $(MSBuildProjectFile).BindBuiltOutputsFileList + .txt + $(MSBuildProjectFile).Signed.txt + + + + + + + .msi + .msm + .pcp + .wixlib + .exe + + + + + $(OutputPath) + + $(OutDir)\ + + + $(OutDir) + $(PdbOutputPath)\ + + + $(MSBuildProjectName) + + + $(MSBuildProjectFile) + + + $(MSBuildProjectExtension) + + + $(MSBuildProjectDirectory)\ + + + $(ProjectDir)$(ProjectFileName) + + + .wixpdb + + + $(OutputName) + + + $(TargetName)$(TargetExt) + + + $(TargetName)$(TargetPdbExt) + + + $(Configuration) + + + $(Platform) + + + + + <_OutputPathItem Include="$(OutDir)" /> + <_IntermediateOutputPathItem Include="$(IntermediateOutputPath)" /> + <_PdbOutputPathItem Include="$(PdbOutputPath)" /> + + + + + + @(_OutputPathItem->'%(FullPath)') + @(_PdbOutputPathItem->'%(FullPath)') + + + @(_OutputPathItem->'%(FullPath)$(TargetFileName)') + @(_PdbOutputPathItem->'%(FullPath)$(TargetPdbName)') + + + + + + + + + + *Undefined if not building from within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + + + + + + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + true + false + true + false + + + + + + false + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + $(IntermediateOutputPath)Product.Generated.wxs + $(IntermediateOutputPath)Bundle.Generated.wxs + + + + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + + + + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + $(Platform) + + + + + $(NoLogo) + $(BindFiles) + $(Pedantic) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(SuppressIntermediateFileVersionMatching) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + $(NoLogo) + $(BindFiles) + $(Pedantic) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(SuppressIntermediateFileVersionMatching) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + + + + + + + + + + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + + + <_PleaseSetThisInProjectFile>Please set this in the project file before the <Import> of the wix.targets file. + <_OutputTypeDescription>The OutputType defines whether a Windows Installer package (.msi), PatchCreation (.pcp), merge module (.msm), wix library (.wixlib), or self-extracting executable (.exe) is being built. $(_PleaseSetThisInProjectFile) Possible values are 'Package', 'Module', 'Library', and 'Bundle'. + + + + + + + + + + + + + + + + + + + + + SOFTWARE\Microsoft\Windows Installer XML\3.9 + SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BeforeBuild; + CoreBuild; + AfterBuild + + + + + + + + + + + + + + + BuildOnlySettings; + PrepareForBuild; + PreBuildEvent; + ResolveReferences; + AddCompilerDefineConstants; + CompileAndLink; + Signing; + GetTargetPath; + IncrementalClean; + PostBuildEvent + + + + + + + + + + + + + + BeforeRebuild; + Clean; + $(MSBuildProjectDefaultTargets); + AfterRebuild; + + + + BeforeRebuild; + Clean; + Build; + AfterRebuild; + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + GetTargetPath + + + + + + + + + + + + + + + + + + + + + + BeforeResolveReferences; + SplitProjectReferencesByType; + ResolveProjectReferences; + ResolveVCProjectReferences; + ResolveWixLibraryReferences; + ResolveWixExtensionReferences; + AfterResolveReferences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + AssignCultures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + + + + + + + + + + + + + + + + + + + + + + + + + + ResolveReferences; + AddSolutionDefineConstants; + AddProjectReferenceDefineConstants; + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ResolveReferences; + BeforeCompileAndLink; + _TimeStampBeforeCompileAndLink; + ConvertReferences; + ConvertBundleReferences; + Harvest; + GenerateCode; + Compile; + Lib; + Link; + UpdateLinkFileWrites; + _TimeStampAfterCompileAndLink; + AfterCompileAndLink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HarvestProjects; + HarvestDirectory; + HarvestFile; + + + + + + + + RefreshGeneratedFile; + RefreshBundleGeneratedFile + + + + + + + + GetMsmsToSign; + InternalSignMsm; + + + GetCabsToSign; + GetMsiToSign; + InternalSignCabs; + InscribeMsi; + InternalSignMsi; + + + GetContainersToSign; + InternalSignContainers; + InscribeBundleEngine; + InternalSignBundleEngine; + InscribeBundle; + InternalSignBundle; + + + + CompileAndLink; + BeforeSigning; + $(InternalSignDependsOn); + AfterSigning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CombineHarvestProjects + + + + + + + + + + + + + + + + + + GetHarvestDirectoryContent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + GenerateCompileWithObjectPath + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignCabs + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignContainers + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignBundleEngine + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveReferences; + AssignCultures; + ReadPreviousBindInputsAndBuiltOutputs; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BeforeClean; + CleanReferencedProjects; + CoreClean; + AfterClean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GetTargetPath + + + + + + + + + + + + + + + + + + + + + + + + + true + $(TargetPath) + $(TargetFileName) + + + + + + PrepareForBuild;AssignCultures + true + + + + + + + + + + + + + + + + + + + + + + + + + + + AssignCultures + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msvs/RedisWindowsX64/lib/wix39-binaries/wix2010.targets b/msvs/RedisWindowsX64/lib/wix39-binaries/wix2010.targets new file mode 100644 index 0000000000000000000000000000000000000000..bd16785cb2bf9c9976a575ccc8421b7116ec6176 --- /dev/null +++ b/msvs/RedisWindowsX64/lib/wix39-binaries/wix2010.targets @@ -0,0 +1,3106 @@ + + + + + + $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Installer XML\3.9@InstallRoot) + $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.9@InstallRoot) + + + + + + + $(MSBuildProjectFullPath).user + + + + + + + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets + $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets + $(WixInstallPath)\WixTasks.dll + $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Lux.targets + $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Lux.targets + $(WixInstallPath)\LuxTasks.dll + + + + + $(MSBuildAllProjects);$(MSBuildProjectFullPath) + $(MSBuildAllProjects);$(WixTargetsPath) + $(MSBuildAllProjects);$(LuxTargetsPath) + $(MSBuildAllProjects);$(UserTargetsPath) + $(MSBuildAllProjects);$(CustomBeforeWixTargets) + $(MSBuildAllProjects);$(CustomAfterWixTargets) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + $(OutputPath)\ + $(MSBuildProjectName) + + bin\Debug\ + <_OriginalConfiguration>$(Configuration) + <_OriginalPlatform>$(Platform) + Debug + $(Configuration) + AnyCPU + <_OriginalOutputType>$(OutputType) + Package + true + + + + + <_InvalidConfigurationError Condition=" '$(SkipInvalidConfigurations)' != 'true' ">true + <_InvalidConfigurationWarning Condition=" '$(SkipInvalidConfigurations)' == 'true' ">true + + + + + obj\ + $(BaseIntermediateOutputPath)\ + .wixobj + $(MSBuildProjectFile).FileList.txt + $(MSBuildProjectFile).BindContentsFileList + .txt + $(MSBuildProjectFile).BindOutputsFileList + .txt + $(MSBuildProjectFile).BindBuiltOutputsFileList + .txt + $(MSBuildProjectFile).Signed.txt + + + + $(BaseIntermediateOutputPath)$(Configuration)\ + $(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\ + + + $(IntermediateOutputPath)\ + + + $(IntermediateOutputPath)cabcache\ + + + + + + + + $(WixInstallPath) + $(WixToolPath) + + + + + + + .msi + .msm + .pcp + .wixlib + .exe + + + + + $(OutputPath) + + $(OutDir)\ + + + $(OutDir) + $(PdbOutputPath)\ + + + $(MSBuildProjectName) + + + $(MSBuildProjectFile) + + + $(MSBuildProjectExtension) + + + $(MSBuildProjectDirectory)\ + + + $(ProjectDir)$(ProjectFileName) + + + .wixpdb + + + $(OutputName) + + + $(TargetName)$(TargetExt) + + + $(TargetName)$(TargetPdbExt) + + + $(Configuration) + + + $(Platform) + + + + + <_OutputPathItem Include="$(OutDir)" /> + <_IntermediateOutputPathItem Include="$(IntermediateOutputPath)" /> + + + + + + $([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(OutDir)`))`)) + $([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(PdbOutputPath)`))`)) + + + $(TargetDir)$(TargetFileName) + $(TargetPdbDir)$(TargetPdbName) + + + + + + + + + + *Undefined if not building from within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + *Undefined if not building a solution or within Visual Studio* + + + + + + + + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + true + false + true + false + + + + + + false + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + $(IntermediateOutputPath)Product.Generated.wxs + $(IntermediateOutputPath)Bundle.Generated.wxs + + + + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + + + + + $(HarvestNoLogo) + $(HarvestSuppressAllWarnings) + $(HarvestSuppressSpecificWarnings) + $(HarvestTreatWarningsAsErrors) + $(HarvestTreatSpecificWarningsAsErrors) + $(HarvestVerboseOutput) + $(HarvestAutogenerateGuids) + $(HarvestGenerateGuidsNow) + $(HarvestSuppressFragments) + $(HarvestSuppressUniqueIds) + $(HarvestTransforms) + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + $(Platform) + + + + + $(NoLogo) + $(BindFiles) + $(Pedantic) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(SuppressIntermediateFileVersionMatching) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + $(NoLogo) + $(BindFiles) + $(Pedantic) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(SuppressSchemaValidation) + $(SuppressIntermediateFileVersionMatching) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + + + + + + + + + + + + + + $(NoLogo) + $(SuppressAllWarnings) + $(SuppressSpecificWarnings) + $(TreatWarningsAsErrors) + $(TreatSpecificWarningsAsErrors) + $(VerboseOutput) + + + + + Configuration=$(ConfigurationName); + OutDir=$(OutDir); + Platform=$(PlatformName); + ProjectDir=$(ProjectDir); + ProjectExt=$(ProjectExt); + ProjectFileName=$(ProjectFileName); + ProjectName=$(ProjectName); + ProjectPath=$(ProjectPath); + TargetDir=$(TargetDir); + TargetExt=$(TargetExt); + TargetFileName=$(TargetFileName); + TargetName=$(TargetName); + TargetPath=$(TargetPath); + + + + + + + + + + + + + + + + + + + + + + + <_PleaseSetThisInProjectFile>Please set this in the project file before the <Import> of the wix.targets file. + <_OutputTypeDescription>The OutputType defines whether a Windows Installer package (.msi), PatchCreation (.pcp), merge module (.msm), wix library (.wixlib), or self-extracting executable (.exe) is being built. $(_PleaseSetThisInProjectFile) Possible values are 'Package', 'Module', 'Library', and 'Bundle'. + + + + + + + + + + + + + + + + + + + + + + + + BeforeBuild; + CoreBuild; + AfterBuild + + + + + + + + + + + + + + + BuildOnlySettings; + PrepareForBuild; + PreBuildEvent; + ResolveReferences; + AddCompilerDefineConstants; + CompileAndLink; + Signing; + GetTargetPath; + IncrementalClean; + PostBuildEvent + + + + + + + + + + + + + + BeforeRebuild; + Clean; + $(MSBuildProjectDefaultTargets); + AfterRebuild; + + + + BeforeRebuild; + Clean; + Build; + AfterRebuild; + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + GetTargetPath + + + + + + + + + + + + + + + + + + + + + + BeforeResolveReferences; + AssignProjectConfiguration; + ResolveProjectReferences; + ResolveWixLibraryReferences; + ResolveWixExtensionReferences; + AfterResolveReferences + + + + + + + + + + + + + + + + + + + + + + + <_ProjectReferenceWithConfiguration> + %(FullPath) + + + + + + + + + + + + + + + + + + + <_MSBuildProjectReference Include="@(_ProjectReferenceWithConfiguration)" Condition="'$(BuildingInsideVisualStudio)'!='true' and '@(_ProjectReferenceWithConfiguration)'!=''"/> + + + + + <_MSBuildProjectReferenceExistent Include="@(_MSBuildProjectReference)" Condition="Exists('%(Identity)')"/> + <_MSBuildProjectReferenceNonexistent Include="@(_MSBuildProjectReference)" Condition="!Exists('%(Identity)')"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + AssignCultures + + + + + + + + + + + PrepareForBuild; + + + + + + + + + + + + + + + + + + + + + + + + + + ResolveReferences; + AddSolutionDefineConstants; + AddProjectReferenceDefineConstants; + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ResolveReferences; + BeforeCompileAndLink; + _TimeStampBeforeCompileAndLink; + ConvertReferences; + ConvertBundleReferences; + Harvest; + GenerateCode; + Compile; + Lib; + Link; + _TimeStampAfterCompileAndLink; + AfterCompileAndLink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HarvestProjects; + HarvestDirectory; + HarvestFile; + + + + + + + + RefreshGeneratedFile; + RefreshBundleGeneratedFile + + + + + + + + GetMsmsToSign; + InternalSignMsm; + + + GetCabsToSign; + GetMsiToSign; + InternalSignCabs; + InscribeMsi; + InternalSignMsi; + + + GetContainersToSign; + InternalSignContainers; + InscribeBundleEngine; + InternalSignBundleEngine; + InscribeBundle; + InternalSignBundle; + + + + CompileAndLink; + BeforeSigning; + $(InternalSignDependsOn); + AfterSigning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> + %(_MSBuildProjectReferenceExistent.RefTargetDir) + Binaries;Symbols;Sources;Content;Satellites;Documents + %(_MSBuildProjectReferenceExistent.Name) + $(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs + + + + + + + + + + <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> + + + + + + + + + <_HeatProjectReference Include="@(_MSBuildProjectReferenceExistent)" Condition=" '%(_MSBuildProjectReferenceExistent.DoNotHarvest)' == '' "> + Binaries;Symbols;Sources;Content;Satellites;Documents + payloadgroup + $(IntermediateOutputPath)_%(_MSBuildProjectReferenceExistent.Filename).wxs + + + + + + + + + + <_GeneratedFiles Include="$(HarvestProjectsGeneratedFile)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(HarvestProjectsTransforms) + $(HarvestProjectsProjectOutputGroups) + $(HarvestProjectsDirectoryIds) + + + $(HarvestProjectsTransforms) + $(HarvestProjectsProjectOutputGroups) + $(HarvestProjectsDirectoryIds) + + + + + CombineHarvestProjects + + + + + + + + + + + + + + + + + $(HarvestDirectoryTransforms) + $(HarvestDirectoryComponentGroupName) + $(HarvestDirectoryDirectoryRefId) + $(HarvestDirectoryKeepEmptyDirectories) + $(HarvestDirectoryPreprocessorVariable) + $(HarvestDirectorySuppressCom) + $(HarvestDirectorySuppressRootDirectory) + $(HarvestDirectorySuppressRegistry) + + + + + + GetHarvestDirectoryContent + + + + + + + + + + + + + + + + + + + + + + + + + + $(HarvestFileTransforms) + $(HarvestFileComponentGroupName) + $(HarvestFileDirectoryRefId) + $(HarvestFilePreprocessorVariable) + $(HarvestFileSuppressCom) + $(HarvestFileSuppressRegistry) + $(HarvestFileSuppressRootDirectory) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + GenerateCompileWithObjectPath + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignCabs + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignContainers + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences; + CompileAndLink; + InternalSignBundleEngine + + + + + + + + + + + + + + PrepareForBuild; + ResolveWixExtensionReferences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild; + ResolveReferences; + AssignCultures; + ReadPreviousBindInputsAndBuiltOutputs; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BeforeClean; + CleanReferencedProjects; + CoreClean; + AfterClean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GetTargetPath + + + + + + + + + + + + + + + + + + + + + + + + + true + $(TargetPath) + $(TargetFileName) + + + + + + PrepareForBuild;AssignCultures + true + + + + + + + + + + %(_BuiltProjectOutputGroupOutputIntermediate.FullPath) + + + + + + + + + + + + + + + + + + + + AssignCultures + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + + + + + PrepareForBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +