diff --git a/WebsitePanel.Installer/Sources/Setup.WIX/Setup.WIX.wixproj b/WebsitePanel.Installer/Sources/Setup.WIX/Setup.WIX.wixproj
index 921c1241..d3178260 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIX/Setup.WIX.wixproj
+++ b/WebsitePanel.Installer/Sources/Setup.WIX/Setup.WIX.wixproj
@@ -8,8 +8,10 @@
2.0WebsitePanelInstallerPackage
- $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
- $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
+ $(ProjectDir)..\..\..\
+ $(BuildToolsPath)tools\wix\
+ $(BuildToolsPath)\tools\wix\wix.targets
+ wixtasks.dllbin\$(Configuration)\
@@ -72,11 +74,11 @@
- $(WixExtDir)\WixUIExtension.dll
+ $(WixExtDir)WixUIExtension.dllWixUIExtension
- $(WixExtDir)\WixNetFxExtension.dll
+ $(WixExtDir)WixNetFxExtension.dllWixNetFxExtension
diff --git a/WebsitePanel.Installer/Sources/VersionInfo.cs b/WebsitePanel.Installer/Sources/VersionInfo.cs
index bc5f49ca..04693c31 100644
--- a/WebsitePanel.Installer/Sources/VersionInfo.cs
+++ b/WebsitePanel.Installer/Sources/VersionInfo.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.18010
+// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -10,7 +10,6 @@
using System;
using System.Reflection;
-using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe
index 7812a335..2a081bbd 100644
Binary files a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe and b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe differ
diff --git a/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php
new file mode 100644
index 00000000..12ff3ad0
--- /dev/null
+++ b/WebsitePanel.WHMCSModule/includes/hooks/websitepanel_sync.php
@@ -0,0 +1,107 @@
+ 0)
+ {
+ // Include the WebsitePanel ES Class
+ require_once(ROOTDIR . '/modules/servers/websitepanel/websitepanel.class.php');
+
+ // Retrieve the WebsitePanel Addons module settings
+ $modSettings = websitepanel_sync_GetSettings();
+
+ // Create the WebsitePanel object instance
+ $wsp = new WebsitePanel($modSettings['username'], $modSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE));
+
+ // Get all WSP users with the old email
+ $items = (array)$wsp->get_users_paged_recursive(1, 'Email', $params['olddata']['email'], 0, 0, '');
+
+ // Load / parse the XML response
+ $xml = simplexml_load_string($items['any']);
+ $rootPath = $xml->NewDataSet;
+
+ // Total number of elements to update
+ $total = $rootPath->Table->Column1;
+
+ // Begin updating WebsitePanel accounts
+ for ($i = 0; $i < $total; $i++)
+ {
+ // Set the current root element and get the users details from WebsitePanel
+ // We cannot use the details provided by the get_users_paged_recursive method as it does not return all the required elements to fully update the user
+ $currentRoot = $rootPath->Table1->$i;
+ $userDetails = (array)$wsp->get_user_by_username($currentRoot->Username);
+
+ // Update the current user
+ $wsp->update_user_details($userDetails['RoleId'], (($userDetails['RoleId'] == 2) ? 'Reseller' : 'User'), $userDetails['StatusId'], $userDetails['Status'], $userDetails['LoginStatusId'], $userDetails['LoginStatus'], $userDetails['FailedLogins'], $userDetails['UserId'], $userDetails['OwnerId'], $userDetails['Created'], $userDetails['Changed'], $userDetails['IsDemo'], $userDetails['IsPeer'], $currentRoot->Comments, $params['lastname'], $userDetails['Username'], $userDetails['Password'], $params['firstname'], $params['email'], $params['phonenumber'], $params['postcode'], '', '', '', '', $params['country'], $params['address1'] . (!empty($params['address2']) ? " {$params['address2']}" : ''), $params['city'], $params['state'], TRUE, $params['companyname'], (($userDetails['RoleId'] == 2) ? TRUE : FALSE));
+
+ // Add log entry to client log
+ logactivity("WebsitePanel Sync - Account {$currentRoot->Username} contact details updated successfully", $params['userid']);
+ }
+ }
+}
+
+/* Update Client Contact Details - WebsitePanel */
+add_hook('ClientEdit', 1, 'websitepanel_sync_ClientEdit');
+
+/**
+ * websitepanel_addons_GetSettings
+ *
+ * @access public
+ * @return array
+ */
+function websitepanel_sync_GetSettings()
+{
+ $settings = array();
+
+ // Retrieve the settings from the modules configuration table
+ $results = select_query('tbladdonmodules', 'setting,value', array('module' => 'websitepanel_sync'));
+ while (($row = mysql_fetch_array($results)) != false)
+ {
+ $settings[$row['setting']] = $row['value'];
+ }
+ return $settings;
+}
\ No newline at end of file
diff --git a/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php
new file mode 100644
index 00000000..8822fa44
--- /dev/null
+++ b/WebsitePanel.WHMCSModule/modules/addons/websitepanel_sync/websitepanel_sync.php
@@ -0,0 +1,59 @@
+ 'WebsitePanel Sync Automation',
+ 'description' => 'Syncs WHMCS client details / contact changes with WebsitePanel',
+ 'version' => '1.0',
+ 'author' => 'Christopher York',
+ 'fields' => array('serverhost' => array('FriendlyName', 'Enterprise Server Host', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server hostname / IP address', 'Default' => '127.0.0.1'),
+ 'serverport' => array('FriendlyName', 'Enterprise Server Port', 'Type' => 'text', 'Size' => 4, 'Description' => 'Enterprise Server port', 'Default' => 9002),
+ 'serversecured' => array('FriendlyName', 'Use Secured Connection', 'Type' => 'yesno', 'Description' => 'Tick to use SSL secured connection'),
+ 'username' => array('FriendlyName', 'Username', 'Type' => 'text', 'Size' => 25, 'Description' => 'Enterprise Server username', 'Default' => 'serveradmin'),
+ 'password' => array('FriendlyName', 'Password', 'Type' => 'password', 'Size' => 25, 'Description' => 'Enterprise Server password')
+ )
+ );
+ return $configarray;
+}
\ No newline at end of file
diff --git a/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.class.php b/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.class.php
index a8690372..7c99db93 100644
--- a/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.class.php
+++ b/WebsitePanel.WHMCSModule/modules/servers/websitepanel/websitepanel.class.php
@@ -290,6 +290,27 @@ class WebsitePanel
return (array)$this->execute_server_method(WebsitePanel::SERVICEFILE_PACKAGES, 'GetMyPackages', array('userId' => $userid))->GetMyPackagesResult->PackageInfo;
}
+ /**
+ *
+ * @param int $userId User id
+ * @param string $filterColumn Column name to filter on
+ * @param string $filterValue Filter value
+ * @param int $statusId Status id
+ * @param int $roleId Role id
+ * @param string $sortColumn Column name to sort on
+ * @param int $startRow Row to start at
+ * @param int $maximumRows Maximum rows to return
+ */
+ public function get_users_paged_recursive($userId, $filterColumn, $filterValue, $statusId, $roleId, $sortColumn, $startRow = 0, $maximumRows = 999)
+ {
+ $params = array();
+ foreach (get_defined_vars() as $name => $value)
+ {
+ $params[$name] = $value;
+ }
+ return $this->execute_server_method(WebSitePanel::SERVICEFILE_USERS, 'GetUsersPagedRecursive', $params)->GetUsersPagedRecursiveResult;
+ }
+
/**
* WebsitePanel::UpdatePackageLiteral()
*
diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index 3528e295..64af03e2 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -6117,6 +6117,8 @@ BEGIN
UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE WebSiteID IS NOT NULL
+ UPDATE Domains SET IsDomainPointer=0, DomainItemID=NULL WHERE MailDomainID IS NOT NULL AND isDomainPointer=1
+
INSERT INTO Domains SELECT PackageID,
ZoneItemID,
DomainName,
diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.LocalizationToolkit.Wix/WebsitePanel.LocalizationToolkit.Wix.wixproj b/WebsitePanel/Sources/Tools/WebsitePanel.LocalizationToolkit.Wix/WebsitePanel.LocalizationToolkit.Wix.wixproj
index 948cea44..67638bd4 100644
--- a/WebsitePanel/Sources/Tools/WebsitePanel.LocalizationToolkit.Wix/WebsitePanel.LocalizationToolkit.Wix.wixproj
+++ b/WebsitePanel/Sources/Tools/WebsitePanel.LocalizationToolkit.Wix/WebsitePanel.LocalizationToolkit.Wix.wixproj
@@ -8,8 +8,10 @@
2.0WebsitePanel.LocalizationToolkitPackage
- $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
- $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
+ $(ProjectDir)..\..\..\..\
+ $(BuildToolsPath)tools\wix\
+ $(BuildToolsPath)\tools\wix\wix.targets
+ wixtasks.dllbin\$(Configuration)\
@@ -44,11 +46,11 @@
- $(WixExtDir)\WixUIExtension.dll
+ $(WixExtDir)WixUIExtension.dllWixUIExtension
- $(WixExtDir)\WixNetFxExtension.dll
+ $(WixExtDir)WixNetFxExtension.dllWixNetFxExtension
diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs
index bc5f49ca..04693c31 100644
--- a/WebsitePanel/Sources/VersionInfo.cs
+++ b/WebsitePanel/Sources/VersionInfo.cs
@@ -1,7 +1,7 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.18010
+// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -10,7 +10,6 @@
using System;
using System.Reflection;
-using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
diff --git a/WebsitePanel/Sources/VersionInfo.vb b/WebsitePanel/Sources/VersionInfo.vb
index d2c94d8f..1e9ef7fe 100644
--- a/WebsitePanel/Sources/VersionInfo.vb
+++ b/WebsitePanel/Sources/VersionInfo.vb
@@ -1,7 +1,7 @@
-'------------------------------------------------------------------------------
+'------------------------------------------------------------------------------
'
' This code was generated by a tool.
-' Runtime Version:4.0.30319.18010
+' Runtime Version:4.0.30319.17929
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
@@ -13,7 +13,6 @@ Option Explicit On
Imports System
Imports System.Reflection
-Imports System.Resources
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
+
+
+
+ WebsitePanel :: Web Platform Installer 4.0 Feed
+ ${ReleaseDate}
+
+ Outercurve Foundation
+ http://www.outercurve.org/
+
+ http://www.websitepanel.net/web/webpi/4.0/WebsitePanelFeed.xml
+
+ WebsitePanel
+ ${ProductTitle}
+ ${ProductVersion}
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ http://www.websitepanel.net/web/webpi/wsp/${ProductVersion}
+ ${ReleaseDate}
+ WebsitePanel is an easy to use control panel for Windows hosting. It allows you to manage multiple servers, it has a robust, scalable and secure architecture. With WebsitePanel you can easily manage all your web sites, FTP accounts, databases and other resources from a single place.
+ ${ReleaseDate}
+
+
+ http://www.websitepanel.net/files/wsp_screenshot.png
+
+
+ Outercurve Foundation
+ http://www.websitepanel.net/contact
+
+
+
+ Server
+ ProductSpotlight
+
+
+
+
+
+
+ %ProgramFiles%\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+ %ProgramFiles(x86)%\WebsitePanel Installer\WebsitePanel.Installer.exe
+
+
+
+
+
+
+
+ IIS7
+
+
+ ManagementService
+
+
+
+ NETFramework4
+
+
+
+ ASPNET45
+
+
+
+ ASPNET_REGIIS_NET4
+
+
+ SQLExpress
+
+
+
+ WDeploy
+
+
+
+
+
+
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ http://www.websitepanel.net/License
+ Terms of Use
+
+
+
+
+
+ 1
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ ${InstallerFileSize}
+ ${InstallerFileUrl}
+ ${InstallerFileSHA1}
+
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles%\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+ http://www.websitepanel.net/support
+
+
+
+ 2
+ en
+
+
+
+
+
+
+ 5
+ 2
+ 2
+
+
+ 5
+ 2
+
+
+
+
+ 6
+ 0
+ 0
+
+
+
+
+
+
+ http://www.websitepanel.net/License
+
+
+ ${InstallerFileSize}
+ ${InstallerFileUrl}
+ ${InstallerFileSHA1}
+
+
+
+
+ msiexec.exe
+ /i "%InstallerFile%" /q
+
+
+ %ProgramFiles(x86)%\WebsitePanel Installer\WebsitePanel.SilentInstaller.exe
+ /cname:"standalone"
+
+
+ 0
+
+ Installation operation completed successfully.
+
+
+
+ -1000
+
+ Failed to install WebsitePanel Standalone Setup package
+
+
+
+ -999
+
+ Unknown component name has been supplied
+
+
+
+ -998
+
+ Another instance of WebsitePanel installation is in progress
+
+
+
+ -997
+
+ Not enough permissions to install run the installation
+
+
+
+ -996
+
+ No input parameters supplied
+
+
+
+ -995
+
+ WebsitePanel Standalone Setup or one of its parts has been already installed
+
+
+
+
+
+ http://www.websitepanel.net/support
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml
index eac75038..a821fa72 100644
--- a/WebsitePanel/build.xml
+++ b/WebsitePanel/build.xml
@@ -1,17 +1,16 @@
-
- 2.0.0$(BUILD_NUMBER)$(BUILD_NUMBER)
- 2012-11-28
+ 2012-12-07..$(RootFolder)\WebsitePanel$(RootFolder)\WebsitePanel.Installer$(SetupTrunkFolder)\Build\$(BuildConfiguration)
+ $(RootFolder)\MSBuildCommunityTasks$(TrunkFolder)\Build\$(BuildConfiguration)$(TrunkFolder)\Deploy\$(BuildConfiguration)
@@ -19,13 +18,12 @@
$(RootFolder)\..\prev\$(BuildConfiguration)$(TrunkFolder)\Tools\Diff.exe
- "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -S (local)\SQLEXPRESS -E
+
+ "$(RootFolder)\tools\sqlcmd\sqlcmd.exe" -S (local)\SQLEXPRESS -E
+ "$(RootFolder)\tools\webdeploy\msdeploy.exe""C:\Program Files\7-Zip\7z.exe"
- "$(ProgramFiles)\IIS\Microsoft Web Deploy\msdeploy.exe"
- "$(ProgramFiles)\IIS\Microsoft Web Deploy V3\msdeploy.exe"
-
- WebsitePanel_build
+ WebsitePanel_buildserver=(local)\SQLEXPRESS;database=$(DataBaseName);Integrated Security=true;$(TrunkFolder)\Sources\WebsitePanel.WebPortal
@@ -266,7 +264,7 @@
-
+
@@ -295,7 +293,7 @@
-
+
@@ -636,24 +634,87 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(Version)
+
+
+ WebsitePanel $(Version)
+
+
+ $(ReleaseDate)T00:00:00Z
+
+
+ $(InstallerFileSize)
+
+
+ $(InstallerFileChecksum)
+
+
+ TODO: Evaluate MSI file URL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebsitePanel/deploy-debug.bat b/WebsitePanel/deploy-debug.bat
index 728d2204..7c77f1ce 100644
--- a/WebsitePanel/deploy-debug.bat
+++ b/WebsitePanel/deploy-debug.bat
@@ -1 +1,3 @@
-%windir%\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe build.xml /target:Deploy /p:BuildConfiguration=Debug /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
+%windir%\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe build.xml /target:BuildWebPlatformInstallerFeed /p:BuildConfiguration=Debug /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
+
+rem %windir%\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe build.xml /target:Deploy /p:BuildConfiguration=Debug /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
\ No newline at end of file
diff --git a/WebsitePanel/deploy-release.bat b/WebsitePanel/deploy-release.bat
index d83ba84b..da8c5bbf 100644
--- a/WebsitePanel/deploy-release.bat
+++ b/WebsitePanel/deploy-release.bat
@@ -1 +1,3 @@
-%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /p:BuildConfiguration=Release /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
+%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:BuildWebPlatformInstallerFeed /p:BuildConfiguration=Release /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
+
+rem %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.xml /target:Deploy /p:BuildConfiguration=Release /p:Version="2.0.0" /p:FileVersion="2.0.0.1" /p:VersionLabel="2.0.0.1" /v:n /fileLogger /m
\ No newline at end of file
diff --git a/WebsitePanel/Lib/CodePlex.WebServices.Client.dll b/tools/CodePlex/CodePlex.WebServices.Client.dll
similarity index 100%
rename from WebsitePanel/Lib/CodePlex.WebServices.Client.dll
rename to tools/CodePlex/CodePlex.WebServices.Client.dll
diff --git a/tools/MSBuildCommunityTasks/ICSharpCode.SharpZipLib.dll b/tools/MSBuildCommunityTasks/ICSharpCode.SharpZipLib.dll
new file mode 100644
index 00000000..77bafe8b
Binary files /dev/null and b/tools/MSBuildCommunityTasks/ICSharpCode.SharpZipLib.dll differ
diff --git a/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets
new file mode 100644
index 00000000..d90cb5b6
--- /dev/null
+++ b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets
@@ -0,0 +1,104 @@
+
+
+
+
+
+ $(MSBuildExtensionsPath)\MSBuildCommunityTasks
+ $(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.chm b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.chm
new file mode 100644
index 00000000..e9cfb77e
Binary files /dev/null and b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.chm differ
diff --git a/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.dll b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.dll
new file mode 100644
index 00000000..cf847a55
Binary files /dev/null and b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.dll differ
diff --git a/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.xml b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.xml
new file mode 100644
index 00000000..f9e69b1c
--- /dev/null
+++ b/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.xml
@@ -0,0 +1,6506 @@
+
+
+
+ MSBuild.Community.Tasks
+
+
+
+
+ Installs and register script mappings for ASP.NET
+
+ Uses the aspnet_regiis.exe tool included with the .NET Framework.
+
+ Install the latest version of ASP.NET on the server:
+
+ ]]>
+
+
+ Install the latest version of ASP.NET on the server, but do not update script maps:
+
+ ]]>
+
+
+ Install the script maps for ASP.NET 2.0 on a web directory on the default website:
+
+ ]]>
+
+
+ Install the script maps for ASP.NET 1.1 on a web directory on a non-default website:
+
+ ]]>
+
+
+ Install client side script only for the latest version:
+
+ ]]>
+
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Returns a string value containing the command line arguments
+ to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass
+ directly to the executable file.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Determines if the current property values can be used together
+
+ when properties can be used together.
+
+
+
+ The version of ASP.NET to install
+
+
+ The default behavior is to use the latest version of ASP.NET available on the computer.
+
+ Version
+ Version11ASP.NET v1.1
+ Version20ASP.NET v2.0
+ VersionLatestThe latest version of ASP.NET available
+
+
+
+
+
+ The method used to determine if ASP.NET script mappings should be applied
+
+
+ The default behavior is to register script mappings on all sites except those with a newer version of ASP.NET.
+
+ Value
+ NeverRegister ASP.NET on the computer without updating any script mappings.
+ IfNoneExistRegister script mappings only on for sites that do not have any existing ASP.NET script mappings (not available for ASP.NET v1.1)
+ UnlessNewerExistRegister script mappings on all sites except those with a newer version of ASP.NET.
+ AlwaysRegister script mappings on all sites, even if they already have a newer version of ASP.NET.
+
+
+
+
+
+ When , the aspnet_client scripts will be installed. No script mappings will be updated.
+
+ This cannot be if a value for or has been specified.
+
+
+
+ The web application that should have its script maps updated.
+
+
+ The path must be of the form W3SVC/[instance]/Root/[webdirectory], for example W3SVC/1/Root/SampleApp1.
+ As a shortcut, you can specify just the web directory name,
+ if the web directory is installed in the default website instance (W3SVC/1/Root).
+ You should not specify a value for when specifying a path.
+
+
+
+
+ When , script maps are applied recursively under .
+
+ This property is only valid when specifying a value for . It is by default.
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Generates an AssemblyInfo files
+
+
+ Generates a common version file.
+
+ ]]>
+ Generates a complete version file.
+
+ ]]>
+
+
+
+
+ The default value of .
+ The value is "AssemblyInfo.cs".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the code language.
+
+ The code language.
+
+
+
+ Gets or sets a value indicating whether [COMVisible].
+
+ true if [COMVisible]; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether [CLSCompliant].
+
+ true if [CLSCompliant]; otherwise, false.
+
+
+
+ Gets or sets the GUID.
+
+ The GUID.
+
+
+
+ Gets or sets the assembly title.
+
+ The assembly title.
+
+
+
+ Gets or sets the assembly description.
+
+ The assembly description.
+
+
+
+ Gets or sets the assembly configuration.
+
+ The assembly configuration.
+
+
+
+ Gets or sets the assembly company.
+
+ The assembly company.
+
+
+
+ Gets or sets the assembly product.
+
+ The assembly product.
+
+
+
+ Gets or sets the assembly copyright.
+
+ The assembly copyright.
+
+
+
+ Gets or sets the assembly trademark.
+
+ The assembly trademark.
+
+
+
+ Gets or sets the assembly culture.
+
+ The assembly culture.
+
+
+
+ Gets or sets the assembly version.
+
+ The assembly version.
+
+
+
+ Gets or sets the assembly file version.
+
+ The assembly file version.
+
+
+
+ Gets or sets the assembly informational version.
+
+ The assembly informational version.
+
+
+
+ Gets or sets the assembly key file.
+
+
+
+
+ Gets or sets the assembly key name.
+
+
+
+
+ Gets or sets the assembly delay sign value.
+
+
+
+
+ Gets or sets a value indicating whether to generate the ThisAssmebly class.
+
+
+
+
+ Gets or sets the output file.
+
+ The output file.
+
+
+
+ Changes the attributes of files and/or directories
+
+
+ Make file Readonly, Hidden and System.
+
+ ]]>
+ Clear Hidden and System attributes.
+
+ ]]>
+ Make file Normal.
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Gets or sets the list of files to change attributes on.
+
+ The files to change attributes on.
+
+
+
+ Gets or sets the list of directories to change attributes on.
+
+ The directories to change attributes on.
+
+
+
+ Gets or sets file's archive status.
+
+ true if archive; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is compressed.
+
+ true if compressed; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is encrypted.
+
+ true if encrypted; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is hidden, and thus is not included in an ordinary directory listing.
+
+ true if hidden; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is normal and has no other attributes set.
+
+ true if normal; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is read-only.
+
+ true if read-only; otherwise, false.
+
+
+
+ Gets or sets a value indicating file is a system file.
+
+ true if system; otherwise, false.
+
+
+
+ The list of the commans available to the GacUtil Task
+
+
+
+ Install the list of assemblies into the GAC.
+
+
+ Uninstall the list of assembly names from the GAC.
+
+
+
+ MSBuild task to install and uninstall asseblies into the GAC
+
+ Install a dll into the GAC.
+
+ ]]>
+
+ Uninstall a dll from the GAC.
+
+ ]]>
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Logs the starting point of the run to all registered loggers.
+
+ A descriptive message to provide loggers, usually the command line and switches.
+
+
+
+ Returns a string value containing the command line arguments to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass directly to the executable file.
+
+
+
+
+ Runs the exectuable file with the specified task parameters.
+
+
+ true if the task runs successfully; otherwise, false.
+
+
+
+
+ Gets or sets the command.
+
+ The command.
+
+
+
+
+ Gets or sets a value indicating whether to force reinstall of an assembly.
+
+ true if force; otherwise, false.
+
+
+
+ Gets or sets the assembly.
+
+ The assembly.
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Gets the with which to log errors.
+
+
+ The with which to log errors.
+
+
+
+ Compresses JavaScript source by removing comments and unnecessary
+ whitespace. It typically reduces the size of the script by half,
+ resulting in faster downloads and code that is harder to read.
+
+
+ This task does not change the behavior of the program that it is
+ compressing. The resulting code will be harder to debug as well as
+ harder to read.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the files to source-compress.
+
+
+
+
+ Encoding to use to read and write files.
+
+
+
+
+ Gets the files that were successfully source-compressed.
+
+
+
+
+ Copy a file or folder in Subversion
+
+
+ This is most useful for automatically tagging your source code during a build.
+ You can create a tag by copying a path from one server location to another.
+
+ Create a tag of the trunk with the current Cruise Control build number:
+
+
+
+ ]]>
+
+
+
+
+ Subversion client base class
+
+
+
+
+ Generates the SVN command.
+
+
+
+
+
+ Generates the SVN arguments.
+
+
+
+
+
+ Returns a string value containing the command line arguments to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass directly to the executable file.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ Logs the events from text output.
+
+ The single line.
+ The message importance.
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Logs the starting point of the run to all registered loggers.
+
+ A descriptive message to provide loggers, usually the command line and switches.
+
+
+
+ Gets or sets the command.
+
+ The command.
+
+
+
+ Gets or sets the arguments.
+
+ The arguments.
+
+
+
+ Gets or sets the username.
+
+ The username.
+
+
+
+ Gets or sets the password.
+
+ The password.
+
+
+
+ Gets or sets the verbose.
+
+ The verbose.
+
+
+
+ Gets or sets the force.
+
+ The force.
+
+
+
+ Gets or sets the message.
+
+ The message.
+
+
+
+ Gets or sets the repository path.
+
+ The repository path.
+
+
+
+ Gets or sets the local path.
+
+ The local path.
+
+
+
+ Gets or sets the targets.
+
+ The targets.
+
+
+
+ Gets or sets the revision.
+
+ The revision.
+
+
+
+ Gets or sets the command switchs.
+
+ The command switchs.
+
+
+
+ Gets the with which to log errors.
+
+
+ The with which to log errors.
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Generates the SVN command.
+
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ The path of the source file or folder that should be copied
+
+
+
+
+ The path to which the SourcePath should be copied
+
+
+
+
+ Describes the behavior of a Team Foundation Server
+
+
+
+
+ Retrieves the latest changeset ID associated with a path
+
+ A path on the local filesystem
+ Credentials used to authenticate against the serer
+
+
+
+
+ Handles all communication with the Team Foundation Server
+
+
+
+
+ Creates an instace of the TeamFoundationServer class
+
+ The local file path containing the TFS libraries. null if TFS is in the GAC.
+
+
+
+ Retrieves the latest changeset ID associated with a path
+
+ A path on the local filesystem
+ Credentials used to authenticate against the serer
+
+
+
+
+ Exceptions returned by the Team Foundation Server
+
+
+
+
+ Creates a new instance of the exception
+
+
+
+
+ Creates a new instance of the exception
+
+ A description of the exception
+
+
+
+ Determines the changeset in a local Team Foundation Server workspace
+
+
+
+
+ Runs the exectuable file with the specified task parameters.
+
+
+ true if the task runs successfully; otherwise, false.
+
+
+
+
+ The user to authenticate on the server
+
+ Leave empty to use the credentials of the current user.
+
+
+
+ The password for the user to authenticate on the server
+
+ Leave empty to use the credentials of the current user.
+
+
+
+ The domain of the user to authenticate on the server
+
+ Leave empty to use the credentials of the current user.
+
+
+ Path to local working copy.
+
+
+
+ The latest changeset ID in the local path
+
+
+
+
+ The location of the Team Foundation Server client assemblies. Leave empty when the client is installed in the Global Assembly Cache.
+
+
+
+
+ Performs multiple updates on an XML file
+
+
+ XmlMassUpdate allows to to specify multiple changes to make to an XML file (the . By default, the changes are applied to the , but you can create a new file by providing the attribute. The change instructions are specified using XML in the . If the does not mirror the structure of the exactly, you can specify the and XPath expressions which determine how the files should be mapped to each other.
+ Any element within the will find the corresponding element in the . If it does not exist, it will be created with all of its attributes. If it does exist, the attributes will be added or updated as specified.
+
+ Any attribute declared within the will not be copied to the modified file. Valid attributes are key and action. The key attribute allows you to define an attribute to use as the identifying attribute when you only want to update a single element, and multiple elements with the same name exist. You can also use the action="remove" attribute to specify that an element should be deleted instead of updated.
+
+
+ These examples will demonstrate how to make multiple updates to a XML file named web.config. It looks like:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+ You can update the file using instructions from an external file (specified as the ):
+
+ ]]>
+
+ The is named changes.xml and contains:
+
+
+
+
+
+
+
+ ]]>
+
+
+ You can also provide the update instructions within the MSBuild project file itself. It takes advantage of the MSBuild ProjectExtensions element which allows you to add XML to a project file that will be ignored by the MSBuild engine. This example also demonstrates how to use :
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+ The following example demonstrates how to deal with "keyed" elements. When you need to update an element, and multiple elements exist with the same name, it must be be differentied by one of its attributes. You designate the differentiating attribute using the "key" attribute declared in the .
+ If an element matching the keyed attribute is not found, a new element will be created (DefaultSort in the example). This example also demonstrates creating a new file with the merged changes instead of modifying the original file.
+
+ ]]>
+
+ Using a changes.xml file with the following contents:
+
+
+
+
+
+
+ ]]>
+
+
+ Use a changes.xml file with the following contents to demonstrate how to remove an element from the updated file:
+
+
+
+
+
+
+ ]]>
+
+
+ You can also specify the changes to apply from within the target document. By making use of the property, you can store multiple sets of changes to apply based on runtime conditions.
+ Consider the following source web.config file:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+ You could use the following task definition, which relies on a property "TargetEnvironment" to determine which set of changes to apply:
+
+ ]]>
+
+ You will need to provide a value of "test" or "prod" to the TargetEnvironment property. The property can be defined in a PropertyGroup section of the MSBuild file, or passed as a command-line parameter.
+
+
+
+
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Returns as an .
+
+ This method is not intended for use by consumers. It is exposed for testing purposes.
+
+
+
+
+ Returns as an .
+
+ This method is not intended for use by consumers. It is exposed for testing purposes.
+
+
+
+
+ Creates from the specified
+
+ The XML to save to a file
+ This method is not intended for use by consumers. It is exposed for testing purposes.
+
+
+
+
+ The original file whose content is to be updated
+
+ This task is currently under construction and not necessarily feature complete.
+
+
+
+ The file containing the list of updates to perform
+
+
+
+
+ The file created after performing the updates
+
+
+
+
+ The XPath expression used to locate the list of substitutions to perform
+
+ When not specified, the default is the document root: /
+ When there is a set of elements with the same name, and you want to update
+ a single element which can be identified by one of its attributes, you need to include an attribute
+ named 'key' in the namespace urn:msbuildcommunitytasks-xmlmassupdate. The value of the
+ attribute is the name of the attribute that should be used as the unique identifier.
+
+
+
+ The XPath expression identifying root node that substitions are relative to
+
+ When not specified, the default is the document root: /
+
+
+
+ A collection of prefix=namespace definitions used to query the XML documents
+
+
+ Defining multiple namespaces:
+
+
+/>]]>
+
+
+
+
+
+ The full path of the file containing content updated by the task
+
+
+
+
+ The full path of the file containing substitutions used by the task
+
+
+
+
+ The full path of the file containing the results of the task
+
+
+
+
+ The namespace used for XmlMassUpdate pre-defined attributes
+
+ Evaluates to: urn:msbuildcommunitytasks-xmlmassupdate
+ Attributes decorated with this namespace are used to control how a substitutions element
+ or attribute is handled during the update. For example, the key attribute is used to identify the
+ attribute on an element that uniquely identifies the element in a set.
+
+
+
+ Sets an application mapping for a filename extension on an existing web directory.
+
+ Map the .axd extension to the lastest version of ASP.NET:
+
+ ]]>
+
+ Map GET requests to the .rss extension to a specific executable:
+
+ ]]>
+
+
+
+
+ Base task for any IIS-related task.
+
+ Stores the base logic for gathering the IIS version and server and port checking. This
+ base task also stores common properties for other related tasks.
+
+
+
+ IIS version.
+
+
+
+
+ Gets the IIS version.
+
+ The for IIS.
+
+
+
+
+ Gets the remote machine OS version.
+
+ Returns a of the operating system.
+
+
+
+
+ Verifies that the IIS root exists based on the and .
+
+
+
+
+
+ Helper method for that verifies the server port exists.
+
+ The site to verify the port.
+ Boolean value indicating the status of the port check.
+
+
+
+
+ Gets or sets the name of the server. The default value is 'localhost'.
+
+ The name of the server.
+
+
+
+ Gets or sets the server port.
+
+ The server port.
+
+
+
+ Gets or sets the IIS server path.
+
+ Is in the form 'IIS://localhost/W3SVC/1/Root'.
+ The IIS server path.
+
+
+
+ Gets or sets the application path.
+
+ Is in the form '/LM/W3SVC/1/Root'.
+ The application path.
+
+
+
+ Gets or sets the IIS application pool path.
+
+ Is in the form 'IIS://localhost/W3SVC/AppPools'.
+ The IIS application pool path.
+
+
+
+ Gets or sets the username for the account the task will run under. This property
+ is needed if you specified a for a remote machine.
+
+ The username of the account.
+
+
+
+ Gets or sets the password for the account the task will run under. This property
+ is needed if you specified a for a remote machine.
+
+ The password of the account.
+
+
+
+ Defines the possible IIS versions supported by the task.
+
+
+
+
+ IIS version 4.x
+
+
+
+
+ IIS version 5.x
+
+
+
+
+ IIS version 6.x
+
+
+
+
+ Defines the possible application pool actions to be performed.
+
+
+
+
+ Recycles an application pool.
+
+
+
+
+ Stops and restarts the application pool.
+
+
+
+
+ Starts the application pool.
+
+
+
+
+ Stops the application pool.
+
+
+
+
+ Defines the current application pool state.
+
+
+
+
+ The application pool is starting.
+
+
+
+
+ The application pool has started.
+
+
+
+
+ The application pool is stopping.
+
+
+
+
+ The application pool has stopped.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the virtual directory.
+
+ The name of the virtual directory.
+
+
+
+ The filename extension that will be mapped to an executable.
+
+
+
+
+ The full path to the executable used to respond to requests for a Uri ending with
+
+ This property is required when is false (the default).
+
+
+
+ Indicates whether should be mapped to the ASP.NET runtime.
+
+ When true, is set to aspnet_isapi.dll
+ in the installation folder of the latest version of the .NET Framework.
+
+
+
+ A comma-separated list of the HTTP verbs to include in the application mapping.
+
+ The default behavior (when this property is empty or unspecified) is to map all verbs.
+ A semi-colon-separated list will also be recognized, allowing you to use an MSBuild Item.
+
+
+
+ Set to true when you want the application to run in a directory without Execute permissions.
+
+
+
+
+ Set to true to instruct the Web server to verify the existence of the requested script file and to ensure that the requesting user has access permission for that script file.
+
+
+
+
+ Reads and modifies a web directory configuration setting.
+
+ Display the file system path of the MyWeb web directory:
+
+
+
+
+ ]]>
+
+ Set the default document for the MyWeb directory to Default.aspx:
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the virtual directory.
+
+ The name of the virtual directory.
+
+
+
+ Gets or sets the configuration setting to read or modify.
+
+
+
+
+ Gets or sets the value of on the web directory
+
+
+
+
+ A wrapper for the ILMerge tool.
+
+
+
+ The ILMerge tool itself must be installed separately.
+ It is available here.
+
+
+ The command line options "/wildcards" and "/lib" of ILMerge are not supported,
+ because MSBuild is in charge of expanding wildcards for item groups.
+
+
+
+ This example merges two assemblies A.dll and B.dll into one:
+
+ $(testDir)\ilmergetest.dll
+ $(testDir)\keypair.snk
+ $(testDir)\ExcludeTypes.txt
+ $(testDir)\ilmergetest.log
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Gets the standard installation path of ILMerge.exe.
+
+
+ If ILMerge is not installed at its standard installation path,
+ provide its location to .
+
+ Returns [ProgramFiles]\Microsoft\ILMerge.exe.
+
+
+
+ Returns a string value containing the command line arguments
+ to pass directly to the executable file.
+
+
+ Returns a string value containing the command line arguments
+ to pass directly to the executable file.
+
+
+
+
+ Gets or sets the names of public types
+ to be renamed when they are duplicates.
+
+
+ Set to an empty item group to allow all public types to be renamed.
+ Don't provide this parameter if no duplicates of public types are allowed.
+ Corresponds to command line option "/allowDup".
+ The default value is null.
+
+
+
+
+ Gets or sets the flag to treat an assembly
+ with a zero PeKind flag
+ (this is the value of the field listed as .corflags in the Manifest)
+ as if it was ILonly.
+
+
+ Corresponds to command line option "/zeroPeKind".
+ The default value is false.
+
+
+
+
+ Gets or sets the attribute assembly
+ from whre to get all of the assembly-level attributes
+ such as Culture, Version, etc.
+ It will also be used to get the Win32 Resources from.
+
+
+ This property is mutually exclusive with .
+
+ When not specified, then the Win32 Resources from the primary assembly
+ are copied over into the target assembly.
+
+ Corresponds to command line option "/attr".
+ The default value is null.
+
+
+
+
+ Gets or sets the flag to indicate
+ whether to augment the list of input assemblies
+ to its "transitive closure".
+
+
+
+ An assembly is considered part of the transitive closure if it is referenced,
+ either directly or indirectly,
+ from one of the originally specified input assemblies
+ and it has an external reference to one of the input assemblies,
+ or one of the assemblies that has such a reference.
+
+ Corresponds to command line option "/closed".
+ The default value is false.
+
+
+
+
+ Gets or sets the flag to indicate
+ whether to copy the assembly level attributes
+ of each input assembly over into the target assembly.
+
+
+
+ Any duplicate attribute overwrites a previously copied attribute.
+ The input assemblies are processed in the order they are specified.
+
+ This parameter is mutually exclusive with .
+ Corresponds to command line option "/copyattrs".
+ The default value is false.
+
+
+
+
+ Gets or sets the flag to indicate
+ whether to preserve any .pdb files
+ that are found for the input assemblies
+ into a .pdb file for the target assembly.
+
+
+ Corresponds to command line option "/ndebug".
+ The default value is true.
+
+
+
+
+ Gets or sets the flag to indicate
+ whether the target assembly will be delay signed.
+
+
+ This property can be set only in conjunction with .
+ Corresponds to command line option "/delaysign".
+ The default value is false.
+
+
+
+
+ Gets or sets the file
+ that will be used to identify types
+ that are not to have their visibility modified.
+
+
+
+ If an empty item group is provided,
+ then all types in any assembly other than the primary assembly are made non-public.
+
+ Omit this parameter to prevent ILMerge from modifying the visibility of any types.
+
+ The contents of the file should be one per line.
+ The regular expressions are matched against each type's full name,
+ e.g., System.Collections.IList.
+ If the match fails, it is tried again with the assembly name (surrounded by square brackets)
+ prepended to the type name.
+ Thus, the pattern \[A\].* excludes all types in assembly A from being made non-public.
+ The pattern N.T will match all types named T in the namespace named N
+ no matter what assembly they are defined in.
+
+ Corresponds to command line option "/internalize".
+ The default value is null.
+
+
+
+
+ Gets or sets the input assemblies to merge.
+
+
+
+
+ Gets or sets the .snk file
+ to sign the target assembly.
+
+
+ Can be used with .
+ Corresponds to command line option "/keyfile".
+ The default value is null.
+
+
+
+
+ Gets or sets a log file
+ to write log messages to.
+
+
+
+ If an empty item group is provided,
+ then log messages are writte to .
+
+ Corresponds to command line option "/log".
+ The default value is null.
+
+
+
+
+ Gets or sets the target assembly.
+
+
+ Corresponds to command line option "/out".
+
+
+
+
+ Gets or sets the flag to indicate
+ whether external assembly references in the manifest
+ of the target assembly will use public keys (false)
+ or public key tokens (true).
+
+
+ Corresponds to command line option "/publickeytokens".
+ The default value is false.
+
+
+
+
+ Gets or sets the .NET framework version for the target assembly.
+
+
+ Valid values are "v1", "v1.1", "v2".
+ Corresponds to the first part of command line option "/targetplatform".
+ The default value is null.
+
+
+
+
+ Gets or sets the directory in which mscorlib.dll is to be found.
+
+
+ Can only be used in conjunction with .
+ Corresponds to the second part of command line option "/targetplatform".
+ The default value is null.
+
+
+
+
+ Gets or sets the indicator
+ whether the target assembly is created as a library (Dll),
+ a console application (Exe) or as a Windows application (WinExe).
+
+
+ Corresponds to command line option "/target".
+ The default value is the same kind as that of the primary assembly.
+
+
+
+
+ Gets or sets the version number of the target assembly.
+
+
+ The parameter should look like 6.2.1.3.
+ Corresponds to command line option "/ver".
+ The default value is null.
+
+
+
+
+ Gets or sets the flag to indicate
+ whether to merge XML documentation files
+ into one for the target assembly.
+
+
+ Corresponds to command line option "/xmldocs".
+ The default value is false.
+
+
+
+
+ Gets the name of the executable file to run.
+
+
+
+
+ Installs assemblies.
+
+
+ Uses InstallUtil.exe to execute the
+ Install
+ method of
+ Installer
+ classes contained within specified assemblies.
+
+
+ Install multiple assemblies by specifying the file names:
+
+
+]]>
+
+
+ Install an assembly using the assembly name. Also disable the log file by setting it to a single space:
+
+
+]]>
+
+
+ You can easily chain an install to the result of a build:
+
+
+
+
+
+]]>
+
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Returns a string value containing the command line arguments
+ to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass
+ directly to the executable file.
+
+
+
+
+ The assemblies to process, identified by their assembly name.
+
+
+
+
+ The assemblies to process, identified by their filename.
+
+
+
+
+ The file to write installation progress to.
+
+ Set to a single space to disable logging to a file.
+
+ If not specified, the default is to log to [assemblyname].installLog
+
+
+
+
+
+ If an exception occurs at any point during installation, the call
+ stack will be printed to the log.
+
+
+
+
+ Determines whether assemblies are installed or uninstalled.
+
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+ Uninstalls assemblies.
+
+ Uses InstallUtil.exe to execute the
+ Uninstall
+ method of
+ Installer
+ classes contained within specified assemblies.
+
+ Uninstall multiple assemblies by specifying the file names:
+
+ ]]>
+
+ Unnstall an assembly using the assembly name. Also disable the log file by setting it to a single space:
+
+ ]]>
+
+
+
+
+ Determines whether assemblies are installed or uninstalled.
+
+
+
+
+ Performs the modulo operation on numbers.
+
+
+ The modulo operation finds the remainder of the division of one number by another.
+ When the second number (modulus) is a fractional value, the result can be a fractional value.
+
+ Equivalent to the % operator in C# or the Mod operator in Visual Basic.
+
+
+ Numbers evenly divide:
+
+
+
+
+
+]]>
+
+ Above example will display:
+ 12 modulo 4 = 0
+
+ Division on the numbers produces a remainder:
+
+
+
+
+
+]]>
+
+ Above example will display:
+ 14 modulo 4 = 2
+
+ Modulus is a fractional value:
+
+
+
+
+
+]]>
+
+ Above example will display:
+ 12 modulo 3.5 = 1.5
+
+
+
+
+ Math task base class
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Strings array to decimal array.
+
+ The numbers.
+
+
+
+
+ Gets or sets the numbers to work with.
+
+ The numbers.
+
+
+
+ Gets or sets the result.
+
+ The result.
+
+
+
+ Gets or sets the numeric format.
+
+ The numeric format.
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Displays a message on the console and waits for user input.
+
+ It is important to note that the message is not written to the MSBuild logger,
+ it is always written to the console, no matter which logger is configured.
+ This task requires user input from the console. Do not use this task for projects
+ that will be executed unattended. It is recommended that you always add a Condtion so that
+ this task is only enabled when a custom property is set through the command line.
+ This will ensure that the other users do not attempt to execute the task in unattended mode.
+
+ Pause the build if the interactive property is set:
+
+
+
+ ]]>
+
+ Obtain user input during the build:
+ (Note: in most cases, it is recommended that users instead provide custom values to your build through the /property argument of msbuild.exe)
+
+
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ The message to display in the console.
+
+
+
+
+ The text entered at the console.
+
+
+
+
+ Base class for Regex tasks
+ Handles public properties for Input, Expression, Options and Output
+
+
+
+
+ Regex expression
+
+
+
+
+ Input, list of items to perform the regex on
+
+
+
+
+ Regex options as strings corresponding to the RegexOptions enum:
+ Compiled
+ CultureInvariant
+ ECMAScript
+ ExplicitCapture
+ IgnoreCase
+ IgnorePatternWhitespace
+ Multiline
+ None
+ RightToLeft
+ Singleline
+
+
+
+
+
+ Results of the Regex transformation.
+
+
+
+
+ Options converted to RegexOptions enum
+
+
+
+
+ Task to filter an Input list with a Regex expression.
+ Output list contains items from Input list that matched given expression
+
+ Matches from TestGroup those names ending in a, b or c
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Performs the Match task
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Task to replace portions of strings within the Input list
+ Output list contains all the elements of the Input list after
+ performing the Regex Replace.
+
+
+ 1st example replaces first occurance of "foo." with empty string
+ 2nd example replaces occurance of "foo." after character 6 with "oop." string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Performs the Replace task
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ String replacing matching expression strings in input list.
+ If left empty matches in the input list are removed (replaced with empty string)
+
+
+
+
+ Number of matches to allow on each input item.
+ -1 indicates to perform matches on all matches within input item
+
+
+
+
+ Position within the input item to start matching
+
+
+
+
+ Different ways to specify the assembly in a UsingTask element.
+
+
+
+
+ Assembly file name (Default): <UsingTask AssemblyFile="foo.dll" />
+
+
+
+
+ Assembly location: <UsingTask AssemblyName="foo" />
+
+
+
+
+ Assembly Name: <UsingTask AssemblyFile="bin\debug\foo.dll" />
+
+
+
+
+ Assembly fully qualified name: <UsingTask AssemblyName="foo.dll,version ...." />
+
+
+
+
+ A Task that generates a XSD schema of the tasks in an assembly.
+
+
+ Creates schema for MSBuild Community Task project
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the list of path to analyse.
+
+
+
+
+ Gets or sets the output path for the generated files.
+
+
+
+
+ Gets the list of path to the generated XSD schema.
+
+
+
+
+ Gets or sets a value indicating if the task list (using UsingTask)
+ has to be genereted.
+
+
+
+
+ Gets or sets a value indicating how the assembly is specified in the
+ UsingTask element.
+
+
+
+
+
+ Gets or sets a value indicating wheter documentation should be ignored
+ even if available (Default is false).
+
+
+
+
+ Gets the path to the task list if it was generated.
+
+
+
+
+ Gets or sets a value indicating if the
+ MsBuild schema inclusing should be ignored
+
+
+
+
+ Gets or sets a list of included schemas
+
+
+
+
+ Task to get paths to projects and project names from VS2005 solution file
+
+
+ Returns project name and relative path from test solution
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Perform task
+
+ true on success
+
+
+
+ Output list contains TaskItems of project filenames contained within the given solution.
+ Metadata tag "ProjectName" contains name of project.
+
+
+
+
+ Name of Solution to get Projects from
+
+
+
+
+ MSBuild task to execute DDL and SQL statements.
+
+ Requires the the SQL Server libraries and dynamically loads the
+ required Microsoft.SqlServer.ConnectionInfo assembly.
+
+
+ Server=localhost;Integrated Security=True
+
+
+
+
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ The connection string
+
+
+
+
+ Gets or sets the DDL/SQL files.
+
+ The assemblies.
+
+
+
+ Output the return count/values
+
+
+
+
+ Gets or sets the batch delimter string.
+
+ Default is "GO" for T-SQL.
+
+
+
+ The kind of Subversion node. The names match the text output
+ by "svn info".
+
+
+
+
+ Node is a file
+
+
+
+
+ Node is a directory
+
+
+
+
+ Unknown node type
+
+
+
+
+ The Subversion schedule type.
+
+
+
+
+ Normal schedule
+
+
+
+
+ Unknown schedule.
+
+
+
+
+ Run the "svn info" command and parse the output
+
+
+ This example will determine the Subversion repository root for
+ a working directory and print it out.
+
+
+
+
+
+
+ ]]>
+
+ You can retrieve Subversion information for a or .
+ If you do not provide a value for or , the current directory is assumed.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Reset all instance variables to their default (unset) state.
+
+
+
+
+ Execute the task.
+
+ true if execution is successful, false if not.
+
+
+
+ Logs the events from text output.
+
+ The single line.
+ The message importance.
+
+
+
+ Return the repository root or null if not set by Subversion.
+
+
+
+
+ Return the repository UUID value from Subversion.
+
+
+
+
+ The Subversion node kind.
+
+
+
+
+
+ The author who last changed this node.
+
+
+
+
+ The last changed revision number.
+
+
+
+
+ The date this node was last changed.
+
+
+
+
+ The Subversion schedule type.
+
+
+
+
+
+ MSBuild task that replaces tokens in a template file and writes out a new file.
+
+
+
+
+ MSBuild Community Tasks
+
+
+
+
+ ]]>
+
+ Tokens in the template file are formatted using ${var} syntax and names are not
+ case-sensitive, so ${Token} and ${TOKEN} are equivalent.
+
+
+
+ Meta data tag used for token replacement
+
+
+
+
+ Default constructor. Creates a new TemplateFile task.
+
+
+
+
+ Executes the task.
+
+ Success or failure of the task.
+
+
+
+ The token replaced template file.
+
+
+
+
+ The full path to the output file name. If no filename is specified (the default) the
+ output file will be the Template filename with a .out extension.
+
+
+
+
+ The template file used. Tokens with values of ${Name} are replaced by name.
+
+
+
+
+ List of tokens to replace in the template. Token name is taken from the TaskItem.ItemSpec and the
+ replacement value comes from the ReplacementValue metadata of the item.
+
+
+
+
+ Gets the current date and time.
+
+
+ See
+
+ DateTimeFormatInfo
+ for the syntax of the format string.
+
+ Using the Time task to get the Month, Day,
+ Year, Hour, Minute, and Second:
+
+
+
+
+
+
+
+
+ ]]>
+ Set property "BuildDate" to the current date and time:
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the format string
+ for output parameter .
+
+
+ See
+
+ DateTimeFormatInfo
+ for the syntax of the format string.
+
+
+
+
+ Gets the month component of the date represented by this instance.
+
+
+
+
+ Gets the day of the month represented by this instance.
+
+
+
+
+ Gets the year component of the date represented by this instance.
+
+
+
+
+ Gets the hour component of the date represented by this instance.
+
+
+
+
+ Gets the minute component of the date represented by this instance.
+
+
+
+
+ Gets the seconds component of the date represented by this instance.
+
+
+
+
+ Gets the milliseconds component of the date represented by this instance.
+
+
+
+
+ Gets the number of ticks that represent the date and time of this instance.
+
+
+
+
+ Gets or sets a value that indicates whether the time represented by this instance is based
+ on local time, Coordinated Universal Time (UTC), or neither.
+
+
+ Possible values are:
+
+ Local (default),
+ Utc,
+ Unspecified
+
+
+
+
+
+
+ Gets the time of day for this instance.
+
+
+
+
+ Gets the day of the year represented by this instance.
+
+
+
+
+ Gets the day of the week represented by this instance.
+
+
+
+
+ Gets the value of this instance to its equivalent string representation.
+ If input parameter is provided,
+ the value is formatted according to it.
+
+
+
+
+ Gets the value of this instance to its equivalent short date string representation.
+
+
+
+
+ Gets the value of this instance to its equivalent long date string representation.
+
+
+
+
+ Gets the value of this instance to its equivalent short time string representation.
+
+
+
+
+ Gets the value of this instance to its equivalent long time string representation.
+
+
+
+
+ Gets the internal time value.
+
+
+
+
+ Represents a single XmlNode selected using an XML task.
+
+
+
+
+ Initializes a new instance of an XmlNodeTaskItem
+
+ The selected XmlNode
+ The prefix to attach to the reserved metadata properties.
+
+
+
+ Returns a string representation of the XmlNodeTaskItem.
+
+
+
+
+
+ Returns the ItemSpec when the XmlNodeTaskItem is explicitly cast as a
+
+ The XmlNodeTaskItem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reads a value or values from lines of XML
+
+
+ Use the Lines property (possibly populated from the the ReadLinesFromFile task) if you want to perform multiple
+ queries against some XML in memory. Use the XmlFileName property to query a large XML file.
+
+ An XPath expression can return multiple nodes in the collection.
+ The number of nodes returned is availabe in the output TaskParameter.
+
+
+ When the XPath expression resolves to an element node, all of the
+ attributes of the element are added as metadata to the returned .
+ In addition, some reserved metadata properties are available on all element nodes.
+ They are all prefixed with the ,
+ which is a single underscore (_) by default.
+
+
+ Reserved Property
+
+
+ _value
+ The value of the node (non-xml text between the opening and closing tags).
+
+
+ _innerXml
+ The markup representing the children of this node.
+
+
+ _outerXml
+ The markup representing this node and all its child nodes.
+
+
+
+
+ Read an attribute value by selecting it with an XPath expression:
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+ Read attribute values (from an XML file) using item metadata on a selected element node:
+
+
+
+
+
+
+
+]]>
+
+
+ Read an element value (requires use of the reserved metadata property "_value"):
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ The lines of a valid XML document
+
+
+
+
+ Gets or sets the name of an XML file to query
+
+ The full path of the XML file.
+
+
+
+ A collection of prefix=namespace definitions used to query the XML document
+
+
+ Defining multiple namespaces:
+
+
+/>]]>
+
+
+
+
+
+ The query used to identify the values in the XML document
+
+
+
+
+ The values selected by
+
+
+
+
+ The number of values returned in
+
+
+
+
+ The string that is prepended to all reserved metadata properties.
+
+ The default value is a single underscore: '_'
+ All attributes of an element node are added as metadata to the returned ITaskItem,
+ so this property can be used to avoid clashes with the reserved properties.
+ For example, if you selected the following node:
+ ]]>
+ the _value attribute would clash with the value reserved property, when using
+ the default prefix. If you set the ReservedMetaDataPrefix to another value (two underscores '__')
+ there would be no clash. You would be able to select the attribute using %(item._value)
+ and the value of the node using %(item.__value).
+
+
+
+ Provides methods used by all of the XML tasks
+
+
+
+
+ Concatenates the string value of a list of ITaskItems into a single string
+
+ The items to concatenate
+ A single string containing the values from all of the items
+
+
+
+ Uses the prefix=namespace definitions in to populate
+
+ The to populate.
+ The prefix=namespace definitions.
+
+
+
+ A task to merge and transform a set of xml files.
+
+
+
+ The xml files of parameter
+ are merged into one xml document,
+ wrapped with a root tag
+
+
+ If only one input file is provided,
+ merging and wrapping can be omitted
+ by setting to an empty string.
+
+
+ The root tag can be given any number of attributes
+ by providing a list of semicolon-delimited name/value pairs
+ to parameter .
+ For example: RootAttributes="foo=bar;date=$(buildDate)"
+
+
+ Parameter defaults to
+ one attribute with a name specified by ,
+ and a local time stamp as value.
+ To suppress the default value, an empty parameter
+ RootAttributes=""
+ must be specified explicitely.
+
+
+ The xsl transformation file
+ specified by parameter
+ is applied on the input.
+
+
+ The
+ can be given any number of metadata,
+ which will be handed to the xsl transformation
+ as parameters.
+
+
+ The output is written to the file
+ specified by parameter .
+
+
+ This example for generating a report
+ from a set of NUnit xml results:
+
+
+
+ $(project)
+ $(configuration)
+ $(MSBuildProjectFullPath)
+ $(MSBuildBinPath)
+ $(MSBuildCommunityTasksPath)\$(nunitReportXsl)
+
+
+
+
+
+]]>
+
+
+ This examples shows all available task attributes:
+
+
+
+
+
+]]>
+
+
+
+
+
+ The name of the default attribute
+ of the .
+ The value is "created",
+ and the attribute will contain a local time stamp.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ Returns true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the xml input files.
+
+
+
+
+ Gets or sets the xml tag name
+ of the root tag wrapped
+ around the merged xml input files.
+
+
+
+
+ Gets or sets the list of
+ semicolon-delimited name/value pairs
+ of the .
+ For example: RootAttributes="foo=bar;date=$(buildDate)"
+
+
+
+
+ Gets or sets the path of the
+ xsl transformation file to apply.
+
+
+ The property can be given any number of metadata,
+ which will be handed to the xsl transformation
+ as parameters.
+
+
+
+
+ Gets or sets the path of the output file.
+
+
+
+
+ Replace text in file(s) using a Regular Expression.
+
+ Search for a version number and update the revision.
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the files to update.
+
+ The files.
+
+
+
+ Gets or sets the regex.
+
+ The regex.
+
+
+
+ Gets or sets a value specifies case-insensitive matching. .
+
+ true if [ignore case]; otherwise, false.
+
+
+
+ Gets or sets a value changing the meaning of ^ and $ so they match at the beginning and end,
+ respectively, of any line, and not just the beginning and end of the entire string.
+
+ true if multiline; otherwise, false.
+
+
+
+ Gets or sets a value changing the meaning of the dot (.) so it matches
+ every character (instead of every character except \n).
+
+ true if singleline; otherwise, false.
+
+
+
+ Gets or sets the maximum number of times the replacement can occur.
+
+ The replacement count.
+
+
+
+ Gets or sets the replacement text.
+
+ The replacement text.
+
+
+
+ The character encoding used to read and write the file.
+
+ Any value returned by is valid input.
+ The default is utf-8
+
+
+
+ Uses FxCop to analyse managed code assemblies and reports on
+ their design best-practice compliance.
+
+
+ Shows how to analyse an assembly and use an XSLT stylesheet
+ to present the report as an HTML file. If the static anlysis fails,
+ the build does not stop - this is controlled with the FailOnError
+ parameter.
+
+ ]]>
+
+ If you include the MSBuild.Community.Tasks.Targets file
+ in you build project, the ItemGroup @(FxCopRuleAssemblies) is defined
+ with the standard FxCop Rules Assemblies.
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Returns a string value containing the command line arguments
+ to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass
+ directly to the executable file.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+ true if all task parameters are valid; otherwise, false
+
+
+
+ Returns the directory in which to run the executable file.
+
+
+ The directory in which to run the executable file,
+ or a null reference (Nothing in Visual Basic) if the executable file
+ should be run in the current directory.
+
+
+
+
+ Applies the XSL transformation specified in /outXsl to the
+ analysis report before saving the file.
+
+
+
+
+ Directs analysis output to the console or to the
+ Output window in Visual Studio .NET. By default,
+ the XSL file FxCopConsoleOutput.xsl is applied to the
+ output before it is displayed.
+
+
+
+
+ Specifies additional directories to search for assembly dependencies.
+ FxCopCmd always searches the target assembly directory and the current
+ working directory.
+
+
+
+
+ Specifies the target assembly to analyze.
+
+
+
+
+ Specifies the XSL or XSLT file that contains a transformation to
+ be applied to the analysis output before it is displayed in the console.
+
+
+
+
+ Specifies the name of an analysis report or project file to import.
+ Any messages in the imported file that are marked as excluded are not
+ included in the analysis results.
+
+
+
+
+ Specifies the filename(s) of FxCop rule assemblies
+
+
+
+
+ The list of rules to run
+
+ Rule names should be provided using the format Library#RuleNumber. For example Microsoft.Design#CA1012
+ Place a single hyphen (-) in front of the rule name to exclude it. For example -Microsoft.Performance#CA1805
+
+
+
+
+ Specifies the file name for the analysis report.
+
+
+
+
+ Specifies the XSL or XSLT file that is referenced by the
+ xml-stylesheet processing instruction in the analysis report.
+
+
+
+
+ Specifies the location of the version of Mscorlib.dll
+ that was used when building the target assemblies if this
+ version is not installed on the computer running FxCopCmd.
+
+
+
+
+ Specifies the filename of FxCop project file.
+
+
+
+
+ Includes a summary report with the informational
+ messages returned by FxCopCmd.
+
+
+
+
+ Comma-separated list of type names to analyze. This option disables
+ analysis of assemblies, namespaces, and resources; only the specified
+ types and their members are included in the analysis.
+ Use the wildcard character '*' at the end of the name to select multiple types.
+
+
+
+
+ Saves the results of the analysis in the project file.
+
+
+
+
+ Gets or sets the working directory.
+
+ The working directory.
+
+ The directory in which to run the executable file, or a null reference (Nothing in Visual Basic) if the executable file should be run in the current directory.
+
+
+
+
+ Gets or sets a value indicating whether the output is verbose.
+
+ true if verbose; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether the build should
+ fail if static code analysis reports errors. Defaults to
+ true.
+
+ true if verbose; otherwise, false.
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Defines the actions that can be performed on a service.
+
+
+
+
+ Starts a service.
+
+
+
+
+ Stops a service.
+
+
+
+
+ Restarts a service.
+
+
+
+
+ Pauses a running service.
+
+
+
+
+ Continues a paused service.
+
+
+
+
+ Task that can control a Windows service.
+
+
+ Restart Web Server
+
+ ]]>
+
+
+
+
+ Task that can determine the status of a specified service
+ on a target server.
+
+
+ Check status of SQL Server
+
+
+
+
+ ]]>
+
+
+
+
+ The unknown
+ returned when the service does not exist.
+ The value is "Unknown".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Gets the service controller.
+
+
+
+
+
+ Gets or sets the name of the service.
+
+ The name of the service.
+
+
+
+ Gets or sets the name of the machine.
+
+ The name of the machine.
+
+
+
+ Gets or sets the status.
+
+ The status of the service.
+
+
+
+ Gets a value indicating whether the service can be paused and resumed.
+
+
+ true if this instance can pause and continue; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the service should be notified when the system is shutting down.
+
+
+ true if this instance can shutdown; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the service can be stopped after it has started.
+
+ true if this instance can stop; otherwise, false.
+
+
+
+ Gets a friendly name for the service.
+
+ The name of the display.
+
+
+
+ Gets a value indicating whether the service exists.
+
+ true if the service exists; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Gets or sets the to perform on the service.
+
+ The action to perform on the service.
+
+
+
+
+ Gets or sets the timeout for the command. The default is
+ one minute.
+
+ The timeout for the command.
+
+
+
+ Task that can strip the source control information from a
+ Visual Studio Solution and subprojects.
+
+ This task is useful if you keep an archive of the
+ source tree at each build milestone, because it's irritating to have
+ to remove source control binding manually once you've copied a
+ version of the code from your archive.
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ Uploads a file using File Transfer Protocol (FTP).
+
+ Upload a file.
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the local file to upload.
+
+ The local file.
+
+
+
+ Gets or sets the remote URI to upload.
+
+ The remote URI.
+
+
+
+ Gets or sets the username.
+
+ The username.
+
+
+
+ Gets or sets the password.
+
+ The password.
+
+
+
+ Gets or sets the behavior of a client application's data transfer process.
+
+ true if [use passive]; otherwise, false.
+
+
+
+ Creates a new application pool on a local or remote machine with IIS installed. The default is
+ to create the new application pool on the local machine. If connecting to a remote machine, you can
+ specify the and for the task
+ to run under.
+
+ Create a new application pool on the local machine.
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the application pool.
+
+ The name of the application pool.
+
+
+
+ The AppPoolAutoStart property indicates to the World Wide Web Publishing Service (WWW service)
+ to automatically start an application pool when the application pool is created or when IIS
+ is started, if the value of this property is set to true.
+
+ Value indicating if AppPoolAutoStart is enabled or disabled.
+
+
+
+ The AppPoolIdentityType property allows application pools to run as a specific user account:
+
+ 0 - The application pool runs as NT AUTHORITY\SYSTEM.
+ 1 - The application pool runs as NT AUTHORITY\LOCAL SERVICE.
+ 2 - The application pool runs as NT AUTHORITY\NETWORK SERVICE.
+ 3 - The application pool runs as a specific user account, defined by the property.
+
+ Value indicating the application pool identity type.
+
+
+
+ The AppPoolQueueLength property indicates to the Universal Listener how many requests
+ to queue up for an application pool before rejecting future requests. When the limit
+ for this property is exceeded, IIS rejects the additional requests with a 503 error.
+
+ Value indicating the application pool queue length.
+
+
+
+ The AutoShutdownAppPoolExe property specifies an executable to run when the World Wide Web
+ Publishing Service (WWW service) shuts down an application pool for rapid fail protection. You
+ can use the property to send parameters to the executable.
+
+ Value indicating the application pool auto shutdown executable.
+
+
+
+ The AutoShutdownAppPoolParams property specifies any command-line parameters for the executable that
+ is specified in the AutoShutdownAppPoolExe property. You can use these two properties in the following
+ way to send e-mail, for example, when the World Wide Web Publishing Service (WWW service) shuts down
+ an application pool for rapid fail protection:
+
+ AutoShutdownAppPoolExe = "C:\LogAndSendMail.bat"
+ AutoShutdownAppPoolParams = "-AppPoolName %1%"
+
+ where %1% represents the application pool name.
+
+ Value indicating the parameters for the application pool auto shutdown executable.
+
+
+
+ The CPUAction property configures the action(s) that IIS takes when Microsoft Windows NT ® job objects
+ run. Only one Windows NT job object exists per application pool, therefore the CPUAction property
+ is configured on a per application pool basis.
+
+ Possible values:
+ 0 - No action is taken except that a warning is written to the event log when the CPU limit is exceeded.
+ 1 - Application pool worker processes that exceed their CPU limit will be forced to shut down.
+
+ Value indicating the CPU action.
+
+
+
+ The CPULimit property configures the maximum percentage of CPU resources that worker processes
+ in an application pool are allowed to consume over a period of time, as indicated by the
+ property. Set this property by specifying a percentage of CPU
+ usage, multiplied by 1000. For example, if you want the CPU usage limit to be 50%, set CPULimit to 50,000.
+
+ Value indicating the CPU limit.
+
+
+
+ The CPUResetInterval property specifies the reset period (in minutes) for CPU monitoring and
+ throttling limits on the application pool. When the number of minutes elapsed since the last
+ process accounting reset equals the number specified by this property, IIS will reset the CPU
+ timers for both the logging and limit intervals. Setting the value of this property to 0
+ disables CPU monitoring.
+
+ Value indicating the CPU reset interval.
+
+
+
+ The DisallowOverlappingRotation property specifies whether or not the World Wide Web Publishing
+ Service (WWW Service) should start up another worker process to replace the existing worker
+ process while it is shutting down.
+
+ Value indicating the DisallowOverlappingRotation.
+
+
+
+ The DisallowRotationOnConfigChange property specifies whether or not the World Wide Web Publishing
+ Service (WWW Service) should rotate worker processes in an application pool when the configuration
+ has changed. This means that the worker processes will not pick up application pool changes to
+ values passed to the worker process, such as and .
+
+ Value indicating the DisallowRotationOnConfigChange.
+
+
+
+ The IdleTimeout property specifies how long (in minutes) a worker process should run idle if no new
+ requests are received and the worker process is not processing requests. After the allotted time
+ passes, the worker process should request to be shut down by the World Wide Web Publishing Service (WWW Service).
+
+ Value indicating the idle timeout.
+
+
+
+ The LoadBalancerCapabilities property specifies behavior when a service is unavailable. A setting of 1
+ terminates the connection. A setting of 2 sends error code 503.
+
+ Value indicating the load balancer capabilities.
+
+
+
+ The LogEventOnRecycle property specifies that IIS should log an event when an application pool is
+ recycled. Application pools recycle for a variety of reasons. In order for IIS to log the event, the
+ LogEventOnRecycle property must have a bit set corresponding to the reason for the recycle.
+
+ Value indicating which recycle events to log.
+
+
+
+ The LogonMethod property contains an integer that specifies the logon method for cleartext
+ logons. Valid settings are:
+
+ 0 for interactive logon.
+ 1 for batch logon.
+ 2 for network logon.
+ 3 for cleartext logon.
+
+ Value indicating the logon method.
+
+
+
+ The MaxProcesses property determines the maximum number of worker processes an application pool
+ allows to service requests for an application pool. This property cannot be set to 0 because there
+ are no unmanaged pools.
+
+ Value indicating the maximum number of worker processes allowed by the application pool.
+
+
+
+ The OrphanActionExe property specifies an executable to run when the World Wide Web Publishing
+ Service (WWW service) orphans a worker process. You can use the property
+ to send parameters to the executable.
+
+ The value for the orphan action executable.
+
+
+
+ The OrphanActionParams property specifies command-line parameters for the executable
+ specified by the property.
+
+ Value indicating the orphan action parameters.
+
+
+
+ The OrphanWorkerProcess property, when set to true, notifies the World Wide Web Publishing
+ Service (WWW Service) not to terminate a worker process that fails to respond to pings, but
+ to instead orphan the worker process in the application pool if the worker process suffers
+ fatal errors.
+
+ Value indicating the orphan worker process.
+
+
+
+ The PeriodicRestartMemory property 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 property is 4,294,967 KB.
+
+ Value indicating the amount of memory.
+
+
+
+ The PeriodicRestartPrivateMemory property 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 property is 4,294,967 KB.
+
+ Value indicating the amount of memory.
+
+
+
+ The PeriodicRestartRequests property indicates the number of requests the OOP application
+ should process, after which it is recycled.
+
+ Value indicating the number of requests.
+
+
+
+ The PeriodicRestartSchedule property specifies the time (in 24 hour format) that the application
+ will be rotated. Each time is in local time and is specified in the following format:
+
+ PeriodicRestartSchedule="hh:mm,hh:mm,hh:mm"
+
+ Value indicating the restart schedule.
+
+
+
+ The PeriodicRestartTime property specifies the period of time, in minutes, after which IIS
+ rotates an isolated OOP application. Setting the value of this property to 0 disables the
+ property. The maximum supported value for this property is 71,582.
+
+ Value indicating the restart time period.
+
+
+
+ The PingingEnabled property specifies whether the World Wide Web Publishing Service
+ (WWW Service) should periodically monitor the health of a worker process. Setting the
+ value of this property to true indicates to the WWW service to monitor the worker
+ processes to ensure that the they are running and healthy.
+
+ Value indicating if pinging is enabled or disabled.
+
+
+
+ The PingInterval property specifies the period of time (in seconds) between health-monitoring
+ pings that the World Wide Web Publishing Service (WWW Service) sends to a worker process.
+
+ Value indicating the ping interval.
+
+
+
+ The PingResponseTime property specifies the amount of time (in seconds) that a worker process
+ is given to respond to a health monitoring ping. After the time limit is exceeded, the World
+ Wide Web Publishing Service (WWW Service) terminates the worker process.
+
+ Value indicating the ping response time.
+
+
+
+ Setting the RapidFailProtection property to true instructs the World Wide Web Publishing
+ Service (WWW service) to put all applications in an application pool out of service if the
+ number of worker process crashes has reached the maximum specified by the
+ property, within the number of minutes specified
+ by the property.
+
+ Value indicating if rapid fail protection is enabled or disabled.
+
+
+
+ The RapidFailProtectionInterval property specifies the number of minutes before the failure
+ count for a process is reset. See .
+
+ Value indicating the rapid fail protection interval.
+
+
+
+ The RapidFailProtectionMaxCrashes property specifies the maximum number of failures
+ allowed within the number of minutes specified by the
+ property. See .
+
+ Value indicating the maximum number of crashes.
+
+
+
+ The ShutdownTimeLimit property specifies the amount of time (in seconds) after a recycle
+ threshold has been reached that IIS waits for all old requests to finish running in a worker
+ process before terminating the worker process.
+
+ Value indicating the shutdown time limit.
+
+
+
+ Setting the SMPAffinitized property to true indicates that a particular worker process
+ assigned to an application pool should be assigned to a given CPU. This property is used
+ in conjunction with the property to configure a
+ particular processor a worker process will be assigned to.
+
+ Value indicating if SMPAffinitized is enabled or disabled.
+
+
+
+ The SMPProcessorAffinityMask property configures the hexadecimal processor mask. The hexadecimal
+ processor mask indicates to which CPU the worker processes in an application pool should be
+ bound. Before this property takes affect, the property must be set
+ to true for the application pool. These properties cannot be set through IIS Manager.
+
+ Do not set this property to zero. Doing so causes no SMP affinity to be configured, creating an
+ error condition. The default DWORD value is 4294967295 (or -1), which is represented in hexadecimal
+ as 0xFFFFFFFF. A value of 0xFFFFFFFF in SMPProcessorAffinityMask indicates that all processors are enabled.
+
+ Value indicating the SMP processor affinity bit mask.
+
+
+
+ The value of the StartupTimeLimit property specifies the amount of time (in seconds) that the World Wide
+ Web Publishing Service (WWW Service) should wait for a worker process to finish starting up and
+ reporting to the WWW Service.
+
+ Value indicating the startup time limit.
+
+
+
+ The WAMUserName property specifies the account user name that IIS uses by default as the COM+
+ application identity for newly created IIS out-of-process applications. The values of this
+ property and its companion property, , are set when IIS is installed, and
+ match the user name and password values in the Microsoft Windows user account, which is established
+ at the same time. Changing the value of this property is not recommended. If you do, change
+ it to a valid Windows user account, and change WAMUserPass to the corresponding password
+ for the new account.
+
+ Important:
+ Changes to WAMUserName and WAMUserPass may disrupt the operation of existing IIS out-of-process
+ applications. You can synchronize application identities using Component Services to edit the
+ user name and password values, found on the Identity tab of the property sheet for each package.
+
+ In-process applications are not affected by these property values.
+
+ Value indicating the username.
+
+
+
+ The WAMUserPass property specifies the password for the account that IIS uses by default as the COM+
+ application identity for newly created IIS out-of-process applications. The values of this property
+ and its companion property, , are set when IIS is installed, and match the
+ password and user name values in the Microsoft Windows user account (IWAM_ MachineName, where MachineName
+ is the name of the machine on which IIS is installed) established at the same time.
+
+ Important:
+ Changing the value of this property is not recommended. If you do, you must change the Windows account
+ password to the identical value. You must also synchronize existing IIS out-of-process application
+ identities, using Component Services to edit the user name and password values, which are found on the
+ Identity tab of the property sheet for each package.
+
+ In-process applications are not affected by these property values.
+
+ Value indicating the password.
+
+
+
+ Creates a new web directory on a local or remote machine with IIS installed. The default is
+ to create the new web directory on the local machine. The physical path is required to already exist
+ on the target machine. If connecting to a remote machine, you can specify the
+ and for the task to run under.
+
+ Create a new web directory on the local machine.
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the virtual directory.
+
+ The name of the virtual directory.
+
+
+
+ Gets or sets the virtual directory physical path. The physical directory must
+ exist before this task executes.
+
+ The virtual directory physical path.
+
+
+
+ Gets or sets a value that indicates if the file
+ or the contents of the folder may be executed, regardless of file type.
+
+ A value indicating if AccessExecute is enabled or disabled.
+
+
+
+ A value of true indicates that remote requests to execute applications
+ are denied; only requests from the same computer as the IIS server succeed
+ if the AccessExecute property is set to true. You cannot set
+ AccessNoRemoteExecute to false to enable remote requests, and set
+ to false to disable local requests.
+
+ Value indicating if AccessNoRemoteExecute is enabled or disabled.
+
+
+
+ A value of true indicates that remote requests to view files are denied; only
+ requests from the same computer as the IIS server succeed if the
+ property is set to true. You cannot set to false to enable
+ remote requests, and set to false to disable local requests.
+
+ Value indicating if AccessNoRemoteRead is enabled or disabled.
+
+
+
+ A value of true indicates that remote requests to view dynamic content are denied; only
+ requests from the same computer as the IIS server succeed if the property
+ is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests,
+ and set to false to disable local requests.
+
+ Value indicating if AccessNoRemoteScript is enabled or disabled.
+
+
+
+ A value of true indicates that remote requests to create or change files are denied; only
+ requests from the same computer as the IIS server succeed if the property
+ is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests,
+ and set to false to disable local requests.
+
+ Value indicating if AccessNoRemoteWrite is enabled or disabled.
+
+
+
+ A value of true indicates that the file or the contents of the folder may be read
+ through Microsoft Internet Explorer.
+
+ Value indicating if AccessRead is enabled or disabled.
+
+
+
+ A value of true indicates that users are allowed to access source code if either
+ Read or Write permissions are set. Source code includes scripts in Microsoft ® Active
+ Server Pages (ASP) applications.
+
+ Value indicating if AccessSource is enabled or disabled.
+
+
+
+ A value of true indicates that the file or the contents of the folder may be executed
+ if they are script files or static content. A value of false only allows static files,
+ such as HTML files, to be served.
+
+ Value indicating if AccessScript is enabled or disabled.
+
+
+
+ A value of true indicates that file access requires SSL file permission processing, with
+ or without a client certificate.
+
+ Value indicating if AccessSsl is enabled or disabled.
+
+
+
+ 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.
+
+ Value indicating if AccessSsl128 is enabled or disabled.
+
+
+
+ A value of true indicates that SSL file permission processing maps a client certificate
+ to a Microsoft Windows ® operating system user-account. The property
+ must also be set to true for the mapping to occur.
+
+ Value indicating if AccessSslMapCert is enabled or disabled.
+
+
+
+ A value of true indicates that SSL file access processing requests a certificate from
+ the client. A value of false indicates that access continues if the client does not have
+ a certificate. Some versions of Internet Explorer will close the connection if the server
+ requests a certificate and a certificate is not available (even if
+ is also set to true).
+
+ Value indicating if AccessSslNegotiateCert is enabled or disabled.
+
+
+
+ A value of true indicates that SSL file access processing requests a certificate from the
+ client. If the client provides no certificate, the connection is closed.
+ must also be set to true when using AccessSSLRequireCert.
+
+ Value indicating if AccessSslRequireCert is enabled or disabled.
+
+
+
+ A value of true indicates that users are allowed to upload files and their associated
+ properties to the enabled directory on your server or to change content in a Write-enabled
+ file. Write can be implemented only with a browser that supports the PUT feature of
+ the HTTP 1.1 protocol standard.
+
+ Value indicating if AccessWrite is enabled or disabled.
+
+
+
+ The AnonymousPasswordSync property indicates whether IIS should handle the user password
+ for anonymous users attempting to access resources.
+
+ Value indicating if AnonymousPasswordSync is enabled or disabled.
+
+
+
+ The AppAllowClientDebug property specifies whether ASP client-side debugging
+ is enabled. This property is independent of , which
+ applies to server-side debugging.
+
+ Value indicating if AppAllowClientDebug is enabled or disabled.
+
+
+
+ The AppAllowDebugging property specifies whether ASP debugging is enabled on
+ the server. This property is independent of the property,
+ which applies to client-side debugging.
+
+ Value indicating if AppAllowDebugging is enabled or disabled.
+
+
+
+ The AspAllowSessionState property enables session state persistence for the ASP application.
+
+ Value indicating if the AspAllowSessionState is enabled or disabled.
+
+
+
+ The AspBufferingOn property specifies whether output from an ASP application will be buffered.
+
+ Value indicating if the AspBufferingOn is enabled or disabled.
+
+
+
+ The AspEnableApplicationRestart determines whether an ASP application can be
+ automatically restarted. When changes are made to Global.asa or metabase properties
+ that affect an application, the application will not restart unless the
+ AspEnableApplicationRestart property is set to true.
+
+ Value indicating if AspEnableApplicationRestart is enabled or disabled.
+
+
+
+ The AspEnableAspHtmlFallback property controls the behavior of ASP when a
+ new request is to be rejected due to a full request queue.
+
+ Value indicating if AspEnableAspHtmlFallback is enabled or disabled.
+
+
+
+ The AspEnableChunkedEncoding property specifies whether HTTP 1.1 chunked
+ transfer encoding is enabled for the World Wide Web Publishing Service (WWW service).
+
+ Value indicating if AspEnableChunkedEncoding is enabled or disabled.
+
+
+
+ The AspErrorsToNTLog property specifies which ASP errors are written to the
+ Windows event log. ASP errors are written to the client browser and to the IIS
+ log files by default.
+
+ Value indicating if AspErrorsToNTLog is enabled or disabled.
+
+
+
+ The AspEnableParentPaths property specifies whether an ASP page allows paths
+ relative to the current directory (using the ..\ notation) or above the current directory.
+
+ Value indicating if AspEnableParentPaths is enabled or disabled.
+
+
+
+ The AspEnableTypelibCache property specifies whether type libraries are cached
+ on the server. The World Wide Web Publishing Service (WWW service) setting for
+ this property is applicable to all in-process and pooled out-of-process application
+ nodes, at all levels. Metabase settings at the Web server level or lower are ignored
+ for in-process and pooled out-of-process applications. However, settings at the Web
+ server level or lower are used if that node is an isolated out-of-process application.
+
+ Value indicating if AspEnableTypelibCache is enabled or disabled.
+
+
+
+ The AspExceptionCatchEnable property specifies whether ASP pages trap exceptions
+ thrown by components.
+
+ Value indicating if AspExceptionCatchEnable is enabled or disabled.
+
+
+
+ The AspLogErrorRequests property controls whether the Web server writes ASP errors
+ to the application section of the Windows event log. ASP errors are written to the
+ client browser and to the IIS log files by default.
+
+ Value indicating if AspLogErrorRequests is enabled or disabled.
+
+
+
+ The AspScriptErrorSentToBrowser property specifies whether the Web server writes
+ debugging specifics (file name, error, line number, description) to the client
+ browser, in addition to logging them to the Windows Event Log. The
+ property provides the error message to be sent if this property is set to false.
+
+ Value indicating if AspScriptErrorSentToBrowser is enabled or disabled.
+
+
+
+ The AspTrackThreadingModel property specifies whether IIS checks the threading model
+ of any components (COM objects) that your application creates. The preferred setting
+ of this metabase property is false.
+
+ Value indicating if AspTrackThreadingModel is enabled or disabled.
+
+
+
+ Specifies Anonymous authentication as one of the possible Windows authentication
+ schemes returned to clients as being available.
+
+ Value indicating if AuthAnonymous is enabled or disabled.
+
+
+
+ Specifies Basic authentication as one of the possible Windows authentication
+ schemes returned to clients as being available.
+
+ Value indicating if AuthBasic is enabled or disabled.
+
+
+
+ Specifies Integrated Windows authentication (also known as Challenge/Response or
+ NTLM authentication) as one of the possible Windows authentication schemes
+ returned to clients as being available.
+
+ Value indicating if AuthNtlm is enabled or disabled.
+
+
+
+ Setting this flag to true specifies that authentication persists only for a single
+ request on a connection. IIS resets the authentication at the end of each request, and
+ forces re-authentication on the next request of the session.
+
+ Value indicating if AuthPersistSingleRequest is enabled or disabled.
+
+
+
+ Setting this flag to true specifies authentication will persist only across single
+ requests on a connection if the connection is by proxy. IIS will reset the authentication
+ at the end of the request if the current authenticated request is by proxy and it is
+ not the special case where IIS is running MSPROXY.
+
+ Value indicating if AuthPersistSingleRequestIfProxy is enabled or disabled.
+
+
+
+ Setting this flag to true specifies that authentication is valid for a single request if
+ by proxy. IIS will reset the authentication at the end of the request and force
+ re-authentication on the next request if the current authenticated request is by
+ proxy of any type.
+
+ Value indicating if AuthPersistSingleRequestAlwaysIfProxy is enabled or disabled.
+
+
+
+ The CacheControlNoCache property specifies the HTTP 1.1 directive to prevent caching of content.
+
+ Value indicating if CacheControlNoCache is enabled or disabled.
+
+
+
+ The CacheISAPI property indicates whether ISAPI extensions are cached in memory after first use.
+
+ Value indicating if CacheIsapi is enabled or disabled.
+
+
+
+ The ContentIndexed property specifies whether the installed content indexer should
+ index content under this directory tree.
+
+ Value indicating if ContentIndexed is enabled or disabled.
+
+
+
+ This property specifies whether process accounting and throttling should be performed
+ for ISAPI extensions and ASP applications. To perform process accounting on CGI
+ applications, use the property .
+
+ Value indicating if CpuAppEnabled is enabled or disabled.
+
+
+
+ This property indicates whether IIS should perform process accounting for CGI
+ applications. To effectively throttle CGI applications, use the CgiTimeout
+ property. To use process accounting for ISAPI and ASP applications, use .
+
+ Value indicating if CpuCgiEnabled is enabled or disabled.
+
+
+
+ The CreateCGIWithNewConsole property indicates whether a CGI application runs in its own console.
+
+ Value indicating if CreateCgiWithNewConsole is enabled or disabled.
+
+
+
+ The CreateProcessAsUser property specifies whether a CGI process is created in the system context or in the context of the requesting user.
+
+ Value indicating if CreateProcessAsUser is enabled or disabled.
+
+
+
+ When set to true, date information is displayed when browsing directories.
+
+ Value indicating if DirBrowseShowDate is enabled or disabled.
+
+
+
+ When set to true, file name extensions are displayed when browsing directories.
+
+ Value indicating if DirBrowseShowExtension is enabled or disabled.
+
+
+
+ When set to true, date information is displayed in extended format when displaying directories.
+
+ Value indicating if DirBrowseShowLongDate is enabled or disabled.
+
+
+
+ When set to true, file size information is displayed when browsing directories.
+
+ Value indicating if DirBrowseShowSize is enabled or disabled.
+
+
+
+ When set to true, file time information is displayed when displaying directories.
+
+ Value indicating if DirBrowseShowTime is enabled or disabled.
+
+
+
+ The DontLog property specifies whether client requests are written to the IIS log files.
+
+ Value indicating if DontLog is enabled or disabled.
+
+
+
+ When set to true, the default document (specified by the property) for
+ a directory is loaded when the directory is browsed.
+
+ Value indicating if EnableDefaultDoc is enabled or disabled.
+
+
+
+ When set to true, directory browsing is enabled.
+
+ Value indicating if EnableDirBrowsing is enabled or disabled.
+
+
+
+ The EnableDocFooter property enables or disables custom footers specified by
+ the DefaultDocFooter property.
+
+ Value indicating if EnableDocFooter is enabled or disabled.
+
+
+
+ The EnableReverseDns property enables or disables reverse Domain Name Server (DNS) lookups
+ for the World Wide Web Publishing Service (WWW service). Reverse lookups involve looking
+ up the domain name when the IP address is known. Reverse DNS lookups can use significant
+ resources and time.
+
+ Value indicating if EnableReverseDns is enabled or disabled.
+
+
+
+ The SSIExecDisable property specifies whether server-side include (SSI) #exec directives
+ are disabled under this path.
+
+ Value indicating if SsiExecDisable is enabled or disabled.
+
+
+
+ The UNCAuthenticationPassthrough property enables user authentication passthrough
+ for Universal Naming Convention (UNC) virtual root access (for authentication schemes
+ that support delegation).
+
+ Value indicating if UncAuthenticationPassthrough is enabled or disabled.
+
+
+
+ The AspScriptErrorMessage property specifies the error message to send to the browser
+ if specific debugging errors are not sent to the client (if
+ is set to false).
+
+ Value indicating if AspScriptErrorMessage is enabled or disabled.
+
+
+
+ The DefaultDoc contains one or more file names of default documents that will be returned
+ to the client if no file name is included in the client's request. The default document
+ will be returned if the flag of the DirBrowseFlags property
+ is set to true for the directory. This property can contain a list of default document
+ file names separated by a comma and a space, for example Default.htm, Default.asp.
+
+ Listing of the default documents for the web application.
+
+
+
+ Deletes an existing application pool on a local or remote machine with IIS installed. The default is
+ to delete an existing application pool on the local machine. If connecting to a remote machine, you can
+ specify the and for the task
+ to run under.
+
+ Delete an existing application pool on the local machine.
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the application pool.
+
+ The name of the application pool.
+
+
+
+ Deletes a web directory on a local or remote machine with IIS installed. The default is
+ to delete the web directory on the local machine. If connecting to a remote machine, you
+ can specify the and for the
+ task to run under.
+
+ Deletes a web directory on the local machine.
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the virtual directory.
+
+ The name of the virtual directory.
+
+
+
+ Actions the can do.
+
+
+
+ Start the applicaiton pool
+
+
+ Stop the applicaiton pool
+
+
+ Restart the applicaiton pool
+
+
+ Recycle the applicaiton pool
+
+
+
+ Allows control for an application pool on a local or remote machine with IIS installed. The default is
+ to control the application pool on the local machine. If connecting to a remote machine, you can
+ specify the and for the task
+ to run under.
+
+ Restart an application pool on the local machine.
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ True if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the app pool.
+
+ The name of the app pool.
+
+
+
+ Gets or sets the application pool action.
+
+ The application pool action.
+
+
+
+
+ Sends an email message
+
+ Example of sending an email.
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Sends an email message
+ Returns true if successful
+
+
+
+ List of files to attach to message
+
+
+
+
+ List of addresss that contains the blind carbon copy (BCC) recipients for this e-mail message
+
+
+
+
+ List of addresss that contains the carbon copy (CC) recipients for this e-mail message
+
+
+
+
+ The email message body
+
+
+
+
+ The from address for this e-mail message
+
+
+ This property is required.
+
+
+
+
+ A value indicating whether the mail message body is in Html
+
+
+
+
+ The priority of this e-mail message
+
+
+ Possible values are High, Normal, and Low
+
+
+
+
+ The subject line for this e-mail message
+
+
+ This property is required.
+
+
+
+
+ The name or IP address of the host used for SMTP transactions
+
+
+ This property is required.
+
+
+
+
+ List of addresss that contains the recipients of this e-mail message
+
+
+ This property is required.
+
+
+
+
+ Gets or sets the username.
+
+ The username.
+
+
+
+ Gets or sets the password.
+
+ The password.
+
+
+
+ Add numbers
+
+ Adding numbers:
+
+
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Divide numbers
+
+
+
+
+
+
+
+]]>
+
+ Above example will display:
+ Divide 1/2= 0.5
+
+ Truncate the result to always return an integer:
+
+
+
+
+
+]]>
+
+ Above example will display:
+ Divide 7/3= 2
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ When , uses integer division to truncate the result. Default is
+
+
+ Any remainder in the result is dropped, and the closest integer to zero is returned.
+
+ Refer to the documentation for the \ Operator
+ for more information about integer division.
+
+
+
+
+
+ Multiple numbers
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Subtract numbers
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Moves files on the filesystem to a new location.
+
+
+ Move a file to another folder
+
+ ]]>
+ Rename a file
+
+ ]]>
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets the items that were successfully moved.
+
+ The moved files.
+
+
+
+ Gets or sets the list of files to moved the source files to.
+
+
+ This list is expected to be a one-to-one mapping with the
+ list specified in the SourceFiles parameter. That is, the
+ first file specified in SourceFiles will be moved to the
+ first location specified in DestinationFiles, and so forth.
+
+ The destination files.
+
+
+
+ Gets or sets the directory to which you want to move the files.
+
+ The destination folder.
+
+
+
+ Gets or sets the source files to move.
+
+ The source files to move.
+
+
+
+ Runs the NDoc application.
+
+ Generated html help file.
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns a string value containing the command line arguments to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass directly to the executable file.
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Logs the starting point of the run to all registered loggers.
+
+ A descriptive message to provide loggers, usually the command line and switches.
+
+
+
+ Returns the directory in which to run the executable file.
+
+
+ The directory in which to run the executable file, or a null reference (Nothing in Visual Basic) if the executable file should be run in the current directory.
+
+
+
+
+ Gets or sets the documenter.
+
+ The documenter.
+ Available documenters are VS.NET_2003, JavaDoc, LaTeX, LinearHtml, MSDN, XML.
+
+
+
+ Gets or sets the project file path.
+
+ The project file path.
+
+
+
+ Gets or sets a value indicating whether the output is verbose.
+
+ true if verbose; otherwise, false.
+
+
+
+ Gets or sets the working directory.
+
+ The working directory.
+
+ The directory in which to run the executable file, or a null reference (Nothing in Visual Basic) if the executable file should be run in the current directory.
+
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Gets the with which to log errors.
+
+
+ The with which to log errors.
+
+
+
+ Run NUnit on a group of assemblies.
+
+ Run NUnit tests.
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ The default relative path of the NUnit installation.
+ The value is @"NUnit-Net-2.0 2.2.7\bin".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns a string value containing the command line arguments to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass directly to the executable file.
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Logs the starting point of the run to all registered loggers.
+
+ A descriptive message to provide loggers, usually the command line and switches.
+
+
+
+ Returns the directory in which to run the executable file.
+
+
+ The directory in which to run the executable file, or a null reference (Nothing in Visual Basic) if the executable file should be run in the current directory.
+
+
+
+
+ Gets or sets the assemblies.
+
+ The assemblies.
+
+
+
+ Gets or sets the categories to include.
+
+ Multiple values must be separated by a comma ","
+
+
+
+ Gets or sets the categories to exclude.
+
+ Multiple values must be separated by a comma ","
+
+
+
+ Gets or sets the fixture.
+
+ The fixture.
+
+
+
+ Gets or sets the XSLT transform file.
+
+ The XSLT transform file.
+
+
+
+ Gets or sets the output XML file.
+
+ The output XML file.
+
+
+
+ The file to receive test error details.
+
+
+
+
+ Gets or sets the working directory.
+
+ The working directory.
+
+ The directory in which to run the executable file, or a null reference (Nothing in Visual Basic) if the executable file should be run in the current directory.
+
+
+
+
+ Determines whether assemblies are copied to a shadow folder during testing.
+
+ Shadow copying is enabled by default. If you want to test the assemblies "in place",
+ you must set this property to True.
+
+
+
+ The project configuration to run.
+
+ Only applies when a project file is used. The default is the first configuration, usually Debug.
+
+
+
+ Allows tests to be run in a new thread, allowing you to take advantage of ApartmentState and ThreadPriority settings in the config file.
+
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Gets the with which to log errors.
+
+
+ The with which to log errors.
+
+
+
+ A strongly-typed resource class, for looking up localized strings, etc.
+
+
+
+
+ Returns the cached ResourceManager instance used by this class.
+
+
+
+
+ Overrides the current thread's CurrentUICulture property for all
+ resource lookups using this strongly typed resource class.
+
+
+
+
+ Looks up a localized string similar to Attrib directory '{0}'. {1}.
+
+
+
+
+ Looks up a localized string similar to Attrib file '{0}'. {1}.
+
+
+
+
+ Looks up a localized string similar to File Not Found: {0}.
+
+
+
+
+ Looks up a localized string similar to Local File Not Found: {0}.
+
+
+
+
+ Looks up a localized string similar to {0}% Complete ({1}).
+
+
+
+
+ Looks up a localized string similar to Transfered {0} ({1}) in {2}.
+
+
+
+
+ Looks up a localized string similar to Upload File Complete, {0}.
+
+
+
+
+ Looks up a localized string similar to Uploading "{0}"
+ to "{1}"
+ .
+
+
+
+
+ Looks up a localized string similar to The URI "{0}" scheme is not valid..
+
+
+
+
+ Looks up a localized string similar to Compressed by {0}, from {1} to {2} byte(s).
+
+
+
+
+ Looks up a localized string similar to Compressing JavaScript in "{0}"..
+
+
+
+
+ Looks up a localized string similar to Writing compressed JavaScript back to "{0}" using {1}..
+
+
+
+
+ Looks up a localized string similar to Emailing "{0}"..
+
+
+
+
+ Looks up a localized string similar to "{0}" is not a number..
+
+
+
+
+ Looks up a localized string similar to Creating directory "{0}"..
+
+
+
+
+ Looks up a localized string similar to Could not move the file "{0}" to the destination file "{1}", because the destination is a folder instead of a file. To move the source file into a folder, consider using the DestinationFolder parameter instead of DestinationFiles..
+
+
+
+
+ Looks up a localized string similar to Unable to move file "{0}" to "{1}". {2}.
+
+
+
+
+ Looks up a localized string similar to Both "{0}" and "{1}" were specified as input parameters in the project file. Please choose one or the other..
+
+
+
+
+ Looks up a localized string similar to Moving file from "{0}" to "{1}"..
+
+
+
+
+ Looks up a localized string similar to No destination specified for Move. Please supply either "{0}" or "{1}"..
+
+
+
+
+ Looks up a localized string similar to The source file "{0}" is actually a directory. The "Move" task does not support moving directories..
+
+
+
+
+ Looks up a localized string similar to Could not find the NUnit Project File open command. Please make sure NUnit is installed..
+
+
+
+
+ Looks up a localized string similar to The parameter "{1}" does not apply to the current use of task "{0}"..
+
+
+
+
+ Looks up a localized string similar to The "{0}" task was not given a value for the required parameter "{1}"..
+
+
+
+
+ Looks up a localized string similar to Read Windows Registry.
+
+
+
+
+ Looks up a localized string similar to Write Windows Registry.
+
+
+
+
+ Looks up a localized string similar to Cannot continue service {0} on computer '{1}' as it does not support the pause and continue..
+
+
+
+
+ Looks up a localized string similar to Cannot pause service {0} on computer '{1}' as it does not support the pause and continue..
+
+
+
+
+ Looks up a localized string similar to Cannot stop service {0} on computer '{1}'..
+
+
+
+
+ Looks up a localized string similar to {0} service was continued successfully..
+
+
+
+
+ Looks up a localized string similar to {0} service is continuing ....
+
+
+
+
+ Looks up a localized string similar to Couldn't find the '{0}' service on '{1}'.
+
+
+
+
+ Looks up a localized string similar to Cannot continue service {0} on computer '{1}' as its not currently paused..
+
+
+
+
+ Looks up a localized string similar to Cannot pause service {0} on computer '{1}' as its not currently started..
+
+
+
+
+ Looks up a localized string similar to {0} service was paused successfully..
+
+
+
+
+ Looks up a localized string similar to {0} service is pausing ....
+
+
+
+
+ Looks up a localized string similar to {0} service was started successfully..
+
+
+
+
+ Looks up a localized string similar to {0} service is starting ....
+
+
+
+
+ Looks up a localized string similar to The '{0}' service on '{1}' is '{2}'..
+
+
+
+
+ Looks up a localized string similar to {0} service was stopped successfully..
+
+
+
+
+ Looks up a localized string similar to {0} service is stopping ....
+
+
+
+
+ Looks up a localized string similar to Solution file "{0}" not found..
+
+
+
+
+ Looks up a localized string similar to LocalPath is not a working subversion copy..
+
+
+
+
+ Looks up a localized string similar to Failed to get current date!.
+
+
+
+
+ Looks up a localized string similar to Getting current date..
+
+
+
+
+ Looks up a localized string similar to "{2}" refers to {0} item(s), and "{3}" refers to {1} item(s). They must have the same number of items..
+
+
+
+
+ Looks up a localized string similar to extracted "{0}".
+
+
+
+
+ Looks up a localized string similar to Unzip File "{0}"
+ to Directory "{1}"
+ .
+
+
+
+
+ Looks up a localized string similar to Unzipped file "{0}" successfully..
+
+
+
+
+ Looks up a localized string similar to Commitment of change set failed!.
+
+
+
+
+ Looks up a localized string similar to Files added to Vault repository successfully..
+
+
+
+
+ Looks up a localized string similar to Files specified for addition to repository cannot be found..
+
+
+
+
+ Looks up a localized string similar to The file {0} could not be checked in: {1}..
+
+
+
+
+ Looks up a localized string similar to File or folder {0} not found for checkin..
+
+
+
+
+ Looks up a localized string similar to The folder {0} could not be checked in: {1}..
+
+
+
+
+ Looks up a localized string similar to {0} successfully checked out..
+
+
+
+
+ Looks up a localized string similar to {0} successfully checked out..
+
+
+
+
+ Looks up a localized string similar to Specified diskfile {0} does not exist..
+
+
+
+
+ Looks up a localized string similar to File [{0}] added to change set..
+
+
+
+
+ Looks up a localized string similar to Folder [{0}] added to change set..
+
+
+
+
+ Looks up a localized string similar to Incorrect parameters passed to VaultSession..
+
+
+
+
+ Looks up a localized string similar to Login to Vault repository failed..
+
+
+
+
+ Looks up a localized string similar to Error validating path "{0}"..
+
+
+
+
+ Looks up a localized string similar to Selection of the repository failed: {0}..
+
+
+
+
+ Looks up a localized string similar to File or folder {0} not found for checkout..
+
+
+
+
+ Looks up a localized string similar to Set working folder for {0} to {1} from {2}..
+
+
+
+
+ Looks up a localized string similar to ClientInstance.TreeCache has not been initialized, Common cause is that SelectRepository has not been called sucessfully..
+
+
+
+
+ Looks up a localized string similar to Successfully undid check out for {0}..
+
+
+
+
+ Looks up a localized string similar to Url specifying vault location is required..
+
+
+
+
+ Looks up a localized string similar to Username must be set to access repository..
+
+
+
+
+ Looks up a localized string similar to Clearing working folder for {0}..
+
+
+
+
+ Looks up a localized string similar to Restoring working folder for {0} to {1}..
+
+
+
+
+ Looks up a localized string similar to Version file "{0}" not found - creating new file..
+
+
+
+
+ Looks up a localized string similar to Updated to version {0}.
+
+
+
+
+ Looks up a localized string similar to Initialized to version {0}.
+
+
+
+
+ Looks up a localized string similar to Reading version from file "{0}"..
+
+
+
+
+ Looks up a localized string similar to Unable to read version number from "{0}". {1}.
+
+
+
+
+ Looks up a localized string similar to Unable to write version number to "{0}". {1}".
+
+
+
+
+ Looks up a localized string similar to Wrote version to file "{0}"..
+
+
+
+
+ Looks up a localized string similar to Web directory {0} does not exist on {1}..
+
+
+
+
+ Looks up a localized string similar to Setting scriptmap for {0} on web directory {1} on {2}..
+
+
+
+
+ Looks up a localized string similar to Web directory {0} on {1} does not have a setting called {2}..
+
+
+
+
+ Looks up a localized string similar to Reading {0} property of web directory {1} on {2}..
+
+
+
+
+ Looks up a localized string similar to Setting {0} property of web directory {1} on {2}..
+
+
+
+
+ Looks up a localized string similar to Reading Xml Document "{0}"..
+
+
+
+
+ Looks up a localized string similar to {0} node(s) selected for read..
+
+
+
+
+ Looks up a localized string similar to XmlRead Result: "{0}".
+
+
+
+
+ Looks up a localized string similar to Updating Xml Document "{0}"..
+
+
+
+
+ Looks up a localized string similar to {0} node(s) selected for update..
+
+
+
+
+ Looks up a localized string similar to XmlUpdate Wrote: "{0}"..
+
+
+
+
+ Looks up a localized string similar to Adding Parameter \"{0}\": \"{1}\"..
+
+
+
+
+ Looks up a localized string similar to Adding root attribute {0}=\"{1}\"..
+
+
+
+
+ Looks up a localized string similar to Creating root tag \"{0}\"..
+
+
+
+
+ Looks up a localized string similar to No input files..
+
+
+
+
+ Looks up a localized string similar to No root tag inserted..
+
+
+
+
+ Looks up a localized string similar to added "{0}"..
+
+
+
+
+ Looks up a localized string similar to Creating zip file "{0}"..
+
+
+
+
+ Looks up a localized string similar to Zip File Not Found: {0}..
+
+
+
+
+ Looks up a localized string similar to Created zip file "{0}" successfully..
+
+
+
+
+ Reads a value from the Registry
+
+ Read .NET Framework install root from Registry.
+
+
+
+
+ ]]>
+
+ The parameter is set according to the following rules:
+ If a is provided, it will be used if the or does not exist.
+ If a is not provided, the exists, but the does not exist, will be set to an empty string.
+ If a is not provided, and the does not exist, the task will fail.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".
+
+ The name of the key.
+
+
+
+ Gets or sets the name of the name/value pair.
+
+ The name of the value.
+
+
+
+ Gets or sets the default value.
+
+ The default value.
+
+
+
+ Gets the stored value.
+
+ The value.
+
+
+
+ Writes a value to the Registry
+
+ Write a value to Registry
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".
+
+ The name of the key.
+
+
+
+ Gets or sets the name of the name/value pair.
+
+ The name of the value.
+
+
+
+ Gets or sets the value to be stored.
+
+ The value.
+
+
+
+ Executes code contained within the task.
+
+
+ Simple script that writes to the console
+
+
+
+
+
+
+
+
+
+]]>
+
+
+ Script that returns a value.
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The required references
+
+
+
+
+ The namespaces to import.
+
+
+
+
+ The language of the script block (defaults to C#).
+
+ The supported languages are:
+
+ Visual Basic.NET (VB, vb, VISUALBASIC)
+ C# (C#, c#, CSHARP)
+ JavaScript (JS, js, JSCRIPT)
+ J# (VJS, vjs, JSHARP)
+ or, proviude the fully-qualified name for a class implementing
+ .
+
+
+
+ The name of the main class containing the static ScriptMain
+ entry point.
+
+
+
+
+ The code to compile and execute
+
+
+ The code must include a static (Shared in VB) method named ScriptMain.
+ It cannot accept any parameters. If you define the method return a ,
+ the returned value will be available in the output property.
+
+
+
+
+ The string returned from the custom ScriptMain method.
+
+
+
+
+ A task for sleeping for a specified period of time.
+
+ Causes the build to sleep for 300 milliseconds.
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The number of milliseconds to add to the time to sleep.
+
+
+
+
+ The number of seconds to add to the time to sleep.
+
+
+
+
+ The number of minutes to add to the time to sleep.
+
+
+
+
+ The number of hours to add to the time to sleep.
+
+
+
+
+ Base class for all of the Visual SourceSafe tasks.
+
+
+
+
+ Attempts to connect to the SourceSafe Database and
+ load the specified item, or version of the item, if specified.
+
+
+
+
+ Reserved.
+
+ Reserved.
+
+
+
+ Logs an exception using the MSBuild logging framework.
+
+ The to log.
+
+
+
+ The path to the folder that contains the srcsafe.ini file.
+
+
+
+
+ The Visual SourceSafe project or file to perform the action
+ on (starts with "$/").
+
+
+
+
+ The name of the user accessing the SourceSafe database.
+
+
+
+
+ A version of the to reference.
+
+
+
+
+ The password to use to log in to SourceSafe.
+
+
+
+
+ Represents the VSS Database
+
+
+
+
+ Represents the VSS item selected (file or project).
+
+
+
+
+ Task that executes a checkin against a VSS Database.
+
+
+
+
+ ]]>
+
+
+
+
+ Base class for VSS tasks that can act recursively.
+
+
+
+
+ Reserved.
+
+ Reserved.
+
+
+
+ Determines whether to perform the SourceSafe operation
+ recursively. The default is .
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The path to the local working directory.
+
+
+
+
+ Determines whether to leave the file(s) as writable once the
+ checkin is complete. The default is .
+
+
+
+
+ The checkin comment.
+
+
+
+
+ Task that executes a checkout of files or projects
+ against a Visual SourceSafe database.
+
+
+
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The path to the local working directory.
+
+
+
+
+ Determines whether files will be writable once retrieved from
+ the repository. The default is .
+
+
+
+
+ Task that adds files to a Visual SourceSafe database.
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ List of files that should be added to SourceSafe.
+
+
+
+
+ The comment to be applied to the newly added file.
+
+
+
+
+ Task that records differences between the latest version
+ of all the items in a Visual SourceSafe project and another version or label
+ to a file.
+
+
+ Generates a file containing all of the differences between the
+ current version and the label "Test Label"
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The value of the label to compare to.
+
+
+
+
+ The name of the file to send the output to.
+
+
+
+
+ Task that retireves an item or project from a Visual SourceSafe database.
+
+
+ Get the latest version (recursive) of a file from a VSS database and place
+ in the specified local folder.
+
+
+
+
+
+ Runs the task using the specified parameters.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The path to the local working directory.
+
+
+
+
+ Determines whether to replace writable files.
+ The default is .
+
+
+
+
+ Determines whether files will be writable once retrieved from
+ the repository. The default is .
+
+
+
+
+ Generates an XML file containing details of all changes made
+ to a Visual SourceSafe project or file between specified labels or dates.
+
+
+ Generates a file containing details of all the changes made to the $/Test
+ project by a user called joe.bloggs
+
+ ]]>
+
+
+ Generates a file containing details of all the changes made between the
+ labels Build1 and Build2 in the $/Test project.
+
+ ]]>
+
+
+ Generates a file containing details of all the changes made between the
+ 1st December 2005 and 10th December 2005in the $/Test project.
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The label to start comparing to.
+
+
+
+
+ The label to compare up to.
+
+
+
+
+ The Start Date for the history.
+
+
+
+
+ The End Date for the history.
+
+
+
+
+ The name and path of the XML output file.
+
+
+
+
+ The name of the user whose changes should be listed in
+ the history.
+
+
+
+
+ Task that applies a label to a Visual SourceSafe item.
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The text of the label.
+
+
+
+
+ An optional comment.
+
+
+
+
+ Task that undoes a checkout of files or projects
+ against a Visual SourceSafe database.
+
+
+
+
+ ]]>
+
+
+
+
+ Executes the task.
+
+ if the task ran successfully;
+ otherwise .
+
+
+
+ The path to the local working directory.
+
+
+
+
+ Executes a SQL command.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ The connection string
+
+
+
+
+ The command to execute
+
+
+
+
+ Output the return count/value
+
+
+
+
+ Checkout a local working copy of a Subversion repository.
+
+ Checkout a working copy
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ Subversion Commit command
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ Export a folder from a Subversion repository
+
+ Export from repository
+
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ Summarize the local revision(s) of a working copy.
+
+ The following example gets the revision of the current folder.
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Returns the fully qualified path to the executable file.
+
+
+ The fully qualified path to the executable file.
+
+
+
+
+ Logs the starting point of the run to all registered loggers.
+
+ A descriptive message to provide loggers, usually the command line and switches.
+
+
+
+ Returns a string value containing the command line arguments to pass directly to the executable file.
+
+
+ A string value containing the command line arguments to pass directly to the executable file.
+
+
+
+
+ Runs the exectuable file with the specified task parameters.
+
+
+ true if the task runs successfully; otherwise, false.
+
+
+
+
+ Logs the events from text output.
+
+ The single line.
+ The message importance.
+
+
+ Path to local working copy.
+
+
+ Revision number of the local working repository.
+
+
+ High revision number of the local working repository revision range.
+
+
+ Low revision number of the local working repository revision range.
+
+
+ True if working copy contains modifications.
+
+
+ True if working copy is switched.
+
+
+
+ True if invoked on a directory that is not a working copy,
+ svnversion assumes it is an exported working copy and prints "exported".
+
+
+
+
+ Gets the with which to log errors.
+
+
+ The with which to log errors.
+
+
+
+ Gets the name of the executable file to run.
+
+
+ The name of the executable file to run.
+
+
+
+ Subversion Update command
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Indicates whether all task paratmeters are valid.
+
+
+ true if all task parameters are valid; otherwise, false.
+
+
+
+
+ Unzip a file to a target directory.
+
+ Unzip file tasks
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the zip file.
+
+ The name of the zip file.
+
+
+
+ Gets or sets the target directory.
+
+ The target directory.
+
+
+
+ Generates version information based on various algorithms
+
+ Get version information from file and increment revision.
+
+
+
+
+
+
+
+ ]]>
+
+ Specify Major and Minor version information and generate Build and Revision.
+
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the major version number.
+
+ The major version number.
+
+
+
+ Gets or sets the minor version number.
+
+ The minor version number.
+
+
+
+ Gets or sets the build version number.
+
+
+ The build version number.
+
+
+
+ Gets or sets the revision version number.
+
+
+ The revision version number.
+
+
+
+ Gets or sets the file used to initialize and persist the version.
+
+ The version file.
+
+ When specified, the task will attempt to load the previous version information from the file.
+ After updating the version, the new value will be saved to the file.
+
+ If you do not specify a value for this property, the version will be calculated
+ based on the values passed to the , ,
+ , and properties. The new version will not be persisted.
+
+
+
+ Gets or sets the method used to generate a number
+
+
+ If value is not provided, None is assumed.
+ The number is set according to the following table:
+
+ BuildTypeDescription
+ NoneThe number is not modified.
+ AutomaticThe number of days since .
+ IncrementIncreases the previous value by 1.
+
+
+
+
+
+ Gets or sets the method used to generate a number
+
+
+ If value is not provided, None is assumed.
+ The number is set according to the following table:
+
+ RevisionTypeDescription
+ NoneThe number is not modified.
+ AutomaticA number that starts at 0 at midnight, and constantly increases throughout the day (changing roughly every 1.3 seconds). Guaranteed to be safe for components of the AssemblyVersion attribute.
+ IncrementIncreases the previous value by 1.
+ BuildIncrementIncreases the previous value by 1 when the value of is unchanged. If the value of has changed, is reset to zero.
+
+
+
+
+
+ Gets or sets the starting date used to calculate the number when is Automatic.
+
+ The starting date for calculation of the build number.
+
+ This value is only used when the is Automatic.
+ This default value is January 1, 2000.
+
+
+
+
+ Downloads a resource with the specified URI to a local file.
+
+ Download the Microsoft.com home page.
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the local file that is to receive the data.
+
+ The name of the file.
+
+
+
+ Gets or sets the URI from which to download data.
+
+ The file URI.
+
+
+
+ Reads a value from a XML document using a XPath.
+
+ Read all targest from a build project.
+
+
+
+
+ ]]>
+
+
+ If the XPath returns multiple nodes, the Value will
+ be a semicolon delimited list of the nodes text.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the XML file.
+
+ The name of the XML file.
+
+
+
+ Gets or sets the XPath.
+
+ The XPath.
+
+
+
+ Gets the value read from file.
+
+ The value.
+
+ If the XPath returns multiple nodes, the values will be semicolon delimited.
+
+
+
+
+ Gets or sets the default namespace.
+
+ The namespace.
+
+
+
+ Gets or sets the prefix to associate with the namespace being added.
+
+ The namespace prefix.
+
+
+
+ Updates a XML document using a XPath.
+
+ Update a XML element.
+
+ ]]>
+
+
+ The XML node being updated must exist before using the XmlUpdate task.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the XML file.
+
+ The name of the XML file.
+
+
+
+ Gets or sets the XPath.
+
+ The XPath.
+
+
+
+ Gets or sets the value to write.
+
+ The value.
+
+
+
+ Gets or sets the default namespace.
+
+ The namespace.
+
+
+
+ Gets or sets the prefix to associate with the namespace being added.
+
+ The namespace prefix.
+
+
+
+ Create a zip file with the files specified.
+
+ Create a zip file
+
+
+
+
+
+
+ ]]>
+ Create a zip file using a working directory.
+
+
+
+
+
+
+ ]]>
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, executes the task.
+
+
+ true if the task successfully executed; otherwise, false.
+
+
+
+
+ Gets or sets the name of the zip file.
+
+ The name of the zip file.
+
+
+
+ Gets or sets the zip level.
+
+ The zip level.
+ 0 - store only to 9 - means best compression
+
+
+
+ Gets or sets the files to zip.
+
+ The files to zip.
+
+
+
+ Gets or sets a value indicating whether this is flatten.
+
+ true if flatten; otherwise, false.
+
+ Flattening the zip means that all directories will be removed
+ and the files will be place at the root of the zip file
+
+
+
+
+ Gets or sets the comment.
+
+ The comment.
+
+
+
+ Gets or sets the working directory for the zip file.
+
+ The working directory.
+
+ The working directory is the base of the zip file.
+ All files will be made relative from the working directory.
+
+
+
+
diff --git a/tools/MSBuildCommunityTasks/Sample.proj b/tools/MSBuildCommunityTasks/Sample.proj
new file mode 100644
index 00000000..4d323d47
--- /dev/null
+++ b/tools/MSBuildCommunityTasks/Sample.proj
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ list = new List();
+ list.Add("Happy");
+ list.Add("New");
+ list.Add("Year");
+ Console.WriteLine("Hello MSBuild Community Scripting World.");
+ foreach(string s in list)
+ {
+ Console.WriteLine(s);
+ }
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/SqlCmd/Microsoft.SqlServer.ServiceBroker.Diagnostics.dll b/tools/SqlCmd/Microsoft.SqlServer.ServiceBroker.Diagnostics.dll
new file mode 100644
index 00000000..94d56b8e
Binary files /dev/null and b/tools/SqlCmd/Microsoft.SqlServer.ServiceBroker.Diagnostics.dll differ
diff --git a/tools/SqlCmd/OSQL.EXE b/tools/SqlCmd/OSQL.EXE
new file mode 100644
index 00000000..859ecf44
Binary files /dev/null and b/tools/SqlCmd/OSQL.EXE differ
diff --git a/tools/SqlCmd/Resources/1033/SQLCMD.rll b/tools/SqlCmd/Resources/1033/SQLCMD.rll
new file mode 100644
index 00000000..e15e67cd
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/SQLCMD.rll differ
diff --git a/tools/SqlCmd/Resources/1033/SQLDIAG.rll b/tools/SqlCmd/Resources/1033/SQLDIAG.rll
new file mode 100644
index 00000000..bc259bb8
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/SQLDIAG.rll differ
diff --git a/tools/SqlCmd/Resources/1033/SQLSVC.RLL b/tools/SqlCmd/Resources/1033/SQLSVC.RLL
new file mode 100644
index 00000000..858e8b09
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/SQLSVC.RLL differ
diff --git a/tools/SqlCmd/Resources/1033/SqlManager.rll b/tools/SqlCmd/Resources/1033/SqlManager.rll
new file mode 100644
index 00000000..5762f9f7
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/SqlManager.rll differ
diff --git a/tools/SqlCmd/Resources/1033/bcp.rll b/tools/SqlCmd/Resources/1033/bcp.rll
new file mode 100644
index 00000000..e830aaa8
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/bcp.rll differ
diff --git a/tools/SqlCmd/Resources/1033/license_SQLCMD.txt b/tools/SqlCmd/Resources/1033/license_SQLCMD.txt
new file mode 100644
index 00000000..f164c6d9
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/license_SQLCMD.txt differ
diff --git a/tools/SqlCmd/Resources/1033/osql.rll b/tools/SqlCmd/Resources/1033/osql.rll
new file mode 100644
index 00000000..e81d86d8
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/osql.rll differ
diff --git a/tools/SqlCmd/Resources/1033/s11ch_configmgr.chm b/tools/SqlCmd/Resources/1033/s11ch_configmgr.chm
new file mode 100644
index 00000000..ca84253f
Binary files /dev/null and b/tools/SqlCmd/Resources/1033/s11ch_configmgr.chm differ
diff --git a/tools/SqlCmd/Resources/1033/sqlcm.xml b/tools/SqlCmd/Resources/1033/sqlcm.xml
new file mode 100644
index 00000000..a2a7fa7e
--- /dev/null
+++ b/tools/SqlCmd/Resources/1033/sqlcm.xml
@@ -0,0 +1,433 @@
+
+
+ <_locDefinition>
+ <_locDefault _loc="locNone"/>
+ <_locTag _loc="locNone" _locAttrData="locDescr">item
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/SqlCmd/Resources/SqlLocalDB.rll b/tools/SqlCmd/Resources/SqlLocalDB.rll
new file mode 100644
index 00000000..a686f84c
Binary files /dev/null and b/tools/SqlCmd/Resources/SqlLocalDB.rll differ
diff --git a/tools/SqlCmd/Resources/en-US/SqlLocalDB.rll.mui b/tools/SqlCmd/Resources/en-US/SqlLocalDB.rll.mui
new file mode 100644
index 00000000..15d9dc68
Binary files /dev/null and b/tools/SqlCmd/Resources/en-US/SqlLocalDB.rll.mui differ
diff --git a/tools/SqlCmd/SQLCMD.EXE b/tools/SqlCmd/SQLCMD.EXE
new file mode 100644
index 00000000..a37a0026
Binary files /dev/null and b/tools/SqlCmd/SQLCMD.EXE differ
diff --git a/tools/SqlCmd/SQLSCM.DLL b/tools/SqlCmd/SQLSCM.DLL
new file mode 100644
index 00000000..a97dc200
Binary files /dev/null and b/tools/SqlCmd/SQLSCM.DLL differ
diff --git a/tools/SqlCmd/SQLSVC.DLL b/tools/SqlCmd/SQLSVC.DLL
new file mode 100644
index 00000000..cb360378
Binary files /dev/null and b/tools/SqlCmd/SQLSVC.DLL differ
diff --git a/tools/SqlCmd/SQLdiag.exe b/tools/SqlCmd/SQLdiag.exe
new file mode 100644
index 00000000..68bc2b75
Binary files /dev/null and b/tools/SqlCmd/SQLdiag.exe differ
diff --git a/tools/SqlCmd/SSBDiagnose.exe b/tools/SqlCmd/SSBDiagnose.exe
new file mode 100644
index 00000000..a9a911d1
Binary files /dev/null and b/tools/SqlCmd/SSBDiagnose.exe differ
diff --git a/tools/SqlCmd/SqlLocalDB.exe b/tools/SqlCmd/SqlLocalDB.exe
new file mode 100644
index 00000000..d05d1a89
Binary files /dev/null and b/tools/SqlCmd/SqlLocalDB.exe differ
diff --git a/tools/SqlCmd/SqlLogShip.exe b/tools/SqlCmd/SqlLogShip.exe
new file mode 100644
index 00000000..68690c8e
Binary files /dev/null and b/tools/SqlCmd/SqlLogShip.exe differ
diff --git a/tools/SqlCmd/SqlLogShip.exe.config b/tools/SqlCmd/SqlLogShip.exe.config
new file mode 100644
index 00000000..5fb219f7
--- /dev/null
+++ b/tools/SqlCmd/SqlLogShip.exe.config
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/tools/SqlCmd/SqlManager.dll b/tools/SqlCmd/SqlManager.dll
new file mode 100644
index 00000000..66e1976a
Binary files /dev/null and b/tools/SqlCmd/SqlManager.dll differ
diff --git a/tools/SqlCmd/SqlResourceLoader.dll b/tools/SqlCmd/SqlResourceLoader.dll
new file mode 100644
index 00000000..ce6978d5
Binary files /dev/null and b/tools/SqlCmd/SqlResourceLoader.dll differ
diff --git a/tools/SqlCmd/batchparser.dll b/tools/SqlCmd/batchparser.dll
new file mode 100644
index 00000000..8ee4a6a6
Binary files /dev/null and b/tools/SqlCmd/batchparser.dll differ
diff --git a/tools/SqlCmd/bcp.exe b/tools/SqlCmd/bcp.exe
new file mode 100644
index 00000000..3990499e
Binary files /dev/null and b/tools/SqlCmd/bcp.exe differ
diff --git a/tools/SqlCmd/sqlresld.dll b/tools/SqlCmd/sqlresld.dll
new file mode 100644
index 00000000..f8e0a3a7
Binary files /dev/null and b/tools/SqlCmd/sqlresld.dll differ
diff --git a/tools/SqlCmd/xmlrw.dll b/tools/SqlCmd/xmlrw.dll
new file mode 100644
index 00000000..ebadf52b
Binary files /dev/null and b/tools/SqlCmd/xmlrw.dll differ
diff --git a/tools/WIX/Microsoft.Deployment.Compression.Cab.dll b/tools/WIX/Microsoft.Deployment.Compression.Cab.dll
new file mode 100644
index 00000000..f5de31ad
Binary files /dev/null and b/tools/WIX/Microsoft.Deployment.Compression.Cab.dll differ
diff --git a/tools/WIX/Microsoft.Deployment.Compression.dll b/tools/WIX/Microsoft.Deployment.Compression.dll
new file mode 100644
index 00000000..24445732
Binary files /dev/null and b/tools/WIX/Microsoft.Deployment.Compression.dll differ
diff --git a/tools/WIX/Microsoft.Deployment.Resources.dll b/tools/WIX/Microsoft.Deployment.Resources.dll
new file mode 100644
index 00000000..17a9d340
Binary files /dev/null and b/tools/WIX/Microsoft.Deployment.Resources.dll differ
diff --git a/tools/WIX/Microsoft.Deployment.WindowsInstaller.Package.dll b/tools/WIX/Microsoft.Deployment.WindowsInstaller.Package.dll
new file mode 100644
index 00000000..d509c647
Binary files /dev/null and b/tools/WIX/Microsoft.Deployment.WindowsInstaller.Package.dll differ
diff --git a/tools/WIX/Microsoft.Deployment.WindowsInstaller.dll b/tools/WIX/Microsoft.Deployment.WindowsInstaller.dll
new file mode 100644
index 00000000..0a7d1e99
Binary files /dev/null and b/tools/WIX/Microsoft.Deployment.WindowsInstaller.dll differ
diff --git a/tools/WIX/SetupBuilder.dll b/tools/WIX/SetupBuilder.dll
new file mode 100644
index 00000000..87c02c7d
Binary files /dev/null and b/tools/WIX/SetupBuilder.dll differ
diff --git a/tools/WIX/WixBalExtension.dll b/tools/WIX/WixBalExtension.dll
new file mode 100644
index 00000000..6de1915d
Binary files /dev/null and b/tools/WIX/WixBalExtension.dll differ
diff --git a/tools/WIX/WixCop.exe b/tools/WIX/WixCop.exe
new file mode 100644
index 00000000..a7015b51
Binary files /dev/null and b/tools/WIX/WixCop.exe differ
diff --git a/tools/WIX/WixDependencyExtension.dll b/tools/WIX/WixDependencyExtension.dll
new file mode 100644
index 00000000..7c1c8af5
Binary files /dev/null and b/tools/WIX/WixDependencyExtension.dll differ
diff --git a/tools/WIX/WixDifxAppExtension.dll b/tools/WIX/WixDifxAppExtension.dll
new file mode 100644
index 00000000..04d337f0
Binary files /dev/null and b/tools/WIX/WixDifxAppExtension.dll differ
diff --git a/tools/WIX/WixDirectXExtension.dll b/tools/WIX/WixDirectXExtension.dll
new file mode 100644
index 00000000..26bbc865
Binary files /dev/null and b/tools/WIX/WixDirectXExtension.dll differ
diff --git a/tools/WIX/WixFirewallExtension.dll b/tools/WIX/WixFirewallExtension.dll
new file mode 100644
index 00000000..407e050a
Binary files /dev/null and b/tools/WIX/WixFirewallExtension.dll differ
diff --git a/tools/WIX/WixGamingExtension.dll b/tools/WIX/WixGamingExtension.dll
new file mode 100644
index 00000000..d85afcd9
Binary files /dev/null and b/tools/WIX/WixGamingExtension.dll differ
diff --git a/tools/WIX/WixIIsExtension.dll b/tools/WIX/WixIIsExtension.dll
new file mode 100644
index 00000000..ec566a27
Binary files /dev/null and b/tools/WIX/WixIIsExtension.dll differ
diff --git a/tools/WIX/WixNetFxExtension.dll b/tools/WIX/WixNetFxExtension.dll
new file mode 100644
index 00000000..71f6d98f
Binary files /dev/null and b/tools/WIX/WixNetFxExtension.dll differ
diff --git a/tools/WIX/WixPSExtension.dll b/tools/WIX/WixPSExtension.dll
new file mode 100644
index 00000000..af23fccb
Binary files /dev/null and b/tools/WIX/WixPSExtension.dll differ
diff --git a/tools/WIX/WixSqlExtension.dll b/tools/WIX/WixSqlExtension.dll
new file mode 100644
index 00000000..7da1c76f
Binary files /dev/null and b/tools/WIX/WixSqlExtension.dll differ
diff --git a/tools/WIX/WixTagExtension.dll b/tools/WIX/WixTagExtension.dll
new file mode 100644
index 00000000..21c8451c
Binary files /dev/null and b/tools/WIX/WixTagExtension.dll differ
diff --git a/tools/WIX/WixTasks.dll b/tools/WIX/WixTasks.dll
new file mode 100644
index 00000000..5c617f5f
Binary files /dev/null and b/tools/WIX/WixTasks.dll differ
diff --git a/tools/WIX/WixUIExtension.dll b/tools/WIX/WixUIExtension.dll
new file mode 100644
index 00000000..e8404e2b
Binary files /dev/null and b/tools/WIX/WixUIExtension.dll differ
diff --git a/tools/WIX/WixUtilExtension.dll b/tools/WIX/WixUtilExtension.dll
new file mode 100644
index 00000000..c81c4c72
Binary files /dev/null and b/tools/WIX/WixUtilExtension.dll differ
diff --git a/tools/WIX/WixVSExtension.dll b/tools/WIX/WixVSExtension.dll
new file mode 100644
index 00000000..7e3fc469
Binary files /dev/null and b/tools/WIX/WixVSExtension.dll differ
diff --git a/tools/WIX/candle.exe b/tools/WIX/candle.exe
new file mode 100644
index 00000000..279e85cb
Binary files /dev/null and b/tools/WIX/candle.exe differ
diff --git a/tools/WIX/candle.exe.config b/tools/WIX/candle.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/candle.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/darice.cub b/tools/WIX/darice.cub
new file mode 100644
index 00000000..dab45677
Binary files /dev/null and b/tools/WIX/darice.cub differ
diff --git a/tools/WIX/dark.exe b/tools/WIX/dark.exe
new file mode 100644
index 00000000..6cedfcbc
Binary files /dev/null and b/tools/WIX/dark.exe differ
diff --git a/tools/WIX/dark.exe.config b/tools/WIX/dark.exe.config
new file mode 100644
index 00000000..786f4763
--- /dev/null
+++ b/tools/WIX/dark.exe.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/difxapp_x64.wixlib b/tools/WIX/difxapp_x64.wixlib
new file mode 100644
index 00000000..840f7449
Binary files /dev/null and b/tools/WIX/difxapp_x64.wixlib differ
diff --git a/tools/WIX/difxapp_x86.wixlib b/tools/WIX/difxapp_x86.wixlib
new file mode 100644
index 00000000..c7caf413
Binary files /dev/null and b/tools/WIX/difxapp_x86.wixlib differ
diff --git a/tools/WIX/doc/Dependency.xsd b/tools/WIX/doc/Dependency.xsd
new file mode 100644
index 00000000..08f490e2
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/IsolatedApp.xsd b/tools/WIX/doc/IsolatedApp.xsd
new file mode 100644
index 00000000..5bfa958a
--- /dev/null
+++ b/tools/WIX/doc/IsolatedApp.xsd
@@ -0,0 +1,242 @@
+
+
+
+
+
+ Schema for describing Isolated Applications.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}".
+
+
+
+
+
+
+ Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.
+
+
+
+
+
diff --git a/tools/WIX/doc/OfficeAddin.xsd b/tools/WIX/doc/OfficeAddin.xsd
new file mode 100644
index 00000000..e01d648d
--- /dev/null
+++ b/tools/WIX/doc/OfficeAddin.xsd
@@ -0,0 +1,262 @@
+
+
+
+
+
+ Schema for describing Office Addins.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF" or "{01234567-89AB-CDEF-0123-456789ABCDEF}".
+
+
+
+
+
+
+ Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.
+
+
+
+
+
diff --git a/tools/WIX/doc/bal.xsd b/tools/WIX/doc/bal.xsd
new file mode 100644
index 00000000..94d5f3dc
--- /dev/null
+++ b/tools/WIX/doc/bal.xsd
@@ -0,0 +1,171 @@
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+ 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 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.
+
+
+
+
+
+
+
+
+ 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/tools/WIX/doc/complus.xsd b/tools/WIX/doc/complus.xsd
new file mode 100644
index 00000000..2db210d0
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/difxapp.xsd b/tools/WIX/doc/difxapp.xsd
new file mode 100644
index 00000000..22c6ed2d
--- /dev/null
+++ b/tools/WIX/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, difxapp_x64.wixlib, or difxapp_ia64.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/tools/WIX/doc/firewall.xsd b/tools/WIX/doc/firewall.xsd
new file mode 100644
index 00000000..2a226094
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/gaming.xsd b/tools/WIX/doc/gaming.xsd
new file mode 100644
index 00000000..89e01829
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/iis.xsd b/tools/WIX/doc/iis.xsd
new file mode 100644
index 00000000..0491540e
--- /dev/null
+++ b/tools/WIX/doc/iis.xsd
@@ -0,0 +1,1107 @@
+
+
+
+
+
+ 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. 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/tools/WIX/doc/lux.xsd b/tools/WIX/doc/lux.xsd
new file mode 100644
index 00000000..b9f02c97
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/msmq.xsd b/tools/WIX/doc/msmq.xsd
new file mode 100644
index 00000000..c76c59cb
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/netfx.xsd b/tools/WIX/doc/netfx.xsd
new file mode 100644
index 00000000..64b4e1fb
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/ps.xsd b/tools/WIX/doc/ps.xsd
new file mode 100644
index 00000000..940a02f9
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/sql.xsd b/tools/WIX/doc/sql.xsd
new file mode 100644
index 00000000..8765e261
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/tag.xsd b/tools/WIX/doc/tag.xsd
new file mode 100644
index 00000000..bd7447f2
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/thmutil.xsd b/tools/WIX/doc/thmutil.xsd
new file mode 100644
index 00000000..733066d7
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/util.xsd b/tools/WIX/doc/util.xsd
new file mode 100644
index 00000000..ec7690a4
--- /dev/null
+++ b/tools/WIX/doc/util.xsd
@@ -0,0 +1,1556 @@
+
+
+
+
+
+ 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).
+
+
+
+
+ Name of the exectuable to be closed. This should only be 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.
+
+
+
+
+ Optionally sends a close message to the application from deffered action without impersonation. Default is no.
+
+
+
+
+ Optionally prompts for reboot if application is still running. Default is yes.
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+ 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. To use PermissionEx with an IA-64 MSI, you must
+ compile all of your source files with the "-arch ia64" switch, to ensure the IA-64 custom action is used, and not
+ the x64 custom action.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+ ProductCode to search for.
+
+
+
+
+
+ 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 (3).
+
+
+
+
+ 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 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.
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/WIX/doc/vs.xsd b/tools/WIX/doc/vs.xsd
new file mode 100644
index 00000000..8805050e
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/doc/wix.chm b/tools/WIX/doc/wix.chm
new file mode 100644
index 00000000..7edfaacf
Binary files /dev/null and b/tools/WIX/doc/wix.chm differ
diff --git a/tools/WIX/doc/wix.xsd b/tools/WIX/doc/wix.xsd
new file mode 100644
index 00000000..e16d0d40
--- /dev/null
+++ b/tools/WIX/doc/wix.xsd
@@ -0,0 +1,12944 @@
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+ 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 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 desciption 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"
+ inidicates 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 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.
+
+
+
+
+
+
+ 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 a 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 resouces.
+
+
+
+
+ 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.
+
+
+
+
+
+
+ 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 depends on the value of the Package/@Platform attribute: if the @Platform attribute value is 'x86', the default @Win64 attribute value is 'no'; otherwise, 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 and removes services for parent Component.
+
+
+
+
+ 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 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 Guid attribute.
+
+
+
+
+
+
+ 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 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, etc).
+ 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
+ the directory name 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.
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+ 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 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/tools/WIX/doc/wixloc.xsd b/tools/WIX/doc/wixloc.xsd
new file mode 100644
index 00000000..63c08485
--- /dev/null
+++ b/tools/WIX/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/tools/WIX/heat.exe b/tools/WIX/heat.exe
new file mode 100644
index 00000000..43198075
Binary files /dev/null and b/tools/WIX/heat.exe differ
diff --git a/tools/WIX/heat.exe.config b/tools/WIX/heat.exe.config
new file mode 100644
index 00000000..1c6e8ada
--- /dev/null
+++ b/tools/WIX/heat.exe.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/insignia.exe b/tools/WIX/insignia.exe
new file mode 100644
index 00000000..37deb2b2
Binary files /dev/null and b/tools/WIX/insignia.exe differ
diff --git a/tools/WIX/insignia.exe.config b/tools/WIX/insignia.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/insignia.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/light.exe b/tools/WIX/light.exe
new file mode 100644
index 00000000..9f5602d6
Binary files /dev/null and b/tools/WIX/light.exe differ
diff --git a/tools/WIX/light.exe.config b/tools/WIX/light.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/light.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/lit.exe b/tools/WIX/lit.exe
new file mode 100644
index 00000000..c8c7219a
Binary files /dev/null and b/tools/WIX/lit.exe differ
diff --git a/tools/WIX/lit.exe.config b/tools/WIX/lit.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/lit.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/melt.exe b/tools/WIX/melt.exe
new file mode 100644
index 00000000..8019cb60
Binary files /dev/null and b/tools/WIX/melt.exe differ
diff --git a/tools/WIX/melt.exe.config b/tools/WIX/melt.exe.config
new file mode 100644
index 00000000..943586e4
--- /dev/null
+++ b/tools/WIX/melt.exe.config
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/mergemod.cub b/tools/WIX/mergemod.cub
new file mode 100644
index 00000000..2042a99e
Binary files /dev/null and b/tools/WIX/mergemod.cub differ
diff --git a/tools/WIX/mergemod.dll b/tools/WIX/mergemod.dll
new file mode 100644
index 00000000..cc53b1c7
Binary files /dev/null and b/tools/WIX/mergemod.dll differ
diff --git a/tools/WIX/mspatchc.dll b/tools/WIX/mspatchc.dll
new file mode 100644
index 00000000..4720f1a0
Binary files /dev/null and b/tools/WIX/mspatchc.dll differ
diff --git a/tools/WIX/pyro.exe b/tools/WIX/pyro.exe
new file mode 100644
index 00000000..603240dd
Binary files /dev/null and b/tools/WIX/pyro.exe differ
diff --git a/tools/WIX/pyro.exe.config b/tools/WIX/pyro.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/pyro.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/retina.exe b/tools/WIX/retina.exe
new file mode 100644
index 00000000..59602298
Binary files /dev/null and b/tools/WIX/retina.exe differ
diff --git a/tools/WIX/retina.exe.config b/tools/WIX/retina.exe.config
new file mode 100644
index 00000000..943586e4
--- /dev/null
+++ b/tools/WIX/retina.exe.config
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/sdk/BootstrapperCore.config b/tools/WIX/sdk/BootstrapperCore.config
new file mode 100644
index 00000000..69e791b4
--- /dev/null
+++ b/tools/WIX/sdk/BootstrapperCore.config
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/sdk/BootstrapperCore.dll b/tools/WIX/sdk/BootstrapperCore.dll
new file mode 100644
index 00000000..ebe3de46
Binary files /dev/null and b/tools/WIX/sdk/BootstrapperCore.dll differ
diff --git a/tools/WIX/sdk/DocCompiler.exe b/tools/WIX/sdk/DocCompiler.exe
new file mode 100644
index 00000000..43779fe6
Binary files /dev/null and b/tools/WIX/sdk/DocCompiler.exe differ
diff --git a/tools/WIX/sdk/MakeSfxCA.exe b/tools/WIX/sdk/MakeSfxCA.exe
new file mode 100644
index 00000000..edc5fc2b
Binary files /dev/null and b/tools/WIX/sdk/MakeSfxCA.exe differ
diff --git a/tools/WIX/sdk/MakeSfxCA.exe.config b/tools/WIX/sdk/MakeSfxCA.exe.config
new file mode 100644
index 00000000..02c468a7
--- /dev/null
+++ b/tools/WIX/sdk/MakeSfxCA.exe.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.dll b/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.dll
new file mode 100644
index 00000000..f5de31ad
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.xml b/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.xml
new file mode 100644
index 00000000..54bd28f5
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.Compression.Cab.xml
@@ -0,0 +1,465 @@
+
+
+
+ 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.
+
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.dll b/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.dll
new file mode 100644
index 00000000..6de59f49
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.xml b/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.xml
new file mode 100644
index 00000000..75780575
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.Compression.Zip.xml
@@ -0,0 +1,522 @@
+
+
+
+ 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.
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.dll b/tools/WIX/sdk/Microsoft.Deployment.Compression.dll
new file mode 100644
index 00000000..24445732
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.Compression.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Compression.xml b/tools/WIX/sdk/Microsoft.Deployment.Compression.xml
new file mode 100644
index 00000000..18eb1be6
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.Compression.xml
@@ -0,0 +1,1935 @@
+
+
+
+ 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
+ StartArchiveBegin extracting archive
+ StartFileBegin extracting first file
+ PartialFileExtracting first file
+ PartialFileExtracting first file
+ FinishFileFinished extracting first file
+ StartFileBegin extracting second file
+ PartialFileExtracting second file
+ FinishFileFinished 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
+ StartFileBegin compressing first file
+ FinishFileFinished compressing first file
+ StartFileBegin compressing second file
+ PartialFileCompressing second file
+ PartialFileCompressing second file
+ FinishFileFinished compressing second file
+ StartArchiveBegin writing first archive
+ PartialArchiveWriting first archive
+ FinishArchiveFinished writing first archive
+ StartFileBegin compressing third file
+ PartialFileCompressing third file
+ FinishFileFinished compressing third file
+ StartArchiveBegin writing second archive
+ PartialArchiveWriting second archive
+ FinishArchiveFinished 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.
+
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Resources.dll b/tools/WIX/sdk/Microsoft.Deployment.Resources.dll
new file mode 100644
index 00000000..17a9d340
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.Resources.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.Resources.xml b/tools/WIX/sdk/Microsoft.Deployment.Resources.xml
new file mode 100644
index 00000000..a5fe1001
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.Resources.xml
@@ -0,0 +1,511 @@
+
+
+
+ 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.
+
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll
new file mode 100644
index 00000000..231d8589
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml
new file mode 100644
index 00000000..c297f892
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Linq.xml
@@ -0,0 +1,434 @@
+
+
+
+ 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
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll
new file mode 100644
index 00000000..d509c647
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml
new file mode 100644
index 00000000..1450ade6
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.Package.xml
@@ -0,0 +1,679 @@
+
+
+
+ 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.
+
+
+
+
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.dll b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.dll
new file mode 100644
index 00000000..0a7d1e99
Binary files /dev/null and b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.dll differ
diff --git a/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.xml b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.xml
new file mode 100644
index 00000000..ca8df3c2
--- /dev/null
+++ b/tools/WIX/sdk/Microsoft.Deployment.WindowsInstaller.xml
@@ -0,0 +1,7383 @@
+
+
+
+ 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.
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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 .
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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 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.
+
+
+
+
+ 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
+
+
+
+
+ [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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ [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
+
+
+
+
+ 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
+
+
+
+
+
+ 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
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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:
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ [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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+ [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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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 .
+
+
+
+
+ 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 .
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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 .
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ Formats a string containing installer properties.
+
+ A format string containing property tokens
+ A formatted string containing property data
+ the Record handle is invalid
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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:
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+ 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.
+
+
+
+
+ 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
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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.
+
+
+
+
+ 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
+