<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.Deployment.WindowsInstaller</name>
    </assembly>
    <members>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ColumnCollection">
            <summary>
            Collection of column information related to a <see cref="T:Microsoft.Deployment.WindowsInstaller.TableInfo"/> or
            <see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.#ctor(System.Collections.Generic.ICollection{Microsoft.Deployment.WindowsInstaller.ColumnInfo})">
            <summary>
            Creates a new ColumnCollection based on a specified list of columns.
            </summary>
            <param name="columns">columns to be added to the new collection</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.#ctor(Microsoft.Deployment.WindowsInstaller.View)">
            <summary>
            Creates a new ColumnCollection that is associated with a database table.
            </summary>
            <param name="view">view that contains the columns</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Add(Microsoft.Deployment.WindowsInstaller.ColumnInfo)">
            <summary>
            Not supported because the collection is read-only.
            </summary>
            <param name="item">information about the column being added</param>
            <exception cref="T:System.InvalidOperationException">the collection is read-only</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Clear">
            <summary>
            Not supported because the collection is read-only.
            </summary>
            <exception cref="T:System.InvalidOperationException">the collection is read-only</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Contains(System.String)">
            <summary>
            Checks if a column with a given name exists in the collection.
            </summary>
            <param name="columnName">case-sensitive name of the column to look for</param>
            <returns>true if the column exists in the collection, false otherwise</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.System#Collections#Generic#ICollection{Microsoft#Deployment#WindowsInstaller#ColumnInfo}#Contains(Microsoft.Deployment.WindowsInstaller.ColumnInfo)">
            <summary>
            Checks if a column with a given name exists in the collection.
            </summary>
            <param name="column">column to look for, with case-sensitive name</param>
            <returns>true if the column exists in the collection, false otherwise</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.IndexOf(System.String)">
            <summary>
            Gets the index of a column within the collection.
            </summary>
            <param name="columnName">case-sensitive name of the column to look for</param>
            <returns>0-based index of the column, or -1 if not found</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.CopyTo(Microsoft.Deployment.WindowsInstaller.ColumnInfo[],System.Int32)">
            <summary>
            Copies the columns from this collection into an array.
            </summary>
            <param name="array">destination array to be filed</param>
            <param name="arrayIndex">offset into the destination array where copying begins</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.System#Collections#Generic#ICollection{Microsoft#Deployment#WindowsInstaller#ColumnInfo}#Remove(Microsoft.Deployment.WindowsInstaller.ColumnInfo)">
            <summary>
            Not supported because the collection is read-only.
            </summary>
            <param name="column">column to remove</param>
            <returns>true if the column was removed, false if it was not found</returns>
            <exception cref="T:System.InvalidOperationException">the collection is read-only</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.GetEnumerator">
            <summary>
            Gets an enumerator over the columns in the collection.
            </summary>
            <returns>An enumerator of ColumnInfo objects.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Gets an enumerator over the columns in the collection.
            </summary>
            <returns>An enumerator of ColumnInfo objects.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.GetViewColumns(Microsoft.Deployment.WindowsInstaller.View)">
            <summary>
            Creates ColumnInfo objects for the associated view.
            </summary>
            <returns>dynamically-generated list of columns</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.GetViewColumns(Microsoft.Deployment.WindowsInstaller.View,System.Boolean)">
            <summary>
            Gets a list of column names or column-definition-strings for the
            associated view.
            </summary>
            <param name="view">the view to that defines the columns</param>
            <param name="types">true to return types (column definition strings),
            false to return names</param>
            <returns>list of column names or types</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Count">
            <summary>
            Gets the number of columns in the collection.
            </summary>
            <value>number of columns in the collection</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnCollection.IsReadOnly">
            <summary>
            Gets a boolean value indicating whether the collection is read-only.
            A ColumnCollection is read-only if it is associated with a <see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>
            or a read-only <see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.
            </summary>
            <value>read-only status of the collection</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Item(System.Int32)">
            <summary>
            Gets information about a specific column in the collection.
            </summary>
            <param name="columnIndex">1-based index into the column collection</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="columnIndex"/> is less
            than 1 or greater than the number of columns in the collection</exception>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Item(System.String)">
            <summary>
            Gets information about a specific column in the collection.
            </summary>
            <param name="columnName">case-sensitive name of a column collection</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="columnName"/> does
            not exist in the collection</exception>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnCollection.FormatString">
            <summary>
            Gets a string suitable for printing all the values of a record containing these columns.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ComponentAttributes">
            <summary>
            Available values for the Attributes column of the Component table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.None">
            <summary>
            Local only - Component cannot be run from source. 
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.SourceOnly">
            <summary>
            Component can only be run from source.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.Optional">
            <summary>
            Component can run locally or from source.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.RegistryKeyPath">
            <summary>
            If this bit is set, the value in the KeyPath column is used as a key into the Registry table.
            </summary>
            <remarks><p>
            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.
            <p>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.</p>
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.SharedDllRefCount">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.Permanent">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.OdbcDataSource">
            <summary>
            If this bit is set, the value in the KeyPath column is a key into the ODBCDataSource table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.Transitive">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.NeverOverwrite">
            <summary>
            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.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.SixtyFourBit">
            <summary>
            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.
            </summary>
            <remarks><p>
            If this is a 64-bit component replacing a 32-bit component, set this bit and assign a new GUID in the
            ComponentId column.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.DisableRegistryReflection">
            <summary>
            Set this bit to disable registry reflection on all existing and new registry keys affected by this component.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.UninstallOnSupersedence">
            <summary>
            [MSI 4.5] Set this bit for a component in a patch package to prevent leaving orphan components on the computer.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.Shared">
            <summary>
            [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.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ControlAttributes">
            <summary>
            Defines flags for the Attributes column of the Control table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Visible">
            <summary>If this bit is set, the control is visible on the dialog box.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Enabled">
            <summary>specifies if the given control is enabled or disabled. Most controls appear gray when disabled.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Sunken">
            <summary>If this bit is set, the control is displayed with a sunken, three dimensional look.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Indirect">
            <summary>The Indirect control attribute specifies whether the value displayed or changed by this control is referenced indirectly.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Integer">
            <summary>If this bit is set on a control, the associated property specified in the Property column of the Control table is an integer.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.RightToLeftReadingOrder">
            <summary>If this bit is set the text in the control is displayed in a right-to-left reading order.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.RightAligned">
            <summary>If this style bit is set, text in the control is aligned to the right.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.LeftScroll">
            <summary>If this bit is set, the scroll bar is located on the left side of the control, otherwise it is on the right.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Bidirectional">
            <summary>This is a combination of the RightToLeftReadingOrder, RightAligned, and LeftScroll attributes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Transparent">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.NoPrefix">
            <summary>If this bit is set on a text control, the occurrence of the character "&amp;" in a text string is displayed as itself.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.NoWrap">
            <summary>If this bit is set the text in the control is displayed on a single line.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.FormatSize">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.UsersLanguage">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Multiline">
            <summary>If this bit is set on an Edit control, the installer creates a multiple line edit control with a vertical scroll bar.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.PasswordInput">
            <summary>This attribute creates an edit control for entering passwords. The control displays each character as an asterisk (*) as they are typed into the control.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Progress95">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.RemovableVolume">
            <summary>If this bit is set, the control shows removable volumes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.FixedVolume">
            <summary>If this bit is set, the control shows fixed internal hard drives.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.RemoteVolume">
            <summary>If this bit is set, the control shows remote volumes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.CdromVolume">
            <summary>If this bit is set, the control shows CD-ROM volumes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.RamDiskVolume">
            <summary>If this bit is set, the control shows RAM disk volumes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.FloppyVolume">
            <summary>If this bit is set, the control shows floppy volumes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.ShowRollbackCost">
            <summary>Specifies whether or not the rollback backup files are included in the costs displayed by the VolumeCostList control.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Sorted">
            <summary>If this bit is set, the items listed in the control are displayed in a specified order. Otherwise, items are displayed in alphabetical order.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.ComboList">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.PushLike">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Bitmap">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.Icon">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.FixedSize">
            <summary>If this bit is set, the picture is cropped or centered in the control without changing its shape or size.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.IconSize16">
            <summary>Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.IconSize32">
            <summary>Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.IconSize48">
            <summary>Specifies which size of the icon image to load. If none of the bits are set, the first image is loaded.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.ElevationShield">
            <summary>If this bit is set, and the installation is not yet running with elevated privileges, the control is created with a UAC icon.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ControlAttributes.HasBorder">
            <summary>If this bit is set, the RadioButtonGroup has text and a border displayed around it.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.CustomActionTypes">
            <summary>
            Defines flags for the Type column of the CustomAction table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.None">
            <summary>Unspecified custom action type.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Dll">
            <summary>Target = entry point name</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Exe">
            <summary>Target = command line args</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.TextData">
            <summary>Target = text string to be formatted and set into property</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.JScript">
            <summary>Target = entry point name, null if none to call</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.VBScript">
            <summary>Target = entry point name, null if none to call</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Install">
            <summary>Target = property list for nested engine initialization</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.SourceFile">
            <summary>Source = File.File, file part of installation</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Directory">
            <summary>Source = Directory.Directory, folder containing existing file</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Property">
            <summary>Source = Property.Property, full path to executable</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Continue">
            <summary>Ignore action return status, continue running</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Async">
            <summary>Run asynchronously</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.FirstSequence">
            <summary>Skip if UI sequence already run</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.OncePerProcess">
            <summary>Skip if UI sequence already run in same process</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.ClientRepeat">
            <summary>Run on client only if UI already run on client</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.InScript">
            <summary>Queue for execution within script</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Rollback">
            <summary>In conjunction with InScript: queue in Rollback script</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.Commit">
            <summary>In conjunction with InScript: run Commit ops from script on success</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.NoImpersonate">
            <summary>No impersonation, run in system context</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.TSAware">
            <summary>Impersonate for per-machine installs on TS machines</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.SixtyFourBitScript">
            <summary>Script requires 64bit process</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.HideTarget">
            <summary>Don't record the contents of the Target field in the log file</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionTypes.PatchUninstall">
            <summary>The custom action runs only when a patch is being uninstalled</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.DialogAttributes">
            <summary>
            Defines flags for the Attributes column of the Dialog table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.Visible">
            <summary>If this bit is set, the dialog is originally created as visible, otherwise it is hidden.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.Modal">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.Minimize">
            <summary>If this bit is set, the dialog box can be minimized. This bit is ignored for modal dialog boxes, which cannot be minimized.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.SysModal">
            <summary>If this style bit is set, the dialog box will stop all other applications and no other applications can take the focus.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.KeepModeless">
            <summary>If this bit is set, the other dialogs stay alive when this dialog box is created.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.TrackDiskSpace">
            <summary>If this bit is set, the dialog box periodically calls the installer. If the property changes, it notifies the controls on the dialog.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.UseCustomPalette">
            <summary>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).</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.RightToLeftReadingOrder">
            <summary>If this style bit is set the text in the dialog box is displayed in right-to-left-reading order.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.RightAligned">
            <summary>If this style bit is set, the text is aligned on the right side of the dialog box.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.LeftScroll">
            <summary>If this style bit is set, the scroll bar is located on the left side of the dialog box.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.Bidirectional">
            <summary>This is a combination of the RightToLeftReadingOrder, RightAligned, and the LeftScroll dialog style bits.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DialogAttributes.Error">
            <summary>If this bit is set, the dialog box is an error dialog.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FeatureAttributes">
            <summary>
            Available values for the Attributes column of the Feature table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.None">
            <summary>
            Favor local - Components of this feature that are not marked for installation from source are installed locally.
            </summary>
            <remarks><p>
            A component shared by two or more features, some of which are set to FavorLocal and some to FavorSource,
            is installed locally. Components marked <see cref="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.SourceOnly"/> 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.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.FavorSource">
            <summary>
            Components of this feature not marked for local installation are installed to run from the source
            CD-ROM or server.
            </summary>
            <remarks><p>
            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 <see cref="F:Microsoft.Deployment.WindowsInstaller.ComponentAttributes.None"/> (local-only) in the
            Component table are always installed locally. The bits FavorLocal and FavorSource work with features
            not listed by the ADVERTISE property.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.FollowParent">
            <summary>
            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.
            </summary>
            <remarks><p>
            Omit this attribute and the feature state is determined according to DisallowAdvertise and
            FavorLocal and FavorSource.
            <p>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.</p>
            <p>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.</p>
            <p>Set FollowParent and UIDisallowAbsent to ensure a child feature follows the state of the parent feature.</p>
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.FavorAdvertise">
            <summary>
            Set this attribute and the feature state is Advertise.
            </summary>
            <remarks><p>
            If the feature is listed by the ADDDEFAULT property this bit is ignored and the feature state is determined
            according to FavorLocal and FavorSource.
            <p>Omit this attribute and the feature state is determined according to DisallowAdvertise and FavorLocal
            and FavorSource.</p>
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.DisallowAdvertise">
            <summary>
            Set this attribute to prevent the feature from being advertised.
            </summary>
            <remarks><p>
            Note that this bit works only with features that are listed by the ADVERTISE property.
            <p>Set this attribute and if the listed feature is not a parent or child, the feature is installed according to
            FavorLocal and FavorSource.</p>
            <p>Set this attribute for the parent of a listed feature and the parent is installed.</p>
            <p>Set this attribute for the child of a listed feature and the state of the child is Absent.</p>
            <p>Omit this attribute and if the listed feature is not a parent or child, the feature state is Advertise.</p>
            <p>Omit this attribute and if the listed feature is a parent or child, the state of both features is Advertise.</p>
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.UIDisallowAbsent">
            <summary>
            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.
            </summary>
            <remarks><p>
            Omit this attribute and the user interface displays an option to change the feature state to Absent.
            <p>Set FollowParent and UIDisallowAbsent to ensure a child feature follows the state of the parent feature.</p>
            <p>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.</p>
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.NoUnsupportedAdvertise">
            <summary>
            Set this attribute and advertising is disabled for the feature if the operating system shell does not
            support Windows Installer descriptors. 
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FileAttributes">
            <summary>
            Available values for the Attributes column of the File table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.None">
            <summary>No attributes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.ReadOnly">
            <summary>Read-only.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.Hidden">
            <summary>Hidden.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.System">
            <summary>System.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.Vital">
            <summary>The file is vital for the proper operation of the component to which it belongs.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.Checksum">
            <summary>The file contains a valid checksum. A checksum is required to repair a file that has become corrupted.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.PatchAdded">
            <summary>This bit must only be added by a patch and if the file is being added by the patch.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.NonCompressed">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.Compressed">
            <summary>
            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.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.IniFileAction">
            <summary>
            Defines values for the Action column of the IniFile and RemoveIniFile tables.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.IniFileAction.AddLine">
            <summary>Creates or updates a .ini entry.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.IniFileAction.CreateLine">
            <summary>Creates a .ini entry only if the entry does not already exist.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.IniFileAction.RemoveLine">
            <summary>Deletes .ini entry.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.IniFileAction.AddTag">
            <summary>Creates a new entry or appends a new comma-separated value to an existing entry.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.IniFileAction.RemoveTag">
            <summary>Deletes a tag from a .ini entry.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.LocatorTypes">
            <summary>
            Defines values for the Type column of the CompLocator, IniLocator, and RegLocator tables.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.LocatorTypes.Directory">
            <summary>Key path is a directory.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.LocatorTypes.FileName">
            <summary>Key path is a file name.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.LocatorTypes.RawValue">
            <summary>Key path is a registry value.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.LocatorTypes.SixtyFourBit">
            <summary>Set this bit to have the installer search the 64-bit portion of the registry.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.RegistryRoot">
            <summary>
            Defines values for the Root column of the Registry, RemoveRegistry, and RegLocator tables.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RegistryRoot.UserOrMachine">
            <summary>HKEY_CURRENT_USER for a per-user installation,
            or HKEY_LOCAL_MACHINE for a per-machine installation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RegistryRoot.ClassesRoot">
            <summary>HKEY_CLASSES_ROOT</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RegistryRoot.CurrentUser">
            <summary>HKEY_CURRENT_USER</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RegistryRoot.LocalMachine">
            <summary>HKEY_LOCAL_MACHINE</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RegistryRoot.Users">
            <summary>HKEY_USERS</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.RemoveFileModes">
            <summary>
            Defines values for the InstallMode column of the RemoveFile table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RemoveFileModes.None">
            <summary>Never remove.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RemoveFileModes.OnInstall">
            <summary>Remove when the associated component is being installed (install state = local or source).</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.RemoveFileModes.OnRemove">
            <summary>Remove when the associated component is being removed (install state = absent).</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ServiceAttributes">
            <summary>
            Defines values for the ServiceType, StartType, and ErrorControl columns of the ServiceInstall table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.None">
            <summary>No flags.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.OwnProcess">
            <summary>A Win32 service that runs its own process.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.ShareProcess">
            <summary>A Win32 service that shares a process.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.Interactive">
            <summary>A Win32 service that interacts with the desktop.
            This value cannot be used alone and must be added to either
            <see cref="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.OwnProcess"/> or <see cref="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.ShareProcess"/>.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.AutoStart">
            <summary>Service starts during startup of the system.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.DemandStart">
            <summary>Service starts when the service control manager calls the StartService function.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.Disabled">
            <summary>Specifies a service that can no longer be started.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.ErrorMessage">
            <summary>Logs the error, displays a message box and continues the startup operation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.ErrorCritical">
            <summary>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.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceAttributes.ErrorControlVital">
            <summary>When combined with other error flags, specifies that the overall install should fail if
            the service cannot be installed into the system.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents">
            <summary>
            Defines values for the Event column of the ServiceControl table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.None">
            <summary>No control events.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.Start">
            <summary>During an install, starts the service during the StartServices action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.Stop">
            <summary>During an install, stops the service during the StopServices action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.Delete">
            <summary>During an install, deletes the service during the DeleteServices action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.UninstallStart">
            <summary>During an uninstall, starts the service during the StartServices action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.UninstallStop">
            <summary>During an uninstall, stops the service during the StopServices action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ServiceControlEvents.UninstallDelete">
            <summary>During an uninstall, deletes the service during the DeleteServices action.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TextStyles">
            <summary>
            Defines values for the StyleBits column of the TextStyle table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TextStyles.Bold">
            <summary>Bold</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TextStyles.Italic">
            <summary>Italic</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TextStyles.Underline">
            <summary>Underline</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TextStyles.Strike">
            <summary>Strike out</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes">
            <summary>
            Defines values for the Attributes column of the Upgrade table.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.MigrateFeatures">
            <summary>Migrates feature states by enabling the logic in the MigrateFeatureStates action.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.OnlyDetect">
            <summary>Detects products and applications but does not remove.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.IgnoreRemoveFailure">
            <summary>Continues installation upon failure to remove a product or application.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.VersionMinInclusive">
            <summary>Detects the range of versions including the value in VersionMin.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.VersionMaxInclusive">
            <summary>Dectects the range of versions including the value in VersionMax.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UpgradeAttributes.LanguagesExclusive">
            <summary>Detects all languages, excluding the languages listed in the Language column.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ColumnInfo">
            <summary>
            Defines a single column of a table in an installer database.
            </summary>
            <remarks>Once created, a ColumnInfo object is immutable.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnInfo.#ctor(System.String,System.String)">
            <summary>
            Creates a new ColumnInfo object from a column definition.
            </summary>
            <param name="name">name of the column</param>
            <param name="columnDefinition">column definition string</param>
            <seealso cref="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.ColumnDefinitionString"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnInfo.#ctor(System.String,System.Type,System.Int32,System.Boolean)">
            <summary>
            Creates a new ColumnInfo object from a list of parameters.
            </summary>
            <param name="name">name of the column</param>
            <param name="type">type of the column; must be one of the following:
            Int16, Int32, String, or Stream</param>
            <param name="size">the maximum number of characters for String columns;
            ignored for other column types</param>
            <param name="isRequired">true if the column is required to have a non-null value</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnInfo.#ctor(System.String,System.Type,System.Int32,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Creates a new ColumnInfo object from a list of parameters.
            </summary>
            <param name="name">name of the column</param>
            <param name="type">type of the column; must be one of the following:
            Int16, Int32, String, or Stream</param>
            <param name="size">the maximum number of characters for String columns;
            ignored for other column types</param>
            <param name="isRequired">true if the column is required to have a non-null value</param>
            <param name="isTemporary">true to if the column is only in-memory and
            not persisted with the database</param>
            <param name="isLocalizable">for String columns, indicates the column
            is localizable; ignored for other column types</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ColumnInfo.ToString">
            <summary>
            Gets the name of the column.
            </summary>
            <returns>Name of the column.</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.Name">
            <summary>
            Gets the name of the column.
            </summary>
            <value>name of the column</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.Type">
            <summary>
            Gets the type of the column as a System.Type.  This is one of the following: Int16, Int32, String, or Stream
            </summary>
            <value>type of the column</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.DBType">
            <summary>
            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
            </summary>
            <value>equivalent DbType of the column as an integer</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.Size">
            <summary>
            Gets the size of the column.
            </summary>
            <value>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.</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.IsRequired">
            <summary>
            Gets a value indicating whether the column must be non-null when inserting a record.
            </summary>
            <value>required status of the column</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.IsTemporary">
            <summary>
            Gets a value indicating whether the column is temporary. Temporary columns are not persisted
            when the database is saved to disk.
            </summary>
            <value>temporary status of the column</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.IsLocalizable">
            <summary>
            Gets a value indicating whether the column is a string column that is localizable.
            </summary>
            <value>localizable status of the column</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.SqlCreateString">
            <summary>
            Gets an SQL fragment that can be used to create this column within a CREATE TABLE statement.
            </summary>
            <value>SQL fragment to be used for creating the column</value>
            <remarks><p>
            Examples:
            <list type="bullet">
            <item>LONG</item>
            <item>SHORT TEMPORARY</item>
            <item>CHAR(0) LOCALIZABLE</item>
            <item>CHAR(72) NOT NULL LOCALIZABLE</item>
            <item>OBJECT</item>
            </list>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ColumnInfo.ColumnDefinitionString">
            <summary>
            Gets a short string defining the type and size of the column. 
            </summary>
            <value>
            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.
            </value>
            <remarks><p>
            <list>
            <item>s? - String, variable length (?=1-255)</item>
            <item>s0 - String, variable length</item>
            <item>i2 - Short integer</item>
            <item>i4 - Long integer</item>
            <item>v0 - Binary Stream</item>
            <item>g? - Temporary string (?=0-255)</item>
            <item>j? - Temporary integer (?=0,1,2,4)</item>
            <item>l? - Localizable string, variable length (?=1-255)</item>
            <item>l0 - Localizable string, variable length</item>
            </list>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection">
            <summary>
            Accessor for information about components within the context of an installation session.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection.Contains(System.String)">
            <summary>
            Checks if the collection contains a component.
            </summary>
            <param name="component">name of the component</param>
            <returns>true if the component is in the collection, else false</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection.CopyTo(Microsoft.Deployment.WindowsInstaller.ComponentInfo[],System.Int32)">
            <summary>
            Copies the features into an array.
            </summary>
            <param name="array">array that receives the features</param>
            <param name="arrayIndex">offset into the array</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection.GetEnumerator">
            <summary>
            Enumerates the components in the collection.
            </summary>
            <returns>an enumerator over all features in the collection</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection.Item(System.String)">
            <summary>
            Gets information about a component within the context of an installation session.
            </summary>
            <param name="component">name of the component</param>
            <returns>component object</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInfoCollection.Count">
            <summary>
            Gets the number of components defined for the product.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ComponentInfo">
            <summary>
            Provides access to information about a component within the context of an installation session.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInfo.GetCost(Microsoft.Deployment.WindowsInstaller.InstallState)">
            <summary>
            Gets disk space per drive required to install a component.
            </summary>
            <param name="installState">Requested component state</param>
            <returns>A list of InstallCost structures, specifying the cost for each drive for the component</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponentcosts.asp">MsiEnumComponentCosts</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInfo.Name">
            <summary>
            Gets the name of the component (primary key in the Component table).
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInfo.CurrentState">
            <summary>
            Gets the current install state of the designated Component.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown Component was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetcomponentstate.asp">MsiGetComponentState</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInfo.RequestState">
            <summary>
            Gets or sets the action state of the designated Component.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown Component was requested</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetcomponentstate.asp">MsiGetComponentState</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetcomponentstate.asp">MsiSetComponentState</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ComponentInstallation">
            <summary>
            Represents an instance of a registered component.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallationPart">
            <summary>
            Subclasses of this abstract class represent an instance
            of a registered feature or component.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallationPart.Product">
            <summary>
            Gets the product that this item is a part of.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallationPart.State">
            <summary>
            Gets the current installation state of the item.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Components(System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Gets the set of installed components for products in the indicated context.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/dd407947.aspx">MsiEnumComponentsEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.#ctor(System.String)">
            <summary>
            Creates a new ComponentInstallation, automatically detecting the
            product that the component is a part of.
            </summary>
            <param name="componentCode">component GUID</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproductcode.asp">MsiGetProductCode</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.#ctor(System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Creates a new ComponentInstallation, automatically detecting the
            product that the component is a part of.
            </summary>
            <param name="componentCode">component GUID</param>
            <param name="szUserSid">context user SID</param>
            <param name="dwContext">user contexts</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.#ctor(System.String,System.String)">
            <summary>
            Creates a new ComponentInstallation for a component installed by a
            specific product.
            </summary>
            <param name="componentCode">component GUID</param>
            <param name="productCode">ProductCode GUID</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.#ctor(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Creates a new ComponentInstallation for a component installed by a
            specific product.
            </summary>
            <param name="componentCode">component GUID</param>
            <param name="productCode">ProductCode GUID</param>
            <param name="szUserSid">context user SID</param>
            <param name="dwContext">user contexts</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.AllComponents">
            <summary>
            Gets the set of installed components for all products.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponents.asp">MsiEnumComponents</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.ComponentCode">
            <summary>
            Gets the component code (GUID) of the component.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.ClientProducts">
            <summary>
            Gets all client products of a specified component.
            </summary>
            <returns>enumeration over all client products of the component</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Because clients are not ordered, any new component has an arbitrary index.
            This means that the property may return clients in any order.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumclients.asp">MsiEnumClients</a>,
            <a href="http://msdn.microsoft.com/library/dd407946.aspx">MsiEnumClientsEx</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.State">
            <summary>
            Gets the installed state of a component.
            </summary>
            <returns>the installed state of the component, or InstallState.Unknown
            if this component is not part of a product</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetcomponentpath.asp">MsiGetComponentPath</a>,
            <a href="http://msdn.microsoft.com/library/dd408006.aspx">MsiGetComponentPathEx</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Path">
            <summary>
            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.
            </summary>
            <returns>The file or registry keypath to the component, or null if the component is not available.</returns>
            <exception cref="T:System.ArgumentException">An unknown product or component was specified</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            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
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetcomponentpath.asp">MsiGetComponentPath</a>,
            <a href="http://msdn.microsoft.com/library/dd408006.aspx">MsiGetComponentPathEx</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msilocatecomponent.asp">MsiLocateComponent</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Qualifiers">
            <summary>
            Gets the set of registered qualifiers for the component.
            </summary>
            <returns>Enumeration of the qulifiers for the component.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Because qualifiers are not ordered, any new qualifier has an arbitrary index,
            meaning the function can return qualifiers in any order.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponentqualifiers.asp">MsiEnumComponentQualifiers</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Qualifier">
            <summary>
            Holds data about a component qualifier.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponentqualifiers.asp">MsiEnumComponentQualifiers</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Qualifier.QualifierCode">
            <summary>
            Gets the qualifier code.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ComponentInstallation.Qualifier.Data">
            <summary>
            Gets the qualifier data.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.CustomActionAttribute">
            <summary>
            Marks a method as a custom action entry point.
            </summary>
            <remarks><p>
            A custom action method must be defined as public and static,
            take a single <see cref="T:Microsoft.Deployment.WindowsInstaller.Session"/> object as a parameter,
            and return an <see cref="T:Microsoft.Deployment.WindowsInstaller.ActionResult"/> enumeration value.
            </p></remarks>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionAttribute.name">
            <summary>
            Name of the custom action entrypoint, or null if the same as the method name.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionAttribute.#ctor">
            <summary>
            Marks a method as a custom action entry point.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionAttribute.#ctor(System.String)">
            <summary>
            Marks a method as a custom action entry point.
            </summary>
            <param name="name">Name of the function to be exported,
            defaults to the name of this method</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionAttribute.Name">
            <summary>
            Gets or sets the name of the custom action entrypoint. A null
            value defaults to the name of the method.
            </summary>
            <value>name of the custom action entrypoint, or null if none was specified</value>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.CustomActionData">
            <summary>
            Contains a collection of key-value pairs suitable for passing between
            immediate and deferred/rollback/commit custom actions.
            </summary>
            <remarks>
            Call the <see cref="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ToString"/> method to get a string
            suitable for storing in a property and reconstructing the custom action data later.
            </remarks>
            <seealso cref="P:Microsoft.Deployment.WindowsInstaller.Session.CustomActionData"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Session.DoAction(System.String,Microsoft.Deployment.WindowsInstaller.CustomActionData)"/>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.CustomActionData.PropertyName">
            <summary>
            "CustomActionData" literal property name.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.#ctor">
            <summary>
            Creates a new empty custom action data object.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.#ctor(System.String)">
            <summary>
            Reconstructs a custom action data object from data that was previously
            persisted in a string.
            </summary>
            <param name="keyValueList">Previous output from <see cref="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ToString"/>.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Add(System.String,System.String)">
            <summary>
            Adds a key and value to the data collection.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <param name="value">Data value (may be null).</param>
            <exception cref="T:System.ArgumentException">the key does not consist solely of letters,
            numbers, and the period, underscore, and space characters.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.AddObject``1(System.String,``0)">
            <summary>
            Adds a value to the data collection, using XML serialization to persist the object as a string.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <param name="value">Data value (may be null).</param>
            <exception cref="T:System.ArgumentException">the key does not consist solely of letters,
            numbers, and the period, underscore, and space characters.</exception>
            <exception cref="T:System.NotSupportedException">The value type does not support XML serialization.</exception>
            <exception cref="T:System.InvalidOperationException">The value could not be serialized.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.GetObject``1(System.String)">
            <summary>
            Gets a value from the data collection, using XML serialization to load the object from a string.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <exception cref="T:System.InvalidOperationException">The value could not be deserialized.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ContainsKey(System.String)">
            <summary>
            Determines whether the data contains an item with the specified key.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <returns>true if the data contains an item with the key; otherwise, false</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Remove(System.String)">
            <summary>
            Removes the item with the specified key from the data.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <returns>true if the item was successfully removed from the data;
            false if an item with the specified key was not found</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.TryGetValue(System.String,System.String@)">
            <summary>
            Gets the value with the specified key.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <param name="value">Value associated with the specified key, or
            null if an item with the specified key was not found</param>
            <returns>true if the data contains an item with the specified key; otherwise, false.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Add(System.Collections.Generic.KeyValuePair{System.String,System.String})">
            <summary>
            Adds an item with key and value to the data collection.
            </summary>
            <param name="item">Case-sensitive data key, with a data value that may be null.</param>
            <exception cref="T:System.ArgumentException">the key does not consist solely of letters,
            numbers, and the period, underscore, and space characters.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Clear">
            <summary>
            Removes all items from the data.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Contains(System.Collections.Generic.KeyValuePair{System.String,System.String})">
            <summary>
            Determines whether the data contains a specified item.
            </summary>
            <param name="item">The data item to locate.</param>
            <returns>true if the data contains the item; otherwise, false</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.CopyTo(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.Int32)">
            <summary>
            Copies the data to an array, starting at a particular array index.
            </summary>
            <param name="array">Destination array.</param>
            <param name="arrayIndex">Index in the array at which copying begins.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Remove(System.Collections.Generic.KeyValuePair{System.String,System.String})">
            <summary>
            Removes an item from the data.
            </summary>
            <param name="item">The item to remove.</param>
            <returns>true if the item was successfully removed from the data;
            false if the item was not found</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>An enumerator that can be used to iterate through the collection.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>An enumerator that can be used to iterate through the collection.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ToString">
            <summary>
            Gets a string representation of the data suitable for persisting in a property.
            </summary>
            <returns>Data string in the form "Key1=Value1;Key2=Value2"</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ValidateKey(System.String)">
            <summary>
            Ensures that a key contains valid characters.
            </summary>
            <param name="key">key to be validated</param>
            <exception cref="T:System.ArgumentException">the key does not consist solely of letters,
            numbers, and the period, underscore, and space characters.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Serialize``1(``0)">
            <summary>
            Serializes a value into an XML string.
            </summary>
            <typeparam name="T">Type of the value.</typeparam>
            <param name="value">Value to be serialized.</param>
            <returns>Serialized value data as a string.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Deserialize``1(System.String)">
            <summary>
            Deserializes a value from an XML string.
            </summary>
            <typeparam name="T">Expected type of the value.</typeparam>
            <param name="value">Serialized value data.</param>
            <returns>Deserialized value object.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Escape(System.String)">
            <summary>
            Escapes a value string by doubling any data-separator (semicolon) characters.
            </summary>
            <param name="value"></param>
            <returns>Escaped value string</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Unescape(System.String)">
            <summary>
            Unescapes a value string by undoubling any doubled data-separator (semicolon) characters.
            </summary>
            <param name="value"></param>
            <returns>Unescaped value string</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.Parse(System.String)">
            <summary>
            Loads key-value pairs from a string into the data collection.
            </summary>
            <param name="keyValueList">key-value pair list of the form returned by <see cref="M:Microsoft.Deployment.WindowsInstaller.CustomActionData.ToString"/></param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionData.Keys">
            <summary>
            Gets a collection object containing all the keys of the data.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionData.Values">
            <summary>
            Gets a collection containing all the values of the data.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionData.Item(System.String)">
            <summary>
            Gets or sets a data value with a specified key.
            </summary>
            <param name="key">Case-sensitive data key.</param>
            <exception cref="T:System.ArgumentException">the key does not consist solely of letters,
            numbers, and the period, underscore, and space characters.</exception>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionData.Count">
            <summary>
            Gets the number of items in the data.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.CustomActionData.IsReadOnly">
            <summary>
            Gets a value indicating whether the data is read-only.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.CustomActionProxy">
            <summary>
            Managed-code portion of the custom action proxy.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(System.Int32,System.String,System.IntPtr)">
            <summary>
            Invokes a managed custom action method.
            </summary>
            <param name="sessionHandle">Integer handle to the installer session.</param>
            <param name="entryPoint">Name of the custom action entrypoint. This must
            either map to an entrypoint definition in the <c>customActions</c>
            config section, or be an explicit entrypoint of the form:
            &quot;AssemblyName!Namespace.Class.Method&quot;</param>
            <param name="remotingDelegatePtr">Pointer to a delegate used to
            make remote API calls, if this custom action is running out-of-proc.</param>
            <returns>The value returned by the custom action method,
            or ERROR_INSTALL_FAILURE if the custom action could not be invoked.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionProxy.DebugBreakEnabled(System.String[])">
            <summary>
            Checks the "MMsiBreak" environment variable for any matching custom action names.
            </summary>
            <param name="names">List of names to search for in the environment
            variable string.</param>
            <returns>True if a match was found, else false.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionProxy.FindEntryPoint(Microsoft.Deployment.WindowsInstaller.Session,System.String,System.String@,System.String@,System.String@)">
            <summary>
            Locates and parses an entrypoint mapping in CustomAction.config.
            </summary>
            <param name="session">Installer session handle, just used for logging.</param>
            <param name="entryPoint">Custom action entrypoint name: the key value
            in an item in the <c>customActions</c> section of the config file.</param>
            <param name="assemblyName">Returned display name of the assembly from
            the entrypoint mapping.</param>
            <param name="className">Returned class name of the entrypoint mapping.</param>
            <param name="methodName">Returned method name of the entrypoint mapping.</param>
            <returns>True if the entrypoint was found, false if not or if some error
            occurred.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionProxy.GetCustomActionMethod(Microsoft.Deployment.WindowsInstaller.Session,System.String,System.String,System.String)">
            <summary>
            Uses reflection to load the assembly and class and find the method.
            </summary>
            <param name="session">Installer session handle, just used for logging.</param>
            <param name="assemblyName">Display name of the assembly containing the
            custom action method.</param>
            <param name="className">Fully-qualified name of the class containing the
            custom action method.</param>
            <param name="methodName">Name of the custom action method.</param>
            <returns>The method, or null if not found.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.CustomActionProxy.MethodHasCustomActionSignature(System.Reflection.MethodInfo)">
            <summary>
            Checks if a method has the right return and paramater types
            for a custom action, and that it is marked by a CustomActionAttribute.
            </summary>
            <param name="method">Method to be checked.</param>
            <returns>True if the method is a valid custom action, else false.</returns>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Database">
            <summary>
            Accesses a Windows Installer database.
            </summary>
            <remarks><p>
            The <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Commit"/> 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.
            </p><p>
            The client can use the following procedure for data access:<list type="number">
            <item><description>Obtain a Database object using one of the Database constructors.</description></item> 
            <item><description>Initiate a query using a SQL string by calling the <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.OpenView(System.String,System.Object[])"/>
            	method of the Database.</description></item> 
            <item><description>Set query parameters in a <see cref="T:Microsoft.Deployment.WindowsInstaller.Record"/> and execute the database
            	query by calling the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Execute(Microsoft.Deployment.WindowsInstaller.Record)"/> method of the <see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>. This
            	produces a result that can be fetched or updated.</description></item> 
            <item><description>Call the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/> method of the View repeatedly to return
            	Records.</description></item> 
            <item><description>Update database rows of a Record object obtained by the Fetch method using
            	one of the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> methods of the View.</description></item> 
            <item><description>Release the query and any unfetched records by calling the <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>
            	method of the View.</description></item> 
            <item><description>Persist any database updates by calling the Commit method of the Database.
            	</description></item> 
            </list>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallerHandle">
            <summary>
            Base class for Windows Installer handle types (Database, View, Record, SummaryInfo).
            </summary>
            <remarks><p>
            These classes implement the <see cref="T:System.IDisposable"/> interface, because they
            hold unmanaged resources (MSI handles) that should be properly disposed
            when no longer needed.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.#ctor(System.IntPtr,System.Boolean)">
            <summary>
            Constructs a handle object from a native integer handle.
            </summary>
            <param name="handle">Native integer handle.</param>
            <param name="ownsHandle">true to close the handle when this object is disposed or finalized</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Dispose">
            <summary>
            Closes the handle.  After closing a handle, further method calls may throw an <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiclosehandle.asp">MsiCloseHandle</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close">
            <summary>
            Closes the handle.  After closing a handle, further method calls may throw an <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
            <remarks><p>
            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.
            </p><p>
            This method is merely an alias for the <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Dispose"/> method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiclosehandle.asp">MsiCloseHandle</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Equals(System.Object)">
            <summary>
            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.
            </summary>
            <param name="obj">The handle object to compare with the current handle object.</param>
            <returns>true if the specified handle object is equal to the current handle object; otherwise false</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.GetHashCode">
            <summary>
            Gets a hash value for the handle object.
            </summary>
            <returns>A hash code for the handle object.</returns>
            <remarks><p>
            The hash code is derived from the native integer handle.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Dispose(System.Boolean)">
            <summary>
            Closes the handle.  After closing a handle, further method calls may throw an <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
            <param name="disposing">If true, the method has been called directly or indirectly by a user's code,
            so managed and unmanaged resources will be disposed. If false, the method has been called by the 
            runtime from inside the finalizer, and only unmanaged resources will be disposed.</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Handle">
            <summary>
            Gets the native integer handle.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallerHandle.IsClosed">
            <summary>
            Checks if the handle is closed. When closed, method calls on the handle object may throw an <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Sync">
            <summary>
            Gets an object that can be used internally for safe syncronization.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.#ctor(System.String)">
            <summary>
            Opens an existing database in read-only mode.
            </summary>
            <param name="filePath">Path to the database file.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks><p>
            Because this constructor initiates database access, it cannot be used with a
            running installation.
            </p><p>
            The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopendatabase.asp">MsiOpenDatabase</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.#ctor(System.String,System.String)">
            <summary>
            Opens an existing database with another database as output.
            </summary>
            <param name="filePath">Path to the database to be read.</param>
            <param name="outputPath">Open mode for the database</param>
            <returns>Database object representing the created or opened database</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks><p>
            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.
            </p><p>
            The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            The database is opened in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.CreateDirect"/> mode, and will be
            automatically commited when it is closed.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopendatabase.asp">MsiOpenDatabase</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.#ctor(System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
            <summary>
            Opens an existing database or creates a new one.
            </summary>
            <param name="filePath">Path to the database file. If an empty string
            is supplied, a temporary database is created that is not persisted.</param>
            <param name="mode">Open mode for the database</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks><p>
            Because this constructor initiates database access, it cannot be used with a
            running installation.
            </p><p>
            The database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
            The finalizer will close the handle if it is still open, however due to the nondeterministic
            nature of finalization it is best that the handle be closed manually as soon as it is no
            longer needed, as leaving lots of unused handles open can degrade performance.
            </p><p>
            A database opened in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.CreateDirect"/> or
            <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Direct"/> mode will be automatically commited when it is
            closed. However a database opened in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Create"/> or
            <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Transact"/> mode must have the <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Commit"/> method
            called before it is closed, otherwise no changes will be persisted.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopendatabase.asp">MsiOpenDatabase</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.#ctor(System.IntPtr,System.Boolean,System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
            <summary>
            Creates a new database from an MSI handle.
            </summary>
            <param name="handle">Native MSI database handle.</param>
            <param name="ownsHandle">True if the handle should be closed
            when the database object is disposed</param>
            <param name="filePath">Path of the database file, if known</param>
            <param name="openMode">Mode the handle was originally opened in</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.FromHandle(System.IntPtr,System.Boolean)">
            <summary>
            Creates a new Database object from an integer database handle.
            </summary>
            <remarks><p>
            This method is only provided for interop purposes.  A Database object
            should normally be obtained from <see cref="P:Microsoft.Deployment.WindowsInstaller.Session.Database"/> or
            a public Database constructor.
            </p></remarks>
            <param name="handle">Integer database handle</param>
            <param name="ownsHandle">true to close the handle when this object is disposed</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.DeleteOnClose(System.String)">
            <summary>
            Schedules a file or directory for deletion after the database handle is closed.
            </summary>
            <param name="path">File or directory path to be deleted. All files and subdirectories
            under a directory are deleted.</param>
            <remarks><p>
            Once an item is scheduled, it cannot be unscheduled.
            </p><p>
            The items cannot be deleted if the Database object is auto-disposed by the
            garbage collector; the handle must be explicitly closed.
            </p><p>
            Files which are read-only or otherwise locked cannot be deleted,
            but they will not cause an exception to be thrown.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Merge(Microsoft.Deployment.WindowsInstaller.Database,System.String)">
            <summary>
            Merges another database with this database.
            </summary>
            <param name="otherDatabase">The database to be merged into this database</param>
            <param name="errorTable">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.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.MergeException">merge failed due to a schema difference or data conflict</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabasemerge.asp">MsiDatabaseMerge</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Merge(Microsoft.Deployment.WindowsInstaller.Database)">
            <summary>
            Merges another database with this database.
            </summary>
            <param name="otherDatabase">The database to be merged into this database</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.MergeException">merge failed due to a schema difference or data conflict</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabasemerge.asp">MsiDatabaseMerge</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.IsTablePersistent(System.String)">
            <summary>
            Checks whether a table exists and is persistent in the database.
            </summary>
            <param name="table">The table to the checked</param>
            <returns>true if the table exists and is persistent in the database; false otherwise</returns>
            <exception cref="T:System.ArgumentException">the table is unknown</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            To check whether a table exists regardless of persistence,
            use <see cref="M:Microsoft.Deployment.WindowsInstaller.TableCollection.Contains(System.String)"/>.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseistablepersistent.asp">MsiDatabaseIsTablePersistent</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.IsColumnPersistent(System.String,System.String)">
            <summary>
            Checks whether a table contains a persistent column with a given name.
            </summary>
            <param name="table">The table to the checked</param>
            <param name="column">The name of the column to be checked</param>
            <returns>true if the column exists in the table; false if the column is temporary or does not exist.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            To check whether a column exists regardless of persistence,
            use <see cref="M:Microsoft.Deployment.WindowsInstaller.ColumnCollection.Contains(System.String)"/>.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.CountRows(System.String)">
            <summary>
            Gets the count of all rows in the table.
            </summary>
            <param name="table">Name of the table whose rows are to be counted</param>
            <returns>The count of all rows in the table</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.CountRows(System.String,System.String)">
            <summary>
            Gets the count of all rows in the table that satisfy a given condition.
            </summary>
            <param name="table">Name of the table whose rows are to be counted</param>
            <param name="where">Conditional expression, such as could be placed on the end of a SQL WHERE clause</param>
            <returns>The count of all rows in the table satisfying the condition</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL WHERE syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Commit">
            <summary>
            Finalizes the persistent form of the database. All persistent data is written
            to the writeable database, and no temporary columns or rows are written.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            For a database open in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.ReadOnly"/> mode, this method has no effect.
            </p><p>
            For a database open in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.CreateDirect"/> or <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Direct"/>
            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.
            </p><p>
            For a database open in <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Create"/> or <see cref="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Transact"/>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabasecommit.asp">MsiDatabaseCommit</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Export(System.String,System.String)">
            <summary>
            Copies the structure and data from a specified table to a text archive file.
            </summary>
            <param name="table">Name of the table to be exported</param>
            <param name="exportFilePath">Path to the file to be created</param>
            <exception cref="T:System.IO.FileNotFoundException">the file path is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseexport.asp">MsiDatabaseExport</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Import(System.String)">
            <summary>
            Imports a database table from a text archive file, dropping any existing table.
            </summary>
            <param name="importFilePath">Path to the file to be imported. 
            The table name is specified within the file.</param>
            <exception cref="T:System.IO.FileNotFoundException">the file path is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseimport.asp">MsiDatabaseImport</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExportAll(System.String)">
            <summary>
            Exports all database tables, streams, and summary information to archive files.
            </summary>
            <param name="directoryPath">Path to the directory where archive files will be created</param>
            <exception cref="T:System.IO.FileNotFoundException">the directory path is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The directory will be created if it does not already exist.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseexport.asp">MsiDatabaseExport</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ImportAll(System.String)">
            <summary>
            Imports all database tables, streams, and summary information from archive files.
            </summary>
            <param name="directoryPath">Path to the directory from which archive files will be imported</param>
            <exception cref="T:System.IO.FileNotFoundException">the directory path is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseimport.asp">MsiDatabaseImport</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.CreateRecord(System.Int32)">
            <summary>
            Creates a new record object with the requested number of fields.
            </summary>
            <param name="fieldCount">Required number of fields, which may be 0.
            The maximum number of fields in a record is limited to 65535.</param>
            <returns>A new record object that can be used with the database.</returns>
            <remarks><p>
            This method is equivalent to directly calling the <see cref="T:Microsoft.Deployment.WindowsInstaller.Record"/>
            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.
            </p><p>
            The Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msicreaterecord.asp">MsiCreateRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ToString">
            <summary>
            Returns the file path of this database, or the handle value if a file path was not specified.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Dispose(System.Boolean)">
            <summary>
            Closes the database handle.  After closing a handle, further method calls may throw <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
            <param name="disposing">If true, the method has been called directly or
            indirectly by a user's code, so managed and unmanaged resources will be
            disposed. If false, only unmanaged resources will be disposed.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecutePropertyQuery(System.String)">
            <summary>
            Returns the value of the specified property.
            </summary>
            <param name="property">Name of the property to retrieve.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.OpenView(System.String,System.Object[])">
            <summary>
            Gets a View object representing the query specified by a SQL string.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <returns>A View object representing the query specified by a SQL string</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            The View object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Execute(System.String,System.Object[])">
            <summary>
            Executes the query specified by a SQL string.  The query may not be a SELECT statement.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using
            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.Execute(System.String,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Executes the query specified by a SQL string.  The query may not be a SELECT statement.
            </summary>
            <param name="sql">SQL query string</param>
            <param name="record">Optional Record object containing the values that replace
            the parameter tokens (?) in the SQL query.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteQuery(System.String,System.Object[])">
            <summary>
            Executes the specified SQL SELECT query and returns all results.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using
            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            Multiple rows columns will be collapsed into a single one-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteQuery(System.String,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Executes the specified SQL SELECT query and returns all results.
            </summary>
            <param name="sql">SQL SELECT query string</param>
            <param name="record">Optional Record object containing the values that replace
            the parameter tokens (?) in the SQL query.</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Multiple rows columns will be collapsed into a single one-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteIntegerQuery(System.String,System.Object[])">
            <summary>
            Executes the specified SQL SELECT query and returns all results as integers.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using
            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            Multiple rows columns will be collapsed into a single one-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteIntegerQuery(System.String,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Executes the specified SQL SELECT query and returns all results as integers.
            </summary>
            <param name="sql">SQL SELECT query string</param>
            <param name="record">Optional Record object containing the values that replace
            the parameter tokens (?) in the SQL query.</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Multiple rows columns will be collapsed into a single one-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteStringQuery(System.String,System.Object[])">
            <summary>
            Executes the specified SQL SELECT query and returns all results as strings.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using
            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            Multiple rows columns will be collapsed into a single on-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteStringQuery(System.String,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Executes the specified SQL SELECT query and returns all results as strings.
            </summary>
            <param name="sql">SQL SELECT query string</param>
            <param name="record">Optional Record object containing the values that replace
            the parameter tokens (?) in the SQL query.</param>
            <returns>All results combined into an array</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Multiple rows columns will be collapsed into a single on-dimensional list.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteScalar(System.String,System.Object[])">
            <summary>
            Executes the specified SQL SELECT query and returns a single result.
            </summary>
            <param name="sqlFormat">SQL query string, which may contain format items</param>
            <param name="args">Zero or more objects to format</param>
            <returns>First field of the first result</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed
            or the query returned 0 results</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            The <paramref name="sqlFormat"/> parameter is formatted using
            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteScalar(System.String,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Executes the specified SQL SELECT query and returns a single result.
            </summary>
            <param name="sql">SQL SELECT query string</param>
            <param name="record">Optional Record object containing the values that replace
            the parameter tokens (?) in the SQL query.</param>
            <returns>First field of the first result</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">the SQL syntax is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed
            or the query returned 0 results</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseopenview.asp">MsiDatabaseOpenView</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.GenerateTransform(Microsoft.Deployment.WindowsInstaller.Database,System.String)">
            <summary>
            Creates a transform that, when applied to the object database, results in the reference database.
            </summary>
            <param name="referenceDatabase">Database that does not include the changes</param>
            <param name="transformFile">Name of the generated transform file, or null to only
            check whether or not the two database are identical</param>
            <returns>true if a transform is generated, or false if a transform is not generated
            because there are no differences between the two databases.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform could not be generated</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">a Database handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            If the transform is to be applied during an installation you must use the
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.CreateTransformSummaryInfo(Microsoft.Deployment.WindowsInstaller.Database,System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors,Microsoft.Deployment.WindowsInstaller.TransformValidations)"/> method to populate the
            summary information stream.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabasegeneratetransform.asp">MsiDatabaseGenerateTransform</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.CreateTransformSummaryInfo(Microsoft.Deployment.WindowsInstaller.Database,System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors,Microsoft.Deployment.WindowsInstaller.TransformValidations)">
            <summary>
            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.
            </summary>
            <param name="referenceDatabase">Database that does not include the changes</param>
            <param name="transformFile">Name of the generated transform file</param>
            <param name="errors">Error conditions that should be suppressed
            when the transform is applied</param>
            <param name="validations">Defines which properties should be validated
            to verify that this transform can be applied to a database.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform summary info could not be
            generated</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">a Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msicreatetransformsummaryinfo.asp">MsiCreateTransformSummaryInfo</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ViewTransform(System.String)">
            <summary>
            Apply a transform to the database, recording the changes in the "_TransformView" table.
            </summary>
            <param name="transformFile">Path to the transform file</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform could not be applied</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseapplytransform.asp">MsiDatabaseApplyTransform</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ApplyTransform(System.String)">
            <summary>
            Apply a transform to the database, suppressing any error conditions
            specified by the transform's summary information.
            </summary>
            <param name="transformFile">Path to the transform file</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform could not be applied</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseapplytransform.asp">MsiDatabaseApplyTransform</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.ApplyTransform(System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors)">
            <summary>
            Apply a transform to the database, specifying error conditions to suppress.
            </summary>
            <param name="transformFile">Path to the transform file</param>
            <param name="errorConditionsToSuppress">Error conditions that are to be suppressed</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform could not be applied</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidatabaseapplytransform.asp">MsiDatabaseApplyTransform</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.IsTransformValid(System.String)">
            <summary>
            Checks whether a transform is valid for this Database, according to its validation data and flags.
            </summary>
            <param name="transformFile">Path to the transform file</param>
            <returns>true if the transform can be validly applied to this Database; false otherwise</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the transform could not be applied</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Database.IsTransformValid(Microsoft.Deployment.WindowsInstaller.SummaryInfo)">
            <summary>
            Checks whether a transform is valid for this Database, according to its SummaryInfo data.
            </summary>
            <param name="transformSummaryInfo">SummaryInfo data of a transform file</param>
            <returns>true if the transform can be validly applied to this Database; false otherwise</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">error processing summary info</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database or SummaryInfo handle is invalid</exception>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.FilePath">
            <summary>
            Gets the file path the Database was originally opened from, or null if not known.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.OpenMode">
            <summary>
            Gets the open mode for the database.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.IsReadOnly">
            <summary>
            Gets a boolean value indicating whether this database was opened in read-only mode.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetdatabasestate.asp">MsiGetDatabaseState</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.Tables">
            <summary>
            Gets the collection of tables in the Database.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.CodePage">
            <summary>
            Gets or sets the code page of the Database.
            </summary>
            <exception cref="T:System.IO.IOException">error exporting/importing the codepage data</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Database.SummaryInfo">
            <summary>
            Gets the SummaryInfo object for this database that can be used to examine and modify properties
            to the summary information stream.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Database handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetsummaryinformation.asp">MsiGetSummaryInformation</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.EmbeddedUIProxy">
            <summary>
            Managed-code portion of the embedded UI proxy.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.EmbeddedUIProxy.Initialize(System.Int32,System.String,System.Int32)">
            <summary>
            Initializes managed embedded UI by loading the UI class and invoking its Initialize method.
            </summary>
            <param name="sessionHandle">Integer handle to the installer session.</param>
            <param name="uiClass">Name of the class that implements the embedded UI. This must
            be of the form: &quot;AssemblyName!Namespace.Class&quot;</param>
            <param name="internalUILevel">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.</param>
            <returns>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.</returns>
            <remarks>
            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.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.EmbeddedUIProxy.ProcessMessage(System.Int32,System.Int32)">
            <summary>
            Passes a progress message to the UI class.
            </summary>
            <param name="messageType">Installer message type and message box options.</param>
            <param name="recordHandle">Handle to a record containing message data.</param>
            <returns>Return value returned by the UI class.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.EmbeddedUIProxy.Shutdown">
            <summary>
            Passes a shutdown message to the UI class.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.EmbeddedUIProxy.InstantiateUI(Microsoft.Deployment.WindowsInstaller.Session,System.String)">
            <summary>
            Instantiates a UI class from a given assembly and class name.
            </summary>
            <param name="session">Installer session, for logging.</param>
            <param name="uiClass">Name of the class that implements the embedded UI. This must
            be of the form: &quot;AssemblyName!Namespace.Class&quot;</param>
            <returns>Interface on the UI class for handling UI messages.</returns>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ActionResult">
            <summary>
            Specifies a return status value for custom actions.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ActionResult.Success">
            <summary>Action completed successfully.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ActionResult.SkipRemainingActions">
            <summary>Skip remaining actions, not an error.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ActionResult.UserExit">
            <summary>User terminated prematurely.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ActionResult.Failure">
            <summary>Unrecoverable error or unhandled exception occurred.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ActionResult.NotExecuted">
            <summary>Action not executed.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode">
            <summary>
            Specifies the open mode for a <see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.ReadOnly">
            <summary>Open a database read-only, no persistent changes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Transact">
            <summary>Open a database read/write in transaction mode.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Direct">
            <summary>Open a database direct read/write without transaction.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.Create">
            <summary>Create a new database, transact mode read/write.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode.CreateDirect">
            <summary>Create a new database, direct mode read/write.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallLogModes">
            <summary>
            Log modes available for <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String)"/>
            and <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetExternalUI(Microsoft.Deployment.WindowsInstaller.ExternalUIHandler,Microsoft.Deployment.WindowsInstaller.InstallLogModes)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.None">
            <summary>Disable logging.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.FatalExit">
            <summary>Log out of memory or fatal exit information.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Error">
            <summary>Log error messages.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Warning">
            <summary>Log warning messages.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.User">
            <summary>Log user requests.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Info">
            <summary>Log status messages that are not displayed.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.ResolveSource">
            <summary>Log request to determine a valid source location.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.OutOfDiskSpace">
            <summary>Log insufficient disk space error.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.ActionStart">
            <summary>Log the start of installation actions.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.ActionData">
            <summary>Log the data record for installation actions.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.CommonData">
            <summary>Log parameters for user-interface initialization.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.PropertyDump">
            <summary>Log the property values at termination.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Verbose">
            <summary>
            Sends large amounts of information to log file not generally useful to users.
            May be used for support.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.ExtraDebug">
            <summary>
            Log extra debugging information.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.LogOnlyOnError">
            <summary>
            Log only on error.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Progress">
            <summary>
            Log progress bar information. This message includes information on units so far and total number
            of units. See <see cref="M:Microsoft.Deployment.WindowsInstaller.Session.Message(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record)"/> for an explanation of the message format. This message
            is only sent to an external user interface and is not logged.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Initialize">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.Terminate">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.ShowDialog">
            <summary>
            Sent prior to display of the Full UI dialog. This message is only sent to an external user
            interface and is not logged.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.FilesInUse">
            <summary>
            List of files in use that need to be replaced.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.RMFilesInUse">
            <summary>
            [MSI 4.0] List of apps that the user can request Restart Manager to shut down and restart.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallMessage">
            <summary>
            Type of message to be processed by <see cref="M:Microsoft.Deployment.WindowsInstaller.Session.Message(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record)"/>,
            <see cref="T:Microsoft.Deployment.WindowsInstaller.ExternalUIHandler"/>, or <see cref="T:Microsoft.Deployment.WindowsInstaller.ExternalUIRecordHandler"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.FatalExit">
            <summary>Premature termination, possibly fatal OOM.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Error">
            <summary>Formatted error message.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Warning">
            <summary>Formatted warning message.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.User">
            <summary>User request message.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Info">
            <summary>Informative message for log.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.FilesInUse">
            <summary>List of files in use that need to be replaced.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.ResolveSource">
            <summary>Request to determine a valid source location.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.OutOfDiskSpace">
            <summary>Insufficient disk space message.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.ActionStart">
            <summary>Start of action: action name &amp; description.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.ActionData">
            <summary>Formatted data associated with individual action item.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Progress">
            <summary>Progress gauge info: units so far, total.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.CommonData">
            <summary>Product info for dialog: language Id, dialog caption.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Initialize">
            <summary>Sent prior to UI initialization, no string data.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.Terminate">
            <summary>Sent after UI termination, no string data.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.ShowDialog">
            <summary>Sent prior to display or authored dialog or wizard.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.RMFilesInUse">
            <summary>[MSI 4.0] List of apps that the user can request Restart Manager to shut down and restart.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.InstallStart">
            <summary>[MSI 4.5] Sent prior to install of a product.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMessage.InstallEnd">
            <summary>[MSI 4.5] Sent after install of a product.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallMode">
            <summary>
            Specifies the install mode for <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.ProvideComponent(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode)"/> or <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.ProvideQualifiedComponent(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode,System.String)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMode.NoSourceResolution">
            <summary>Provide the component only if the feature's installation state is <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Local"/>.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMode.NoDetection">
            <summary>Only check that the component is registered, without verifying that the key file of the component exists.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMode.Existing">
            <summary>Provide the component only if the feature exists.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallMode.Default">
            <summary>Provide the component and perform any installation necessary to provide the component.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallRunMode">
            <summary>
            Specifies the run mode for <see cref="M:Microsoft.Deployment.WindowsInstaller.Session.GetMode(Microsoft.Deployment.WindowsInstaller.InstallRunMode)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Admin">
            <summary>The administrative mode is installing, or the product is installing.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Advertise">
            <summary>The advertisements are installing or the product is installing or updating.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Maintenance">
            <summary>An existing installation is being modified or there is a new installation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.RollbackEnabled">
            <summary>Rollback is enabled.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.LogEnabled">
            <summary>The log file is active. It was enabled prior to the installation session.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Operations">
            <summary>Execute operations are spooling or they are in the determination phase.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.RebootAtEnd">
            <summary>A reboot is necessary after a successful installation (settable).</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.RebootNow">
            <summary>A reboot is necessary to continue the installation (settable).</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Cabinet">
            <summary>Files from cabinets and Media table files are installing.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.SourceShortNames">
            <summary>The source LongFileNames is suppressed through the PID_MSISOURCE summary property.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.TargetShortNames">
            <summary>The target LongFileNames is suppressed through the SHORTFILENAMES property.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Windows9x">
            <summary>The operating system is Windows 95, Windows 98, or Windows ME.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.ZawEnabled">
            <summary>The operating system supports demand installation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Scheduled">
            <summary>A custom action called from install script execution.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Rollback">
            <summary>A custom action called from rollback execution script.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Commit">
            <summary>A custom action called from commit execution script.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallState">
            <summary>
            Installed state of a Component or Feature.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.NotUsed">
            <summary>The component is disabled.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.BadConfig">
            <summary>The installation configuration data is corrupt.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Incomplete">
            <summary>The installation is suspended or in progress.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.SourceAbsent">
            <summary>Component is set to run from source, but source is unavailable.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.MoreData">
            <summary>The buffer overflow is returned.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.InvalidArgument">
            <summary>An invalid parameter was passed to the function.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Unknown">
            <summary>An unrecognized product or feature name was passed to the function.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Broken">
            <summary>The component is broken.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Advertised">
            <summary>The feature is advertised.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Removed">
            <summary>The component is being removed. In action state and not settable.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Absent">
            <summary>The component is not installed, or action state is absent but clients remain.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Local">
            <summary>The component is installed on the local drive.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Source">
            <summary>The component will run from the source, CD, or network.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallState.Default">
            <summary>The component will be installed in the default location: local or source.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallType">
            <summary>
            Specifies the type of installation for <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.ApplyPatch(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallType,System.String)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallType.Default">
            <summary>Searches system for products to patch.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallType.NetworkImage">
            <summary>Indicates a administrative installation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallType.SingleInstance">
            <summary>Indicates a particular instance.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallUIOptions">
            <summary>
            Level of the installation user interface, specified with
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.NoChange">
            <summary>Does not change UI level.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Default">
            <summary>Uses Default UI level.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Silent">
            <summary>Silent installation.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Basic">
            <summary>Simple progress and error handling.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Reduced">
            <summary>Authored UI, wizard dialogs suppressed.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Full">
            <summary>Authored UI with wizards, progress, and errors.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.HideCancel">
            <summary>
            When combined with the <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Basic"/> value, the installer does not display
            the cancel button in the progress dialog.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.ProgressOnly">
            <summary>
            When combined with the <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Basic"/> value, the installer displays progress
            dialog boxes but does not display any modal dialog boxes or error dialog boxes.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.EndDialog">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.SourceResolutionOnly">
            <summary>
            Forces display of the source resolution dialog even if the UI is otherwise silent.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.UacOnly">
            <summary>
            [MSI 5.0] Forces display of the UAC dialog even if the UI is otherwise silent.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MessageResult">
            <summary>
            Specifies a return status value for message handlers.  These values are returned by
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Session.Message(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record)"/>, <see cref="T:Microsoft.Deployment.WindowsInstaller.ExternalUIHandler"/>, and <see cref="M:Microsoft.Deployment.WindowsInstaller.IEmbeddedUI.ProcessMessage(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record,Microsoft.Deployment.WindowsInstaller.MessageButtons,Microsoft.Deployment.WindowsInstaller.MessageIcon,Microsoft.Deployment.WindowsInstaller.MessageDefaultButton)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Error">
            <summary>An error was found in the message handler.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.None">
            <summary>No action was taken.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.OK">
            <summary>IDOK</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Cancel">
            <summary>IDCANCEL</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Abort">
            <summary>IDABORT</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Retry">
            <summary>IDRETRY</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Ignore">
            <summary>IDIGNORE</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.Yes">
            <summary>IDYES</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageResult.No">
            <summary>IDNO</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MessageButtons">
            <summary>
            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.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.OK">
            <summary>
            The message contains an OK button.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.OKCancel">
            <summary>
            The message contains OK and Cancel buttons.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.AbortRetryIgnore">
            <summary>
            The message contains Abort, Retry, and Ignore buttons.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.YesNoCancel">
            <summary>
            The message contains Yes, No, and Cancel buttons.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.YesNo">
            <summary>
            The message contains Yes and No buttons.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageButtons.RetryCancel">
            <summary>
            The message contains Retry and Cancel buttons.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MessageIcon">
            <summary>
            Specifies constants defining which information to display. This can be cast to
            the MessageBoxIcon enum in System.Windows.Forms and System.Windows.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.None">
            <summary>
            The message contain no symbols.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Error">
            <summary>
            The message contains a symbol consisting of white X in a circle with a red background.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Hand">
            <summary>
            The message contains a symbol consisting of a white X in a circle with a red background.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Stop">
            <summary>
            The message contains a symbol consisting of white X in a circle with a red background.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Question">
            <summary>
            The message contains a symbol consisting of a question mark in a circle.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Exclamation">
            <summary>
            The message contains a symbol consisting of an exclamation point in a triangle with a yellow background.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Warning">
            <summary>
            The message contains a symbol consisting of an exclamation point in a triangle with a yellow background.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Information">
            <summary>
            The message contains a symbol consisting of a lowercase letter i in a circle.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageIcon.Asterisk">
            <summary>
            The message contains a symbol consisting of a lowercase letter i in a circle.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MessageDefaultButton">
            <summary>
            Specifies constants defining the default button on a message. This can be cast to
            the MessageBoxDefaultButton enum in System.Windows.Forms and System.Windows.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageDefaultButton.Button1">
            <summary>
            The first button on the message is the default button.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageDefaultButton.Button2">
            <summary>
            The second button on the message is the default button.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageDefaultButton.Button3">
            <summary>
            The third button on the message is the default button.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MessageBoxStyles">
            <summary>
            Additional styles for use with message boxes.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageBoxStyles.TopMost">
            <summary>
            The message box is created with the WS_EX_TOPMOST window style.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.MessageBoxStyles.ServiceNotification">
            <summary>
            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.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.PatchStates">
            <summary>
            Specifies the different patch states for <see cref="M:Microsoft.Deployment.WindowsInstaller.PatchInstallation.GetPatches(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts,Microsoft.Deployment.WindowsInstaller.PatchStates)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.None">
            <summary>Invalid value.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.Applied">
            <summary>Patches applied to a product.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.Superseded">
            <summary>Patches that are superseded by other patches.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.Obsoleted">
            <summary>Patches that are obsolesced by other patches.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.Registered">
            <summary>Patches that are registered to a product but not applied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.PatchStates.All">
            <summary>All valid patch states.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ReinstallModes">
            <summary>
            Specifies the reinstall mode for <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.ReinstallFeature(System.String,System.String,Microsoft.Deployment.WindowsInstaller.ReinstallModes)"/> or <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.ReinstallProduct(System.String,Microsoft.Deployment.WindowsInstaller.ReinstallModes)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileMissing">
            <summary>Reinstall only if file is missing.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileOlderVersion">
            <summary>Reinstall if file is missing, or older version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileEqualVersion">
            <summary>Reinstall if file is missing, or equal or older version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileExact">
            <summary>Reinstall if file is missing, or not exact version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileVerify">
            <summary>Checksum executables, reinstall if missing or corrupt.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.FileReplace">
            <summary>Reinstall all files, regardless of version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.MachineData">
            <summary>Insure required machine reg entries.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.UserData">
            <summary>Insure required user reg entries.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.Shortcut">
            <summary>Validate shortcuts items.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ReinstallModes.Package">
            <summary>Use re-cache source install package.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TransactionAttributes">
            <summary>
            Attributes for <see cref="T:Microsoft.Deployment.WindowsInstaller.Transaction"/> methods.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransactionAttributes.None">
            <summary>No attributes.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransactionAttributes.ChainEmbeddedUI">
            <summary>Request that the Windows Installer not shutdown the embedded UI until the transaction is complete.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransactionAttributes.JoinExistingEmbeddedUI">
            <summary>Request that the Windows Installer transfer the embedded UI from the original installation.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TransformErrors">
            <summary>
            Transform error conditions available for <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.CreateTransformSummaryInfo(Microsoft.Deployment.WindowsInstaller.Database,System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors,Microsoft.Deployment.WindowsInstaller.TransformValidations)"/> or
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ApplyTransform(System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.None">
            <summary>No error conditions.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.AddExistingRow">
            <summary>Adding a row that already exists.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.DelMissingRow">
            <summary>Deleting a row that doesn't exist.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.AddExistingTable">
            <summary>Adding a table that already exists.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.DelMissingTable">
            <summary>Deleting a table that doesn't exist.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.UpdateMissingRow">
            <summary>Updating a row that doesn't exist.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.ChangeCodePage">
            <summary>Transform and database code pages do not match and neither code page is neutral.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformErrors.ViewTransform">
            <summary>Create the temporary _TransformView table when applying the transform.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TransformValidations">
            <summary>
            Transform validation flags available for <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.CreateTransformSummaryInfo(Microsoft.Deployment.WindowsInstaller.Database,System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors,Microsoft.Deployment.WindowsInstaller.TransformValidations)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.None">
            <summary>Validate no properties.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.Language">
            <summary>Default language must match base database.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.Product">
            <summary>Product must match base database.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.MajorVersion">
            <summary>Check major version only.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.MinorVersion">
            <summary>Check major and minor versions only.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.UpdateVersion">
            <summary>Check major, minor, and update versions.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.NewLessBaseVersion">
            <summary>Installed version &lt; base version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.NewLessEqualBaseVersion">
            <summary>Installed version &lt;= base version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.NewEqualBaseVersion">
            <summary>Installed version = base version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.NewGreaterEqualBaseVersion">
            <summary>Installed version &gt;= base version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.NewGreaterBaseVersion">
            <summary>Installed version &gt; base version.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.TransformValidations.UpgradeCode">
            <summary>UpgradeCode must match base database.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.UserContexts">
            <summary>
            Specifies the installation context for <see cref="T:Microsoft.Deployment.WindowsInstaller.ProductInstallation"/>s,
            <see cref="T:Microsoft.Deployment.WindowsInstaller.PatchInstallation"/>es, and
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)"/>
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.None">
            <summary>Not installed.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserManaged">
            <summary>User managed install context.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserUnmanaged">
            <summary>User non-managed context.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.Machine">
            <summary>Per-machine context.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.All">
            <summary>All contexts, or all valid values.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.UserContexts.AllUserManaged">
            <summary>All user-managed contexts.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ValidationError">
            <summary>
            Defines the type of error encountered by the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Validate(Microsoft.Deployment.WindowsInstaller.Record)"/>, <see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateNew(Microsoft.Deployment.WindowsInstaller.Record)"/>,
            or <see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateFields(Microsoft.Deployment.WindowsInstaller.Record)"/> methods of the <see cref="T:Microsoft.Deployment.WindowsInstaller.View"/> class.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.None">
            <summary>No error.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.DuplicateKey">
            <summary>The new record duplicates primary keys of the existing record in a table.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.Required">
            <summary>There are no null values allowed, or the column is about to be deleted but is referenced by another row.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadLink">
            <summary>The corresponding record in a foreign table was not found.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.Overflow">
            <summary>The data is greater than the maximum value allowed.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.Underflow">
            <summary>The data is less than the minimum value allowed.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.NotInSet">
            <summary>The data is not a member of the values permitted in the set.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadVersion">
            <summary>An invalid version string was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadCase">
            <summary>The case was invalid. The case must be all uppercase or all lowercase.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadGuid">
            <summary>An invalid GUID was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadWildcard">
            <summary>An invalid wildcard file name was supplied, or the use of wildcards was invalid.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadIdentifier">
            <summary>An invalid identifier was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadLanguage">
            <summary>Invalid language IDs were supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadFileName">
            <summary>An invalid file name was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadPath">
            <summary>An invalid path was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadCondition">
            <summary>An invalid conditional statement was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadFormatted">
            <summary>An invalid format string was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadTemplate">
            <summary>An invalid template string was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadDefaultDir">
            <summary>An invalid string was supplied in the DefaultDir column of the Directory table.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadRegPath">
            <summary>An invalid registry path string was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadCustomSource">
            <summary>An invalid string was supplied in the CustomSource column of the CustomAction table.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadProperty">
            <summary>An invalid property string was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.MissingData">
            <summary>The _Validation table is missing a reference to a column.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadCategory">
            <summary>The category column of the _Validation table for the column is invalid.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadKeyTable">
            <summary>The table in the Keytable column of the _Validation table was not found or loaded.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadMaxMinValues">
            <summary>The value in the MaxValue column of the _Validation table is less than the value in the MinValue column.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadCabinet">
            <summary>An invalid cabinet name was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadShortcut">
            <summary>An invalid shortcut target name was supplied.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.StringOverflow">
            <summary>The string is too long for the length specified by the column definition.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ValidationError.BadLocalizeAttrib">
            <summary>An invalid localization attribute was supplied. (Primary keys cannot be localized.)</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ViewModifyMode">
            <summary>
            Specifies the modify mode for <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/>.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Seek">
            <summary>
            Refreshes the information in the supplied record without changing the position
            in the result set and without affecting subsequent fetch operations.
            </summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Refresh">
            <summary>Refreshes the data in a Record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Insert">
            <summary>Inserts a Record into the view.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Update">
            <summary>Updates the View with new data from the Record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Assign">
            <summary>Updates or inserts a Record into the View.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Replace">
            <summary>Updates or deletes and inserts a Record into the View.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Merge">
            <summary>Inserts or validates a record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Delete">
            <summary>Deletes a Record from the View.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.InsertTemporary">
            <summary>Inserts a Record into the View.  The inserted data is not persistent.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.Validate">
            <summary>Validates a record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.ValidateNew">
            <summary>Validates a new record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.ValidateField">
            <summary>Validates fields of a fetched or new record. Can validate one or more fields of an incomplete record.</summary>
        </member>
        <member name="F:Microsoft.Deployment.WindowsInstaller.ViewModifyMode.ValidateDelete">
            <summary>Validates a record that will be deleted later.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallerException">
            <summary>
            Base class for Windows Installer exceptions.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new InstallerException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="msg">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.#ctor(System.String)">
            <summary>
            Creates a new InstallerException with a specified error message.
            </summary>
            <param name="msg">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.#ctor">
            <summary>
            Creates a new InstallerException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the InstallerException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Sets the SerializationInfo with information about the exception.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallerException.GetErrorRecord">
            <summary>
            Gets extended information about the error, or null if no further information
            is available.
            </summary>
            <returns>A Record object. Field 1 of the Record contains the installer
            message code. Other fields contain data specific to the particular error.</returns>
            <remarks><p>
            If the record is passed to <see cref="M:Microsoft.Deployment.WindowsInstaller.Session.Message(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record)"/>, 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 <see cref="M:Microsoft.Deployment.WindowsInstaller.Record.ToString"/>.
            Alternatively, the standard MSI message can by retrieved by calling the
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.GetErrorMessage(Microsoft.Deployment.WindowsInstaller.Record,System.Globalization.CultureInfo)"/> method.
            </p><p>
            The following methods and properties may report extended error data:
            <list type="bullet">
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/> (constructor)</item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ApplyTransform(System.String,Microsoft.Deployment.WindowsInstaller.TransformErrors)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Commit"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Execute(System.String,System.Object[])"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteQuery(System.String,System.Object[])"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteIntegerQuery(System.String,System.Object[])"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ExecuteStringQuery(System.String,System.Object[])"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Export(System.String,System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ExportAll(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.GenerateTransform(Microsoft.Deployment.WindowsInstaller.Database,System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Import(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ImportAll(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Merge(Microsoft.Deployment.WindowsInstaller.Database,System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.OpenView(System.String,System.Object[])"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="P:Microsoft.Deployment.WindowsInstaller.Database.SummaryInfo"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Database"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Database.ViewTransform(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Assign(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Delete(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Execute(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Insert(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.InsertTemporary(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Merge(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Refresh(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Replace(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Seek(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Update(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.Validate(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateFields(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateDelete(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.View"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateNew(Microsoft.Deployment.WindowsInstaller.Record)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.SummaryInfo"/> (constructor)</item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Record"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.Int32,System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Session"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Session.SetInstallLevel(System.Int32)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Session"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Session.GetSourcePath(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Session"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Session.GetTargetPath(System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.Session"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.Session.SetTargetPath(System.String,System.String)"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.ComponentInfo"/>.<see cref="P:Microsoft.Deployment.WindowsInstaller.ComponentInfo.CurrentState"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.FeatureInfo"/>.<see cref="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.CurrentState"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.FeatureInfo"/>.<see cref="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.ValidStates"/></item>
            <item><see cref="T:Microsoft.Deployment.WindowsInstaller.FeatureInfo"/>.<see cref="M:Microsoft.Deployment.WindowsInstaller.FeatureInfo.GetCost(System.Boolean,System.Boolean,Microsoft.Deployment.WindowsInstaller.InstallState)"/></item>
            </list>
            </p><p>
            The Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetlasterrorrecord.asp">MsiGetLastErrorRecord</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallerException.ErrorCode">
            <summary>
            Gets the system error code that resulted in this exception, or 0 if not applicable.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallerException.Message">
            <summary>
            Gets a message that describes the exception.  This message may contain detailed
            formatted error data if it was available.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">
            <summary>
            User Canceled the installation.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallCanceledException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new InstallCanceledException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="msg">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallCanceledException.#ctor(System.String)">
            <summary>
            Creates a new InstallCanceledException with a specified error message.
            </summary>
            <param name="msg">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallCanceledException.#ctor">
            <summary>
            Creates a new InstallCanceledException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallCanceledException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the InstallCanceledException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException">
            <summary>
            A bad SQL query string was passed to <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.OpenView(System.String,System.Object[])"/> or <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Execute(System.String,System.Object[])"/>.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new BadQuerySyntaxException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="msg">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException.#ctor(System.String)">
            <summary>
            Creates a new BadQuerySyntaxException with a specified error message.
            </summary>
            <param name="msg">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException.#ctor">
            <summary>
            Creates a new BadQuerySyntaxException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.BadQuerySyntaxException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the BadQuerySyntaxException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">
            <summary>
            A method was called on an invalid installer handle.  The handle may have been already closed.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InvalidHandleException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new InvalidHandleException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="msg">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InvalidHandleException.#ctor(System.String)">
            <summary>
            Creates a new InvalidHandleException with a specified error message.
            </summary>
            <param name="msg">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InvalidHandleException.#ctor">
            <summary>
            Creates a new InvalidHandleException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InvalidHandleException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the InvalidHandleException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MergeException">
            <summary>
            A failure occurred when executing <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.Merge(Microsoft.Deployment.WindowsInstaller.Database,System.String)"/>.  The exception may contain
            details about the merge conflict.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MergeException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new MergeException with a specified error message and a reference to the
            inner exception that is the cause of this exception.
            </summary>
            <param name="msg">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception. If the
            innerException parameter is not a null reference (Nothing in Visual Basic), the current exception
            is raised in a catch block that handles the inner exception.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MergeException.#ctor(System.String)">
            <summary>
            Creates a new MergeException with a specified error message.
            </summary>
            <param name="msg">The message that describes the error.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MergeException.#ctor">
            <summary>
            Creates a new MergeException.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MergeException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the MergeException class with serialized data.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MergeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Sets the SerializationInfo with information about the exception.
            </summary>
            <param name="info">The SerializationInfo that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The StreamingContext that contains contextual information about the source or destination.</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MergeException.ConflictCounts">
            <summary>
            Gets the number of merge conflicts in each table, corresponding to the tables returned by
            <see cref="P:Microsoft.Deployment.WindowsInstaller.MergeException.ConflictTables"/>.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MergeException.ConflictTables">
            <summary>
            Gets the list of tables containing merge conflicts.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MergeException.Message">
            <summary>
            Gets a message that describes the merge conflits.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ExternalUIHandler">
            <summary>
            Defines a callback function that the installer calls for progress notification and error messages.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ExternalUIRecordHandler">
            <summary>
            [MSI 3.1] Defines a callback function that the installer calls for record-based progress notification and error messages.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Installer">
            <summary>
            Provides static methods for installing and configuring products and patches.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.SetExternalUI(Microsoft.Deployment.WindowsInstaller.ExternalUIHandler,Microsoft.Deployment.WindowsInstaller.InstallLogModes)">
            <summary>
            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.
            </summary>
            <param name="uiHandler">A callback delegate that handles the UI messages</param>
            <param name="messageFilter">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.</param>
            <returns>The previously set external handler, or null if there was no previously set handler</returns>
            <remarks><p>
            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
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.None"/> as the message filter.
            </p><p>
            The external user interface handler does not have full control over the external user
            interface unless <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/> is called with the uiLevel parameter set to
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Silent"/>. If SetInternalUI is not called, the internal user
            interface level defaults to <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Basic"/>. 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.
            </p><p>
            SetExternalUI should only be called from a bootstrapping application. You cannot call
            it from a custom action
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetexternalui.asp">MsiSetExternalUI</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.SetExternalUI(Microsoft.Deployment.WindowsInstaller.ExternalUIRecordHandler,Microsoft.Deployment.WindowsInstaller.InstallLogModes)">
            <summary>
            [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.
            </summary>
            <param name="uiHandler">A callback delegate that handles the UI messages</param>
            <param name="messageFilter">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.</param>
            <returns>The previously set external handler, or null if there was no previously set handler</returns>
            <remarks><p>
            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
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallLogModes.None"/> as the message filter.
            </p><p>
            The external user interface handler does not have full control over the external user
            interface unless <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/> is called with the uiLevel parameter set to
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Silent"/>. If SetInternalUI is not called, the internal user
            interface level defaults to <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Basic"/>. 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.
            </p><p>
            SetExternalUI should only be called from a bootstrapping application. You cannot call
            it from a custom action
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetexternaluirecord.asp">MsiSetExternalUIRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions,System.IntPtr@)">
            <summary>
            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.
            </summary>
            <param name="uiOptions">Specifies the level of complexity of the user interface</param>
            <param name="windowHandle">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.</param>
            <returns>The previous user interface level</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetinternalui.asp">MsiSetInternalUI</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)">
            <summary>
            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.
            </summary>
            <param name="uiOptions">Specifies the level of complexity of the user interface</param>
            <returns>The previous user interface level</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetinternalui.asp">MsiSetInternalUI</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String)">
            <summary>
            Enables logging of the selected message type for all subsequent install sessions in
            the current process space.
            </summary>
            <param name="logModes">One or more mode flags specifying the type of messages to log</param>
            <param name="logFile">Full path to the log file.  A null path disables logging,
            in which case the logModes paraneter is ignored.</param>
            <exception cref="T:System.ArgumentException">an invalid log mode was specified</exception>
            <remarks>This method takes effect on any new installation processes.  Calling this
            method from within a custom action will not start logging for that installation.</remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String,System.Boolean,System.Boolean)">
            <summary>
            Enables logging of the selected message type for all subsequent install sessions in
            the current process space.
            </summary>
            <param name="logModes">One or more mode flags specifying the type of messages to log</param>
            <param name="logFile">Full path to the log file.  A null path disables logging,
            in which case the logModes paraneter is ignored.</param>
            <param name="append">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.</param>
            <param name="flushEveryLine">If true, the log will be flushed after every line.
            If false, the log will be flushed every 20 lines.  The default is true.</param>
            <exception cref="T:System.ArgumentException">an invalid log mode was specified</exception>
            <remarks><p>
            This method takes effect on any new installation processes.  Calling this
            method from within a custom action will not start logging for that installation.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienablelog.asp">MsiEnableLog</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.UseFeature(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode)">
            <summary>
            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.
            </summary>
            <param name="productCode">The product code of the product.</param>
            <param name="feature">The feature to be used.</param>
            <param name="installMode">Must have the value <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallMode.NoDetection"/>.</param>
            <returns>The installed state of the feature.</returns>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiusefeature.asp">MsiUseFeature</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiusefeatureex.asp">MsiUseFeatureEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.OpenPackage(System.String,System.Boolean)">
            <summary>
            Opens an installer package for use with functions that access the product database and install engine,
            returning an Session object.
            </summary>
            <param name="packagePath">Path to the package</param>
            <param name="ignoreMachineState">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.</param>
            <returns>A Session object allowing access to the product database and install engine</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The product could not be opened</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            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.
            </p><p>
            A "safe" Session object ignores the current computer state when opening the package and prevents
            changes to the current computer state.
            </p><p>
            The Session object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopenpackage.asp">MsiOpenPackage</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopenpackageex.asp">MsiOpenPackageEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.OpenPackage(Microsoft.Deployment.WindowsInstaller.Database,System.Boolean)">
            <summary>
            Opens an installer package for use with functions that access the product database and install engine,
            returning an Session object.
            </summary>
            <param name="database">Database used to create the session</param>
            <param name="ignoreMachineState">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.</param>
            <returns>A Session object allowing access to the product database and install engine</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The product could not be opened</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            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.
            </p><p>
            A "safe" Session object ignores the current computer state when opening the package and prevents
            changes to the current computer state.
            </p><p>
            The Session object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopenpackage.asp">MsiOpenPackage</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopenpackageex.asp">MsiOpenPackageEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.OpenProduct(System.String)">
            <summary>
            Opens an installer package for an installed product using the product code.
            </summary>
            <param name="productCode">Product code of the installed product</param>
            <returns>A Session object allowing access to the product database and install engine,
            or null if the specified product is not installed.</returns>
            <exception cref="T:System.ArgumentException">An unknown product was requested</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The product could not be opened</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            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.
            </p><p>
            The Session object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiopenproduct.asp">MsiOpenProduct</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ProvideComponent(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode)">
            <summary>
            Gets the full component path, performing any necessary installation. This method prompts for source if
            necessary and increments the usage count for the feature.
            </summary>
            <param name="product">Product code for the product that contains the feature with the necessary component</param>
            <param name="feature">Feature ID of the feature with the necessary component</param>
            <param name="component">Component code of the necessary component</param>
            <param name="installMode">Installation mode; this can also include bits from <see cref="T:Microsoft.Deployment.WindowsInstaller.ReinstallModes"/></param>
            <returns>Path to the component</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprovidecomponent.asp">MsiProvideComponent</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ProvideQualifiedComponent(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode,System.String)">
            <summary>
            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.
            </summary>
            <param name="component">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.</param>
            <param name="qualifier">Specifies a qualifier into a list of advertising components (from PublishComponent Table).</param>
            <param name="installMode">Installation mode; this can also include bits from <see cref="T:Microsoft.Deployment.WindowsInstaller.ReinstallModes"/></param>
            <param name="product">Optional; specifies the product to match that has published the qualified component.</param>
            <returns>Path to the component</returns>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprovidequalifiedcomponent.asp">MsiProvideQualifiedComponent</a>
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprovidequalifiedcomponentex.asp">MsiProvideQualifiedComponentEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ProvideAssembly(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallMode,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="assemblyName">Assembly name</param>
            <param name="appContext">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.</param>
            <param name="installMode">Installation mode; this can also include bits from <see cref="T:Microsoft.Deployment.WindowsInstaller.ReinstallModes"/></param>
            <param name="isWin32Assembly">True if this is a Win32 assembly, false if it is a .NET assembly</param>
            <returns>Path to the assembly</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprovideassembly.asp">MsiProvideAssembly</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.InstallMissingComponent(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallState)">
            <summary>
            Installs files that are unexpectedly missing.
            </summary>
            <param name="product">Product code for the product that owns the component to be installed</param>
            <param name="component">Component to be installed</param>
            <param name="installState">Specifies the way the component should be installed.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiinstallmissingcomponent.asp">MsiInstallMissingComponent</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.InstallMissingFile(System.String,System.String)">
            <summary>
            Installs files that are unexpectedly missing.
            </summary>
            <param name="product">Product code for the product that owns the file to be installed</param>
            <param name="file">File to be installed</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiinstallmissingfile.asp">MsiInstallMissingFile</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ReinstallFeature(System.String,System.String,Microsoft.Deployment.WindowsInstaller.ReinstallModes)">
            <summary>
            Reinstalls a feature.
            </summary>
            <param name="product">Product code for the product containing the feature to be reinstalled</param>
            <param name="feature">Feature to be reinstalled</param>
            <param name="reinstallModes">Reinstall modes</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msireinstallfeature.asp">MsiReinstallFeature</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ReinstallProduct(System.String,Microsoft.Deployment.WindowsInstaller.ReinstallModes)">
            <summary>
            Reinstalls a product.
            </summary>
            <param name="product">Product code for the product to be reinstalled</param>
            <param name="reinstallModes">Reinstall modes</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msireinstallproduct.asp">MsiReinstallProduct</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.InstallProduct(System.String,System.String)">
            <summary>
            Opens an installer package and initializes an install session.
            </summary>
            <param name="packagePath">path to the patch package</param>
            <param name="commandLine">command line property settings</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error installing the product</exception>
            <remarks><p>
            To completely remove a product, set REMOVE=ALL in <paramRef name="commandLine"/>.
            </p><p>
            This method displays the user interface with the current settings and
            log mode. You can change user interface settings with the <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/>
            and <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetExternalUI(Microsoft.Deployment.WindowsInstaller.ExternalUIHandler,Microsoft.Deployment.WindowsInstaller.InstallLogModes)"/> functions. You can set the log mode with the
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String)"/> function.
            </p><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiinstallproduct.asp">MsiInstallProduct</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ConfigureProduct(System.String,System.Int32,Microsoft.Deployment.WindowsInstaller.InstallState,System.String)">
            <summary>
            Installs or uninstalls a product.
            </summary>
            <param name="productCode">Product code of the product to be configured.</param>
            <param name="installLevel">Specifies the default installation configuration of the
            product. The <paramref name="installLevel"/> parameter is ignored and all features
            are installed if the <paramref name="installState"/> parameter is set to any other
            value than <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Default"/>. 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.																																											   </param>
            <param name="installState">Specifies the installation state for the product.</param>
            <param name="commandLine">Specifies the command line property settings. This should
            be a list of the format Property=Setting Property=Setting.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error configuring the product</exception>
            <remarks><p>
            This method displays the user interface with the current settings and
            log mode. You can change user interface settings with the <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/>
            and <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetExternalUI(Microsoft.Deployment.WindowsInstaller.ExternalUIHandler,Microsoft.Deployment.WindowsInstaller.InstallLogModes)"/> functions. You can set the log mode with the
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String)"/> function.
            </p><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiconfigureproduct.asp">MsiConfigureProduct</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiconfigureproductex.asp">MsiConfigureProductEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ConfigureFeature(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallState)">
            <summary>
            Configures the installed state for a product feature.
            </summary>
            <param name="productCode">Product code of the product to be configured.</param>
            <param name="feature">Specifies the feature ID for the feature to be configured.</param>
            <param name="installState">Specifies the installation state for the feature.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error configuring the feature</exception>
            <remarks><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiconfigurefeature.asp">MsiConfigureFeature</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ApplyPatch(System.String,System.String)">
            <summary>
            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.
            </summary>
            <param name="patchPackage">path to the patch package</param>
            <param name="commandLine">optional command line property settings</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error applying the patch</exception>
            <remarks><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiapplypatch.asp">MsiApplyPatch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ApplyPatch(System.String,System.String,Microsoft.Deployment.WindowsInstaller.InstallType,System.String)">
            <summary>
            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.
            </summary>
            <param name="patchPackage">path to the patch package</param>
            <param name="installPackage">path to the product to be patched, if installType
            is set to <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallType.NetworkImage"/></param>
            <param name="installType">type of installation to patch</param>
            <param name="commandLine">optional command line property settings</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error applying the patch</exception>
            <remarks><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiapplypatch.asp">MsiApplyPatch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.RemovePatches(System.Collections.Generic.IList{System.String},System.String,System.String)">
            <summary>
            Removes one or more patches from a single product. To remove a patch from
            multiple products, RemovePatches must be called for each product.
            </summary>
            <param name="patches">List of patches to remove. Each patch can be specified by the GUID
            of the patch or the full path to the patch package.</param>
            <param name="productCode">The ProductCode (GUID) of the product from which the patches
            are removed.  This parameter cannot be null.</param>
            <param name="commandLine">optional command line property settings</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">There was an error removing the patches</exception>
            <remarks><p>
            The <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated"/> properties should be
            tested after calling this method.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiremovepatches.asp">MsiRemovePatches</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler)">
            <summary>
            Determines which patches apply to a specified product MSI and in what sequence.
            </summary>
            <param name="productPackage">Full path to an MSI file that is the target product
            for the set of patches.</param>
            <param name="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.</param>
            <param name="errorHandler">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.</param>
            <returns>An array of selected patch strings from <paramref name="patches"/>, indicating
            the set of applicable patches.  The items are re-ordered to be in the best sequence.</returns>
            <remarks><p>
            If an item in <paramref name="patches"/> is a file path but does not end in .MSP or .XML,
            it is assumed to be an MSP file.
            </p><p>
            As this overload uses InstallContext.None, it does not consider the current state of
            the system.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidetermineapplicablepatches.asp">MsiDetermineApplicablePatches</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            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.
            </summary>
            <param name="product">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.</param>
            <param name="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.</param>
            <param name="errorHandler">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.</param>
            <param name="userSid">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 <paramref name="context"/> is set to
            <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.None"/> or <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.Machine"/>, then
            <paramref name="userSid"/> must be null. For the current user context, <paramref name="userSid"/>
            can be null and <paramref name="context"/> can be set to <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserManaged"/>
            or <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserUnmanaged"/>.</param>
            <param name="context">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 <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.Machine"/>, <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserManaged"/>,
            <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.UserUnmanaged"/>, or <see cref="F:Microsoft.Deployment.WindowsInstaller.UserContexts.None"/>.</param>
            <returns>An array of selected patch strings from <paramref name="patches"/>, indicating
            the set of applicable patches.  The items are re-ordered to be in the best sequence.</returns>
            <remarks><p>
            If an item in <paramref name="patches"/> is a file path but does not end in .MSP or .XML,
            it is assumed to be an MSP file.
            </p><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidetermineapplicablepatches.asp">MsiDetermineApplicablePatches</a>
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msideterminepatchsequence.asp">MsiDeterminePatchSequence</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ApplyMultiplePatches(System.Collections.Generic.IList{System.String},System.String,System.String)">
            <summary>
            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.
            </summary>
            <param name="patchPackages">The set of patch packages to be applied.
            Each item is the full path to an MSP file.</param>
            <param name="productCode">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.</param>
            <param name="commandLine">optional command line property settings</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiapplymultiplepatches.asp">MsiApplyMultiplePatches</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ExtractPatchXmlData(System.String)">
            <summary>
            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
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)"/>
            instead of the full patch file.
            </summary>
            <param name="patchPath">Full path to the patch being queried.</param>
            <returns>XML string containing patch data.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiextractpatchxmldata.asp">MsiExtractPatchXMLData</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.NotifySidChange(System.String,System.String)">
            <summary>
            [MSI 3.1] Migrates a user's application configuration data to a new SID.
            </summary>
            <param name="oldSid">Previous user SID that data is to be migrated from</param>
            <param name="newSid">New user SID that data is to be migrated to</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msinotifysidchange.asp">MsiNotifySidChange</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.AdvertiseProduct(System.String,System.Boolean,System.String,System.Int32)">
            <summary>
            Advertises a product to the local computer.
            </summary>
            <param name="packagePath">Path to the package of the product being advertised</param>
            <param name="perUser">True if the product is user-assigned; false if it is machine-assigned.</param>
            <param name="transforms">Semi-colon delimited list of transforms to be applied. This parameter may be null.</param>
            <param name="locale">The language to use if the source supports multiple languages</param>
            <exception cref="T:System.IO.FileNotFoundException">the specified package file does not exist</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32,System.Reflection.ProcessorArchitecture,System.Boolean)"/>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproduct.asp">MsiAdvertiseProduct</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproductex.asp">MsiAdvertiseProductEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32)">
            <summary>
            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.
            </summary>
            <param name="packagePath">Path to the package of the product being advertised</param>
            <param name="scriptFilePath">path to script file to be created with the advertise information</param>
            <param name="transforms">Semi-colon delimited list of transforms to be applied. This parameter may be null.</param>
            <param name="locale">The language to use if the source supports multiple languages</param>
            <exception cref="T:System.IO.FileNotFoundException">the specified package file does not exist</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Installer.AdvertiseProduct(System.String,System.Boolean,System.String,System.Int32)"/>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproduct.asp">MsiAdvertiseProduct</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproductex.asp">MsiAdvertiseProductEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32,System.Reflection.ProcessorArchitecture,System.Boolean)">
            <summary>
            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.
            </summary>
            <param name="packagePath">Path to the package of the product being advertised</param>
            <param name="scriptFilePath">path to script file to be created with the advertise information</param>
            <param name="transforms">Semi-colon delimited list of transforms to be applied. This parameter may be null.</param>
            <param name="locale">The language to use if the source supports multiple languages</param>
            <param name="processor">Targeted processor architecture.</param>
            <param name="instance">True to install multiple instances through product code changing transform.
            Advertises a new instance of the product. Requires that the <paramref name="transforms"/> parameter
            includes the instance transform that changes the product code.</param>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Installer.AdvertiseProduct(System.String,System.Boolean,System.String,System.Int32)"/>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproduct.asp">MsiAdvertiseProduct</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiadvertiseproductex.asp">MsiAdvertiseProductEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.AdvertiseScript(System.String,System.Int32,System.Boolean)">
            <summary>
            Copies an advertise script file to the local computer.
            </summary>
            <param name="scriptFile">Path to a script file generated by
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32,System.Reflection.ProcessorArchitecture,System.Boolean)"/></param>
            <param name="flags">Flags controlling advertisement</param>
            <param name="removeItems">True if specified items are to be removed instead of being created</param>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.ProcessAdvertiseScript(System.String,System.String,System.Boolean,System.Boolean)">
            <summary>
            Processes an advertise script file into the specified locations.
            </summary>
            <param name="scriptFile">Path to a script file generated by
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32,System.Reflection.ProcessorArchitecture,System.Boolean)"/></param>
            <param name="iconFolder">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.</param>
            <param name="shortcuts">True if shortcuts should be created</param>
            <param name="removeItems">True if specified items are to be removed instead of created</param>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprocessadvertisescript.asp">MsiProcessAdvertiseScript</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetProductInfoFromScript(System.String)">
            <summary>
            Gets product information for an installer script file.
            </summary>
            <param name="scriptFile">Path to a script file generated by
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.GenerateAdvertiseScript(System.String,System.String,System.String,System.Int32,System.Reflection.ProcessorArchitecture,System.Boolean)"/></param>
            <returns>ProductInstallation stub with advertise-related properties filled in.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">An invalid product property was requested</exception>
            <remarks><p>
            Only the following properties will be filled in in the returned object:<ul>
            <li><see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductCode"/></li>
            <li><see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedLanguage"/></li>
            <li><see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedVersion"/></li>
            <li><see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedProductName"/></li>
            <li><see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedPackageName"/></li>
            </ul>Other properties will be null.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproductinfofromscript.asp">MsiGetProductInfoFromScript</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetErrorMessage(System.Int32)">
            <summary>
            Gets a Windows Installer error message in the system default language.
            </summary>
            <param name="errorNumber">The error number.</param>
            <returns>The message string, or null if the error message is not found.</returns>
            <remarks><p>
            The returned string may have tokens such as [2] and [3] that are meant to be substituted
            with context-specific values.
            </p><p>
            Error numbers greater than 2000 refer to MSI "internal" errors, and are always
            returned in English.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetErrorMessage(System.Int32,System.Globalization.CultureInfo)">
            <summary>
            Gets a Windows Installer error message in a specified language.
            </summary>
            <param name="errorNumber">The error number.</param>
            <param name="culture">The locale for the message.</param>
            <returns>The message string, or null if the error message or locale is not found.</returns>
            <remarks><p>
            The returned string may have tokens such as [2] and [3] that are meant to be substituted
            with context-specific values.
            </p><p>
            Error numbers greater than 2000 refer to MSI "internal" errors, and are always
            returned in English.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetErrorMessage(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Gets a formatted Windows Installer error message in the system default language.
            </summary>
            <param name="errorRecord">Error record containing the error number in the first field, and
            error-specific parameters in the other fields.</param>
            <returns>The message string, or null if the error message is not found.</returns>
            <remarks><p>
            Error numbers greater than 2000 refer to MSI "internal" errors, and are always
            returned in English.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetErrorMessage(Microsoft.Deployment.WindowsInstaller.Record,System.Globalization.CultureInfo)">
            <summary>
            Gets a formatted Windows Installer error message in a specified language.
            </summary>
            <param name="errorRecord">Error record containing the error number in the first field, and
            error-specific parameters in the other fields.</param>
            <param name="culture">The locale for the message.</param>
            <returns>The message string, or null if the error message or locale is not found.</returns>
            <remarks><p>
            Error numbers greater than 2000 refer to MSI "internal" errors, and are always
            returned in English.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetFileVersion(System.String)">
            <summary>
            Gets the version string of the path specified using the format that the installer
            expects to find it in in the database.
            </summary>
            <param name="path">Path to the file</param>
            <returns>Version string in the "#.#.#.#" format, or an empty string if the file
            does not contain version information</returns>
            <exception cref="T:System.IO.FileNotFoundException">the file does not exist or could not be read</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfileversion.asp">MsiGetFileVersion</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetFileLanguage(System.String)">
            <summary>
            Gets the language string of the path specified using the format that the installer
            expects to find them in in the database.
            </summary>
            <param name="path">Path to the file</param>
            <returns>Language string in the form of a decimal language ID, or an empty string if the file
            does not contain a language ID</returns>
            <exception cref="T:System.IO.FileNotFoundException">the file does not exist or could not be read</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfileversion.asp">MsiGetFileVersion</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetFileHash(System.String,System.Int32[])">
            <summary>
            Gets a 128-bit hash of the specified file.
            </summary>
            <param name="path">Path to the file</param>
            <param name="hash">Integer array of length 4 which receives the
            four 32-bit parts of the hash value.</param>
            <exception cref="T:System.IO.FileNotFoundException">the file does not exist or
            could not be read</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfilehash.asp">MsiGetFileHash</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetShortcutTarget(System.String)">
            <summary>
            Examines a shortcut and returns its product, feature name, and component if available.
            </summary>
            <param name="shortcut">Full path to a shortcut</param>
            <returns>ShortcutTarget structure containing target product code, feature, and component code</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetshortcuttarget.asp">MsiGetShortcutTarget</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.VerifyPackage(System.String)">
            <summary>
            Verifies that the given file is an installation package.
            </summary>
            <param name="packagePath">Path to the package</param>
            <returns>True if the file is an installation package; false otherwise.</returns>
            <exception cref="T:System.IO.FileNotFoundException">the specified package file does not exist</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the package file could not be opened</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiverifypackage.asp">MsiVerifyPackage</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Installer.GetPatchFileList(System.String,System.Collections.Generic.IList{System.String})">
            <summary>
            [MSI 4.0] Gets the list of files that can be updated by one or more patches.
            </summary>
            <param name="productCode">ProductCode (GUID) of the product which is
            the target of the patches</param>
            <param name="patches">list of file paths of one or more patches to be
            analyzed</param>
            <returns>List of absolute paths of files that can be updated when the
            patches are applied on this system.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetpatchfilelist.asp">MsiGetPatchFileList</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootRequired">
            <summary>
            Indicates whether a system reboot is required after running an installation or configuration operation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installer.RebootInitiated">
            <summary>
            Indicates whether a system reboot has been initiated after running an installation or configuration operation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installer.Version">
            <summary>
            Gets the current version of the installer.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection">
            <summary>
            Accessor for information about features within the context of an installation session.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection.Contains(System.String)">
            <summary>
            Checks if the collection contains a feature.
            </summary>
            <param name="feature">name of the feature</param>
            <returns>true if the feature is in the collection, else false</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection.CopyTo(Microsoft.Deployment.WindowsInstaller.FeatureInfo[],System.Int32)">
            <summary>
            Copies the features into an array.
            </summary>
            <param name="array">array that receives the features</param>
            <param name="arrayIndex">offset into the array</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection.GetEnumerator">
            <summary>
            Enumerates the features in the collection.
            </summary>
            <returns>an enumerator over all features in the collection</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection.Item(System.String)">
            <summary>
            Gets information about a feature within the context of an installation session.
            </summary>
            <param name="feature">name of the feature</param>
            <returns>feature object</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfoCollection.Count">
            <summary>
            Gets the number of features defined for the product.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FeatureInfo">
            <summary>
            Provides access to information about a feature within the context of an installation session.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.FeatureInfo.GetCost(System.Boolean,System.Boolean,Microsoft.Deployment.WindowsInstaller.InstallState)">
            <summary>
            Calculates the disk space required by the feature and its selected children and parent features.
            </summary>
            <param name="includeParents">If true, the parent features are included in the cost.</param>
            <param name="includeChildren">If true, the child features are included in the cost.</param>
            <param name="installState">Specifies the installation state.</param>
            <returns>The disk space requirement in bytes.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeaturecost.asp">MsiGetFeatureCost</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.Name">
            <summary>
            Gets the name of the feature (primary key in the Feature table).
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.CurrentState">
            <summary>
            Gets the current install state of the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeaturestate.asp">MsiGetFeatureState</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.RequestState">
            <summary>
            Gets or sets the action state of the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeaturestate.asp">MsiGetFeatureState</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetfeaturestate.asp">MsiSetFeatureState</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.ValidStates">
            <summary>
            Gets a list of valid installation states for the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeaturevalidstates.asp">MsiGetFeatureValidStates</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.Attributes">
            <summary>
            Gets or sets the attributes of the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeatureinfo.asp">MsiGetFeatureInfo</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetfeatureattributes.asp">MsiSetFeatureAttributes</a>
            </p><p>
            Since the lpAttributes paramter of
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeatureinfo.asp">MsiGetFeatureInfo</a>
            does not contain an equivalent flag for <see cref="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.UIDisallowAbsent"/>, this flag will
            not be retrieved.
            </p><p>
            Since the dwAttributes parameter of 
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetfeatureattributes.asp">MsiSetFeatureAttributes</a>
            does not contain an equivalent flag for <see cref="F:Microsoft.Deployment.WindowsInstaller.FeatureAttributes.UIDisallowAbsent"/>, the presence
            of this flag will be ignored.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.Title">
            <summary>
            Gets the title of the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeatureinfo.asp">MsiGetFeatureInfo</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInfo.Description">
            <summary>
            Gets the description of the feature.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentException">an unknown feature was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeatureinfo.asp">MsiGetFeatureInfo</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FeatureInstallation">
            <summary>
            Represents an instance of a feature of an installed product.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.#ctor(System.String,System.String)">
            <summary>
            Creates a new FeatureInstallation instance for a feature of a product.
            </summary>
            <param name="featureName">feature name</param>
            <param name="productCode">ProductCode GUID</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.FeatureName">
            <summary>
            Gets the name of the feature.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.State">
            <summary>
            Gets the installed state of the feature.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiqueryfeaturestate.asp">MsiQueryFeatureState</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.Parent">
            <summary>
            Gets the parent of the feature, or null if the feature has no parent (it is a root feature).
            </summary>
            <remarks>
            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.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.Usage">
            <summary>
            Gets the usage metrics for the feature.
            </summary>
            <remarks><p>
            If no usage metrics are recorded, the <see cref="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.UsageData.UseCount"/> value is 0.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetfeatureusage.asp">MsiGetFeatureUsage</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.UsageData">
            <summary>
            Holds data about the usage of a feature.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.UsageData.UseCount">
            <summary>
            Gets count of the number of times the feature has been used.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.FeatureInstallation.UsageData.LastUsedDate">
            <summary>
            Gets the date the feature was last used.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.IEmbeddedUI">
            <summary>
            [MSI 4.5] Interface for an embedded external user interface for an installation.
            </summary>
            <remarks>
            Classes which implement this interface must have a public constructor that takes no parameters.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.IEmbeddedUI.Initialize(Microsoft.Deployment.WindowsInstaller.Session,System.String,Microsoft.Deployment.WindowsInstaller.InstallUIOptions@)">
            <summary>
            Initializes the embedded UI.
            </summary>
            <param name="session">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.</param>
            <param name="resourcePath">Path to the directory that contains all the files from the MsiEmbeddedUI table.</param>
            <param name="internalUILevel">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.</param>
            <returns>True if the embedded UI was successfully initialized; false if the installation
            should continue without the embedded UI.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">The installation was canceled by the user.</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The embedded UI failed to initialize and
            causes the installation to fail.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/initializeembeddedui.asp">InitializeEmbeddedUI</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.IEmbeddedUI.ProcessMessage(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record,Microsoft.Deployment.WindowsInstaller.MessageButtons,Microsoft.Deployment.WindowsInstaller.MessageIcon,Microsoft.Deployment.WindowsInstaller.MessageDefaultButton)">
            <summary>
            Processes information and progress messages sent to the user interface.
            </summary>
            <param name="messageType">Message type.</param>
            <param name="messageRecord">Record that contains message data.</param>
            <param name="buttons">Message buttons.</param>
            <param name="icon">Message box icon.</param>
            <param name="defaultButton">Message box default button.</param>
            <returns>Result of processing the message.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/embeddeduihandler.asp">EmbeddedUIHandler</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.IEmbeddedUI.Shutdown">
            <summary>
            Shuts down the embedded UI at the end of the installation.
            </summary>
            <remarks>
            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.
            <p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/shutdownembeddedui.asp">ShutdownEmbeddedUI</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Installation">
            <summary>
            Subclasses of this abstract class represent a unique instance of a
            registered product or patch installation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installation.UserSid">
            <summary>
            Gets the user security identifier (SID) under which this product or patch
            installation is available.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installation.Context">
            <summary>
            Gets the user context of this product or patch installation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installation.SourceList">
            <summary>
            Gets the source list of this product or patch installation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installation.IsInstalled">
            <summary>
            Gets a value indicating whether this product or patch is installed on the current system.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Installation.Item(System.String)">
            <summary>
            Gets a property about the product or patch installation.
            </summary>
            <param name="propertyName">Name of the property being retrieved.</param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InstallCost">
            <summary>
            Represents a per-drive disk space cost for an installation.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.InstallCost.#ctor(System.String,System.Int64,System.Int64)">
            <summary>
            Creates a new InstallCost object.
            </summary>
            <param name="driveName">name of the drive this cost data applies to</param>
            <param name="cost">installation cost on this drive, as a number of bytes</param>
            <param name="tempCost">temporary disk space required on this drive, as a number of bytes</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallCost.DriveName">
            <summary>
            The name of the drive this cost data applies to.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallCost.Cost">
            <summary>
            The installation cost on this drive, as a number of bytes.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.InstallCost.TempCost">
            <summary>
            The temporary disk space required on this drive, as a number of bytes.
            </summary>
            <remarks><p>
            This temporary space requirement is space needed only for the duration
            of the installation, over the final footprint on disk.
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler">
            <summary>
            Receives an exception from
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)"/>
            indicating the reason a particular patch is not applicable to a product.
            </summary>
            <param name="patch">MSP file path, XML file path, or XML blob that was passed to 
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.DetermineApplicablePatches(System.String,System.String[],Microsoft.Deployment.WindowsInstaller.InapplicablePatchHandler,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)"/></param>
            <param name="exception">exception indicating the reason the patch is not applicable</param>
            <remarks><p>
            If <paramref name="exception"/> is an <see cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException"/> or subclass, then
            its <see cref="P:Microsoft.Deployment.WindowsInstaller.InstallerException.ErrorCode"/> and <see cref="P:Microsoft.Deployment.WindowsInstaller.InstallerException.Message"/>
            properties will indicate a more specific reason the patch was not applicable.
            </p><p>
            The <paramref name="exception"/> could also be a FileNotFoundException if the
            patch string was a file path.
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Transaction">
            <summary>
            [MSI 4.5] Handle to a multi-session install transaction.
            </summary>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msibegintransaction.asp">MsiBeginTransaction</a>
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msijointransaction.asp">MsiJoinTransaction</a>
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiendtransaction.asp">MsiEndTransaction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.#ctor(System.String,Microsoft.Deployment.WindowsInstaller.TransactionAttributes)">
            <summary>
            [MSI 4.5] Begins transaction processing of a multi-package installation.
            </summary>
            <param name="name">Name of the multi-package installation.</param>
            <param name="attributes">Select optional behavior when beginning the transaction.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The transaction could not be initialized.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msibegintransaction.asp">MsiBeginTransaction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.#ctor(System.String,System.IntPtr[],System.Boolean)">
            <summary>
            Internal constructor.
            </summary>
            <remarks>
            The second parameter is an array in order to receive multiple values from the initialization method.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.FromHandle(System.IntPtr,System.Boolean)">
            <summary>
            Creates a new Transaction object from an integer handle.
            </summary>
            <param name="handle">Integer transaction handle</param>
            <param name="ownsHandle">true to close the handle when this object is disposed</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.Join(Microsoft.Deployment.WindowsInstaller.TransactionAttributes)">
            <summary>
            Makes the current process the owner of the multi-package installation transaction.
            </summary>
            <param name="attributes">Select optional behavior when joining the transaction.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">The transaction handle is not valid.</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The transaction could not be joined.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msijointransaction.asp">MsiJoinTransaction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.Commit">
            <summary>
            Ends the install transaction and commits all changes to the system belonging to the transaction.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The transaction could not be committed.</exception>
            <remarks><p>
            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.
            </p><p>
            This method can only be called by the current owner of the transaction.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiendtransaction.asp">MsiEndTransaction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Transaction.Rollback">
            <summary>
            Ends the install transaction and undoes changes to the system belonging to the transaction.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The transaction could not be rolled back.</exception>
            <remarks><p>
            This method can only be called by the current owner of the transaction.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiendtransaction.asp">MsiEndTransaction</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Transaction.Name">
            <summary>
            Gets the name of the transaction.
            </summary>
        </member>
        <member name="E:Microsoft.Deployment.WindowsInstaller.Transaction.OwnerChanged">
            <summary>
            Notifies listeners when the process that owns the transaction changed.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MediaDisk">
            <summary>
            Represents a media disk source of a product or a patch.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.MediaDisk.#ctor(System.Int32,System.String,System.String)">
            <summary>
            Creates a new media disk.
            </summary>
            <param name="diskId"></param>
            <param name="volumeLabel"></param>
            <param name="diskPrompt"></param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MediaDisk.DiskId">
            <summary>
            Gets or sets the disk id of the media disk.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MediaDisk.VolumeLabel">
            <summary>
            Gets or sets the volume label of the media disk.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.MediaDisk.DiskPrompt">
            <summary>
            Gets or sets the disk prompt of the media disk.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.PatchInstallation">
            <summary>
            The Patch object represents a unique instance of a patch that has been
            registered or applied.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.PatchInstallation.GetPatches(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts,Microsoft.Deployment.WindowsInstaller.PatchStates)">
            <summary>
            Enumerates patch installations based on certain criteria.
            </summary>
            <param name="patchCode">PatchCode (GUID) of the patch to be enumerated. Only
            instances of patches within the scope of the context specified by the
            <paramref name="userSid"/> and <paramref name="context"/> parameters will be
            enumerated. This parameter may be set to null to enumerate all patches in the specified
            context.</param>
            <param name="targetProductCode">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.</param>
            <param name="userSid">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
            <paramref name="userSid"/> must be null.</param>
            <param name="context">Specifies the user context.</param>
            <param name="states">The <see cref="T:Microsoft.Deployment.WindowsInstaller.PatchStates"/> of patches to return.</param>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumpatchesex.asp">MsiEnumPatchesEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.PatchInstallation.#ctor(System.String,System.String)">
            <summary>
            Creates a new object for accessing information about a patch installation on the current system.
            </summary>
            <param name="patchCode">Patch code (GUID) of the patch.</param>
            <param name="productCode">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.</param>
            <remarks><p>
            All available user contexts will be queried.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.PatchInstallation.#ctor(System.String,System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Creates a new object for accessing information about a patch installation on the current system.
            </summary>
            <param name="patchCode">Registered patch code (GUID) of the patch.</param>
            <param name="productCode">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.</param>
            <param name="userSid">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.</param>
            <param name="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.</param>
            <remarks><p>
            If the <paramref name="productCode"/> is null, the Patch object may
            only be used to read and update the patch's SourceList information.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.AllPatches">
            <summary>
            Enumerates all patch installations on the system.
            </summary>
            <returns>Enumeration of patch objects.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumpatches.asp">MsiEnumPatches</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.PatchCode">
            <summary>
            Gets the patch code (GUID) of the patch.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.ProductCode">
            <summary>
            Gets the ProductCode (GUID) of the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.IsInstalled">
            <summary>
            Gets a value indicating whether this patch is currently installed.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.IsObsoleted">
            <summary>
            Gets a value indicating whether this patch is marked as obsolte.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.IsSuperseded">
            <summary>
            Gets a value indicating whether this patch is present but has been
            superseded by a more recent installed patch.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.State">
            <summary>
            Gets the installation state of this instance of the patch.
            </summary>
            <exception cref="T:System.ArgumentException">An unknown patch was requested</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.LocalPackage">
            <summary>
            Gets the cached patch file that the product uses.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.Transforms">
            <summary>
            Gets the set of patch transforms that the last patch
            installation applied to the product.
            </summary>
            <remarks><p>
            This value may not be available for per-user, non-managed applications
            if the user is not logged on.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.InstallDate">
            <summary>
            Gets the date and time when the patch is applied to the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.Uninstallable">
            <summary>
            True patch is marked as possible to uninstall from the product.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.DisplayName">
            <summary>
            Get the registered display name for the patch.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.MoreInfoUrl">
            <summary>
            Gets the registered support information URL for the patch.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.PatchInstallation.Item(System.String)">
            <summary>
            Gets information about a specific patch installation. 
            </summary>
            <param name="propertyName">The property being retrieved; see remarks for valid properties.</param>
            <returns>The property value, or an empty string if the property is not set for the patch.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">An unknown patch or property was requested</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetpatchinfo.asp">MsiGetPatchInfo</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetpatchinfoex.asp">MsiGetPatchInfoEx</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ProductInstallation">
            <summary>
            Represents a unique instance of a product that
            is either advertised, installed or unknown.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.GetRelatedProducts(System.String)">
            <summary>
            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.
            </summary>
            <param name="upgradeCode">Upgrade code of related products</param>
            <returns>Enumeration of product codes</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumrelatedproducts.asp">MsiEnumRelatedProducts</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.GetProducts(System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Enumerates product installations based on certain criteria.
            </summary>
            <param name="productCode">ProductCode (GUID) of the product instances to be enumerated. Only
            instances of products within the scope of the context specified by the
            <paramref name="userSid"/> and <paramref name="context"/> parameters will be
            enumerated. This parameter may be set to null to enumerate all products in the specified
            context.</param>
            <param name="userSid">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
            <paramref name="context"/> is set to the machine context only,
            <paramref name="userSid"/> must be null.</param>
            <param name="context">Specifies the user context.</param>
            <returns>An enumeration of product objects for enumerated product instances.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumproductsex.asp">MsiEnumProductsEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.#ctor(System.String)">
            <summary>
            Creates a new object for accessing information about a product installation on the current system.
            </summary>
            <param name="productCode">ProductCode (GUID) of the product.</param>
            <remarks><p>
            All available user contexts will be queried.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.#ctor(System.String,System.String,Microsoft.Deployment.WindowsInstaller.UserContexts)">
            <summary>
            Creates a new object for accessing information about a product installation on the current system.
            </summary>
            <param name="productCode">ProductCode (GUID) of the product.</param>
            <param name="userSid">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.</param>
            <param name="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.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.GetFeatureState(System.String)">
            <summary>
            Gets the installed state for a product feature.
            </summary>
            <param name="feature">The feature being queried; identifier from the
            Feature table</param>
            <returns>Installation state of the feature for the product instance: either
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Local"/>, <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Source"/>,
            or <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Advertised"/>.</returns>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiqueryfeaturestate.asp">MsiQueryFeatureState</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiqueryfeaturestateex.asp">MsiQueryFeatureStateEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.GetComponentState(System.String)">
            <summary>
            Gets the installed state for a product component.
            </summary>
            <param name="component">The component being queried; GUID of the component
            as found in the ComponentId column of the Component table.</param>
            <returns>Installation state of the component for the product instance: either
            <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Local"/> or <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallState.Source"/>.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiquerycomponnetstate.asp">MsiQueryComponentState</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.CollectUserInfo">
            <summary>
            Obtains and stores the user information and product ID from an installation wizard.
            </summary>
            <remarks><p>
            This method is typically called by an application during the first run of the application. The application
            first gets the <see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductId"/> or <see cref="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.RegOwner"/>.
            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
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.SetInternalUI(Microsoft.Deployment.WindowsInstaller.InstallUIOptions)"/> as <see cref="F:Microsoft.Deployment.WindowsInstaller.InstallUIOptions.Full"/>.
            </p><p>
            The CollectUserInfo method invokes a FirstRun dialog from the product installation database.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msicollectuserinfo.asp">MsiCollectUserInfo</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ParseVersion(System.String)">
            <summary>
            Some products might write some invalid/nonstandard version strings to the registry.
            This method tries to get the best data it can.
            </summary>
            <param name="ver">Version string retrieved from the registry.</param>
            <returns>Version object, or null if the version string is completely invalid.</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AllProducts">
            <summary>
            Enumerates all product installations on the system.
            </summary>
            <returns>An enumeration of product objects.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumproducts.asp">MsiEnumProducts</a>,
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.Features">
            <summary>
            Gets the set of published features for the product.
            </summary>
            <returns>Enumeration of published features for the product.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Because features are not ordered, any new feature has an arbitrary index, meaning
            this property can return features in any order.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumfeatures.asp">MsiEnumFeatures</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductCode">
            <summary>
            Gets the ProductCode (GUID) of the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.IsInstalled">
            <summary>
            Gets a value indicating whether this product is installed on the current system.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.IsAdvertised">
            <summary>
            Gets a value indicating whether this product is advertised on the current system.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.IsElevated">
            <summary>
            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.
            </summary>
            <returns>True if the product is elevated; false otherwise</returns>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.SourceList">
            <summary>
            Gets the source list of this product installation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.HelpLink">
            <summary>
            The support link.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.HelpTelephone">
            <summary>
            The support telephone.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.InstallDate">
            <summary>
            Date and time the product was installed.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductName">
            <summary>
            The installed product name.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.InstallLocation">
            <summary>
            The installation location.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.InstallSource">
            <summary>
            The installation source.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.LocalPackage">
            <summary>
            The local cached package.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.Publisher">
            <summary>
            The publisher.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.UrlInfoAbout">
            <summary>
            URL about information.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.UrlUpdateInfo">
            <summary>
            The URL update information.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductVersion">
            <summary>
            The product version.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.ProductId">
            <summary>
            The product identifier.
            </summary>
            <remarks><p>
            For more information, see
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/productid.asp">ProductID</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.RegCompany">
            <summary>
            The company that is registered to use the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.RegOwner">
            <summary>
            The owner who is registered to use the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedTransforms">
            <summary>
            Transforms.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedLanguage">
            <summary>
            Product language.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedProductName">
            <summary>
            Human readable product name.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedPerMachine">
            <summary>
            True if the product is advertised per-machine;
            false if it is per-user or not advertised.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedPackageCode">
            <summary>
            Identifier of the package that a product is installed from.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedVersion">
            <summary>
            Version of the advertised product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedProductIcon">
            <summary>
            Primary icon for the package.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.AdvertisedPackageName">
            <summary>
            Name of the installation package for the advertised product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.PrivilegedPatchingAuthorized">
            <summary>
            True if the advertised product can be serviced by
            non-administrators without elevation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ProductInstallation.Item(System.String)">
            <summary>
            Gets information about an installation of a product. 
            </summary>
            <param name="propertyName">Name of the property being retrieved.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">An unknown product or property was requested</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The installer configuration data is corrupt</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproductinfo.asp">MsiGetProductInfo</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproductinfoex.asp">MsiGetProductInfoEx</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Record">
            <summary>
            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.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.#ctor(System.Int32)">
            <summary>
            Creates a new record object with the requested number of fields.
            </summary>
            <param name="fieldCount">Required number of fields, which may be 0.
            The maximum number of fields in a record is limited to 65535.</param>
            <remarks><p>
            The Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msicreaterecord.asp">MsiCreateRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.#ctor(System.Object[])">
            <summary>
            Creates a new record object, providing values for an arbitrary number of fields.
            </summary>
            <param name="fields">The values of the record fields.  The parameters should be of type Int16, Int32 or String</param>
            <remarks><p>
            The Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msicreaterecord.asp">MsiCreateRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.FromHandle(System.IntPtr,System.Boolean)">
            <summary>
            Creates a new Record object from an integer record handle.
            </summary>
            <remarks><p>
            This method is only provided for interop purposes.  A Record object
            should normally be obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>
            other methods.
            <p>The handle will be closed when this object is disposed or finalized.</p>
            </p></remarks>
            <param name="handle">Integer record handle</param>
            <param name="ownsHandle">true to close the handle when this object is disposed or finalized</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.Clear">
            <summary>
            Sets all fields in a record to null.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordcleardata.asp">MsiRecordClearData</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.IsNull(System.Int32)">
            <summary>
            Reports whether a record field is null.
            </summary>
            <param name="field">Specifies the field to check.</param>
            <returns>True if the field is null, false otherwise.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordisnull.asp">MsiRecordIsNull</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.IsNull(System.String)">
            <summary>
            Reports whether a record field is null.
            </summary>
            <param name="fieldName">Specifies the field to check.</param>
            <returns>True if the field is null, false otherwise.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetDataSize(System.Int32)">
            <summary>
            Gets the length of a record field. The count does not include the terminating null.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            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.
            </p><p>
            If the data is in integer format, the property returns 2 or 4.
            </p><p>
            If the data is in string format, the property returns the character count
            (not including the NULL terminator).
            </p><p>
            If the data is in stream format, the property returns the byte count.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecorddatasize.asp">MsiRecordDataSize</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetDataSize(System.String)">
            <summary>
            Gets the length of a record field. The count does not include the terminating null.
            </summary>
            <param name="fieldName">Specifies the field to check.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <remarks><p>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.
            </p><p>
            If the data is in integer format, the property returns 2 or 4.
            </p><p>
            If the data is in string format, the property returns the character count
            (not including the NULL terminator).
            </p><p>
            If the data is in stream format, the property returns the byte count.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetInteger(System.Int32)">
            <summary>
            Gets a field value as an integer.
            </summary>
            <param name="field">Specifies the field to retrieve.</param>
            <returns>Integer value of the field, or 0 if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetinteger.asp">MsiRecordGetInteger</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetNullableInteger(System.Int32)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetInteger(System.String)">
            <summary>
            Gets a field value as an integer.
            </summary>
            <param name="fieldName">Specifies the field to retrieve.</param>
            <returns>Integer value of the field, or 0 if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetNullableInteger(System.String)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetNullableInteger(System.Int32)">
            <summary>
            Gets a field value as an integer.
            </summary>
            <param name="field">Specifies the field to retrieve.</param>
            <returns>Integer value of the field, or null if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetinteger.asp">MsiRecordGetInteger</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetInteger(System.Int32)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetNullableInteger(System.String)">
            <summary>
            Gets a field value as an integer.
            </summary>
            <param name="fieldName">Specifies the field to retrieve.</param>
            <returns>Integer value of the field, or null if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetInteger(System.String)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetInteger(System.Int32,System.Int32)">
            <summary>
            Sets the value of a field to an integer.
            </summary>
            <param name="field">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetinteger.asp">MsiRecordSetInteger</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetNullableInteger(System.Int32,System.Nullable{System.Int32})"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetInteger(System.String,System.Int32)">
            <summary>
            Sets the value of a field to an integer.
            </summary>
            <param name="fieldName">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetNullableInteger(System.String,System.Nullable{System.Int32})"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetNullableInteger(System.Int32,System.Nullable{System.Int32})">
            <summary>
            Sets the value of a field to a nullable integer.
            </summary>
            <param name="field">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetinteger.asp">MsiRecordSetInteger</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetInteger(System.Int32,System.Int32)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetNullableInteger(System.String,System.Nullable{System.Int32})">
            <summary>
            Sets the value of a field to a nullable integer.
            </summary>
            <param name="fieldName">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetInteger(System.String,System.Int32)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetString(System.Int32)">
            <summary>
            Gets a field value as a string.
            </summary>
            <param name="field">Specifies the field to retrieve.</param>
            <returns>String value of the field, or an empty string if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetstring.asp">MsiRecordGetString</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetString(System.String)">
            <summary>
            Gets a field value as a string.
            </summary>
            <param name="fieldName">Specifies the field to retrieve.</param>
            <returns>String value of the field, or an empty string if the field is null.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetString(System.Int32,System.String)">
            <summary>
            Sets the value of a field to a string.
            </summary>
            <param name="field">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetstring.asp">MsiRecordSetString</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetString(System.String,System.String)">
            <summary>
            Sets the value of a field to a string.
            </summary>
            <param name="fieldName">Specifies the field to set.</param>
            <param name="value">new value of the field</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.Int32,System.String)">
            <summary>
            Reads a record stream field into a file.
            </summary>
            <param name="field">Specifies the field of the Record to get.</param>
            <param name="filePath">Specifies the path to the file to contain the stream.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <exception cref="T:System.NotSupportedException">Attempt to extract a storage from a database open
            in read-write mode, or from a database without an associated file path</exception>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordreadstream.asp">MsiRecordReadStream</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.String,System.String)">
            <summary>
            Reads a record stream field into a file.
            </summary>
            <param name="fieldName">Specifies the field of the Record to get.</param>
            <param name="filePath">Specifies the path to the file to contain the stream.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <exception cref="T:System.NotSupportedException">Attempt to extract a storage from a database open
            in read-write mode, or from a database without an associated file path</exception>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.Int32)">
            <summary>
            Gets a record stream field.
            </summary>
            <param name="field">Specifies the field of the Record to get.</param>
            <returns>A Stream that reads the field data.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            This method is not capable of reading substorages. To extract a substorage,
            use <see cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.Int32,System.String)"/>.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordreadstream.asp">MsiRecordReadStream</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.String)">
            <summary>
            Gets a record stream field.
            </summary>
            <param name="fieldName">Specifies the field of the Record to get.</param>
            <returns>A Stream that reads the field data.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <remarks><p>
            This method is not capable of reading substorages. To extract a substorage,
            use <see cref="M:Microsoft.Deployment.WindowsInstaller.Record.GetStream(System.String,System.String)"/>.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.Int32,System.String)">
            <summary>
            Sets a record stream field from a file. Stream data cannot be inserted into temporary fields.
            </summary>
            <param name="field">Specifies the field of the Record to set.</param>
            <param name="filePath">Specifies the path to the file containing the stream.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            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.
            </p><p>
            To reset the stream to its beginning you must pass in null for filePath.
            Do not pass an empty string, "", to reset the stream.
            </p><p>
            Setting a stream with this method is more efficient than setting a field to a
            FileStream object.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetstream.asp">MsiRecordsetStream</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.String,System.String)">
            <summary>
            Sets a record stream field from a file. Stream data cannot be inserted into temporary fields.
            </summary>
            <param name="fieldName">Specifies the field name of the Record to set.</param>
            <param name="filePath">Specifies the path to the file containing the stream.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <remarks><p>
            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.
            </p><p>
            Setting a stream with this method is more efficient than setting a field to a
            FileStream object.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.Int32,System.IO.Stream)">
            <summary>
            Sets a record stream field from a Stream object. Stream data cannot be inserted into temporary fields.
            </summary>
            <param name="field">Specifies the field of the Record to set.</param>
            <param name="stream">Specifies the stream data.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            The stream persists if the Record is inserted into the Database and the Database is committed.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetstream.asp">MsiRecordsetStream</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.String,System.IO.Stream)">
            <summary>
            Sets a record stream field from a Stream object. Stream data cannot be inserted into temporary fields.
            </summary>
            <param name="fieldName">Specifies the field name of the Record to set.</param>
            <param name="stream">Specifies the stream data.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field name does not match any
            of the named fields in the Record.</exception>
            <remarks><p>
            The stream persists if the Record is inserted into the Database and the Database is committed.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.ToString">
            <summary>
            Gets a formatted string representation of the Record.
            </summary>
            <returns>A formatted string representation of the Record.</returns>
            <remarks><p>
            If field 0 of the Record is set to a nonempty string, it is used to format the data in the Record.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
            <seealso cref="P:Microsoft.Deployment.WindowsInstaller.Record.FormatString"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Session.FormatRecord(Microsoft.Deployment.WindowsInstaller.Record)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.ToString(System.IFormatProvider)">
            <summary>
            Gets a formatted string representation of the Record, optionally using a Session to format properties.
            </summary>
            <param name="provider">an optional Session instance that will be used to lookup any
            properties in the Record's format string</param>
            <returns>A formatted string representation of the Record.</returns>
            <remarks><p>
            If field 0 of the Record is set to a nonempty string, it is used to format the data in the Record.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
            <seealso cref="P:Microsoft.Deployment.WindowsInstaller.Record.FormatString"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Session.FormatRecord(Microsoft.Deployment.WindowsInstaller.Record)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.ToString(System.String)">
            <summary>
            Gets a formatted string representation of the Record.
            </summary>
            <param name="format">String to be used to format the data in the Record,
            instead of the Record's format string.</param>
            <returns>A formatted string representation of the Record.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Record.ToString(System.String,System.IFormatProvider)">
            <summary>
            Gets a formatted string representation of the Record, optionally using a Session to format properties.
            </summary>
            <param name="format">String to be used to format the data in the Record,
            instead of the Record's format string.</param>
            <param name="provider">an optional Session instance that will be used to lookup any
            properties in the Record's format string</param>
            <returns>A formatted string representation of the Record.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
            <seealso cref="P:Microsoft.Deployment.WindowsInstaller.Record.FormatString"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Session.FormatRecord(Microsoft.Deployment.WindowsInstaller.Record)"/>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Record.IsFormatStringInvalid">
            <summary>
            IsFormatStringInvalid is set from several View methods that invalidate the FormatString
            and used to determine behavior during Record.ToString().
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Record.FieldCount">
            <summary>
            Gets the number of fields in a record.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetfieldcount.asp">MsiRecordGetFieldCount</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Record.FormatString">
            <summary>
            Gets or sets field 0 of the Record, which is the format string.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Record.Item(System.String)">
            <summary>
            Gets or sets a record field value.
            </summary>
            <param name="fieldName">Specifies the name of the field of the Record to get or set.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The name does not match any known field of the Record.</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Record.Item(System.Int32)">
            <summary>
            Gets or sets a record field value.
            </summary>
            <param name="field">Specifies the field of the Record to get or set.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">The field is less than 0 or greater than the
            number of fields in the Record.</exception>
            <remarks><p>
            Record fields are indexed starting with 1.  Field 0 is a special format field.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetinteger.asp">MsiRecordGetInteger</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordgetstring.asp">MsiRecordGetString</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetinteger.asp">MsiRecordSetInteger</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msirecordsetstring.asp">MsiRecordSetString</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.RemoteMsiFunctionId">
            <summary>
            Assigns ID numbers to the MSI APIs that are remotable.
            </summary>
            <remarks><p>
            This enumeration MUST stay in sync with the
            unmanaged equivalent in RemoteMsiSession.h!
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.MsiRemoteInvoke">
            <summary>
            Defines the signature of the native function
            in SfxCA.dll that implements the remoting call.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.RemotableNativeMethods">
            <summary>
            Redirects native API calls to either the normal NativeMethods class
            or to out-of-proc calls via the remoting channel.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.RemotableNativeMethods.RemotingEnabled">
            <summary>
            Checks if the current process is using remoting to access the
            MSI session and database APIs.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.RemotableNativeMethods.RemotingDelegate">
            <summary>
            Sets a delegate that is used to make remote API calls.
            </summary>
            <remarks><p>
            The implementation of this delegate is provided by the
            custom action host DLL.
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Session">
            <summary>
            The Session object controls the installation process. It opens the
            install database, which contains the installation tables and data.
            </summary>
            <remarks><p>
            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.
            </p><p>
            Note that only one Session object can be opened by a single process.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.FromHandle(System.IntPtr,System.Boolean)">
            <summary>
            Creates a new Session object from an integer session handle.
            </summary>
            <param name="handle">Integer session handle</param>
            <param name="ownsHandle">true to close the handle when this object is disposed or finalized</param>
            <remarks><p>
            This method is only provided for interop purposes.  A Session object
            should normally be obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.OpenPackage(Microsoft.Deployment.WindowsInstaller.Database,System.Boolean)"/>
            or <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.OpenProduct(System.String)"/>.
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.Message(Microsoft.Deployment.WindowsInstaller.InstallMessage,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Performs any enabled logging operations and defers execution to the UI handler
            object associated with the engine.
            </summary>
            <param name="messageType">Type of message to be processed</param>
            <param name="record">Contains message-specific fields</param>
            <returns>A message-dependent return value</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session or Record handle is invalid</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">an invalid message kind is specified</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the message-handler failed for an unknown reason</exception>
            <remarks><p>
            Logging may be selectively enabled for the various message types.
            See the <see cref="M:Microsoft.Deployment.WindowsInstaller.Installer.EnableLog(Microsoft.Deployment.WindowsInstaller.InstallLogModes,System.String)"/> method.
            </p><p>
            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.
            </p><p>
            The <paramref name="messageType"/> 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.
            </p><p>
            Note, this method never returns Cancel or Error values.  Instead, appropriate
            exceptions are thrown in those cases.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprocessmessage.asp">MsiProcessMessage</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.Log(System.String)">
            <summary>
            Writes a message to the log, if logging is enabled.
            </summary>
            <param name="msg">The line to be written to the log</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprocessmessage.asp">MsiProcessMessage</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.Log(System.String,System.Object[])">
            <summary>
            Writes a formatted message to the log, if logging is enabled.
            </summary>
            <param name="format">The line to be written to the log, containing 0 or more format specifiers</param>
            <param name="args">An array containing 0 or more objects to be formatted</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiprocessmessage.asp">MsiProcessMessage</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.EvaluateCondition(System.String)">
            <summary>
            Evaluates a logical expression containing symbols and values.
            </summary>
            <param name="condition">conditional expression</param>
            <returns>The result of the condition evaluation</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentNullException">the condition is null or empty</exception>
            <exception cref="T:System.InvalidOperationException">the conditional expression is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msievaluatecondition.asp">MsiEvaluateCondition</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.EvaluateCondition(System.String,System.Boolean)">
            <summary>
            Evaluates a logical expression containing symbols and values, specifying a default
            value to be returned in case the condition is empty.
            </summary>
            <param name="condition">conditional expression</param>
            <param name="defaultValue">value to return if the condition is empty</param>
            <returns>The result of the condition evaluation</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.InvalidOperationException">the conditional expression is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msievaluatecondition.asp">MsiEvaluateCondition</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.Format(System.String)">
            <summary>
            Formats a string containing installer properties.
            </summary>
            <param name="format">A format string containing property tokens</param>
            <returns>A formatted string containing property data</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Record handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.FormatRecord(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Returns a formatted string from record data.
            </summary>
            <param name="record">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.</param>
            <returns>A formatted string containing the record data</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Record handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.FormatRecord(Microsoft.Deployment.WindowsInstaller.Record,System.String)">
            <summary>
            Returns a formatted string from record data using a specified format.
            </summary>
            <param name="record">Record object containing a template and data to be formatted</param>
            <param name="format">Format string to be used instead of field 0 of the Record</param>
            <returns>A formatted string containing the record data</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Record handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiformatrecord.asp">MsiFormatRecord</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.GetProductProperty(System.String)">
            <summary>
            Retrieves product properties (not session properties) from the product database.
            </summary>
            <returns>Value of the property, or an empty string if the property is not set.</returns>
            <remarks><p>
            Note this is not the correct method for getting ordinary session properties. For that,
            see the indexer on the Session class.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproductproperty.asp">MsiGetProductProperty</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.VerifyDiskSpace">
            <summary>
            Checks to see if sufficient disk space is present for the current installation.
            </summary>
            <returns>True if there is sufficient disk space; false otherwise.</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiverifydiskspace.asp">MsiVerifyDiskSpace</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.GetTotalCost">
            <summary>
            Gets the total disk space per drive required for the installation.
            </summary>
            <returns>A list of InstallCost structures, specifying the cost for each drive</returns>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msienumcomponentcosts.asp">MsiEnumComponentCosts</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.GetMode(Microsoft.Deployment.WindowsInstaller.InstallRunMode)">
            <summary>
            Gets the designated mode flag for the current install session.
            </summary>
            <param name="mode">The type of mode to be checked.</param>
            <returns>The value of the designated mode flag.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">an invalid mode flag was specified</exception>
            <remarks><p>
            Note that only the following run modes are available to read from
            a deferred custom action:<list type="bullet">
            <item><description><see cref="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Scheduled"/></description></item>
            <item><description><see cref="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Rollback"/></description></item>
            <item><description><see cref="F:Microsoft.Deployment.WindowsInstaller.InstallRunMode.Commit"/></description></item>
            </list>
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetmode.asp">MsiGetMode</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.SetMode(Microsoft.Deployment.WindowsInstaller.InstallRunMode,System.Boolean)">
            <summary>
            Sets the designated mode flag for the current install session.
            </summary>
            <param name="mode">The type of mode to be set.</param>
            <param name="value">The desired value of the mode.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">an invalid mode flag was specified</exception>
            <exception cref="T:System.InvalidOperationException">the mode cannot not be set</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetmode.asp">MsiSetMode</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.GetSourcePath(System.String)">
            <summary>
            Gets the full path to the designated folder on the source media or server image.
            </summary>
            <exception cref="T:System.ArgumentException">the folder was not found in the Directory table</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetsourcepath.asp">MsiGetSourcePath</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.GetTargetPath(System.String)">
            <summary>
            Gets the full path to the designated folder on the installation target drive.
            </summary>
            <exception cref="T:System.ArgumentException">the folder was not found in the Directory table</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigettargetpath.asp">MsiGetTargetPath</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.SetTargetPath(System.String,System.String)">
            <summary>
            Sets the full path to the designated folder on the installation target drive.
            </summary>
            <exception cref="T:System.ArgumentException">the folder was not found in the Directory table</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisettargetpath.asp">MsiSetTargetPath</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.SetInstallLevel(System.Int32)">
            <summary>
            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.
            </summary>
            <param name="installLevel">New install level</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <remarks><p>
            The SetInstallLevel method sets the following:<list type="bullet">
            <item><description>The installation level for the current installation to a specified value</description></item>
            <item><description>The Select and Installed states for all features in the Feature table</description></item>
            <item><description>The Action state of each component in the Component table, based on the new level</description></item>
            </list>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetinstalllevel.asp">MsiSetInstallLevel</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.DoAction(System.String)">
            <summary>
            Executes a built-in action, custom action, or user-interface wizard action.
            </summary>
            <param name="action">Name of the action to execute.  Case-sensitive.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            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".
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidoaction.asp">MsiDoAction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.DoAction(System.String,Microsoft.Deployment.WindowsInstaller.CustomActionData)">
            <summary>
            Executes a built-in action, custom action, or user-interface wizard action.
            </summary>
            <param name="action">Name of the action to execute.  Case-sensitive.</param>
            <param name="actionData">Optional data to be passed to a deferred custom action.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            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".
            </p><p>
            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.
            </p><p>
            If the called action is a deferred, rollback, or commit custom action, then the supplied
            <paramref name="actionData"/> will be available via the <see cref="P:Microsoft.Deployment.WindowsInstaller.Session.CustomActionData"/>
            property of that custom action's session.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msidoaction.asp">MsiDoAction</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.DoActionSequence(System.String)">
            <summary>
            Executes an action sequence described in the specified table.
            </summary>
            <param name="sequenceTable">Name of the table containing the action sequence.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallCanceledException">the user exited the installation</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisequence.asp">MsiSequence</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.System#IFormatProvider#GetFormat(System.Type)">
            <summary>
            Implements formatting for <see cref="T:Microsoft.Deployment.WindowsInstaller.Record"/> data.
            </summary>
            <param name="formatType">Type of format object to get.</param>
            <returns>The the current instance, if <paramref name="formatType"/> is the same type
            as the current instance; otherwise, null.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.Dispose(System.Boolean)">
            <summary>
            Closes the session handle.  Also closes the active database handle, if it is open.
            After closing a handle, further method calls may throw an <see cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException"/>.
            </summary>
            <param name="disposing">If true, the method has been called directly
            or indirectly by a user's code, so managed and unmanaged resources will
            be disposed. If false, only unmanaged resources will be disposed.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Session.ValidateSessionAccess">
            <summary>
            Throws an exception if the custom action is not able to access immedate session details.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.Database">
            <summary>
            Gets the Database for the install session.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the Database cannot be accessed</exception>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetactivedatabase.asp">MsiGetActiveDatabase</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.Language">
            <summary>
            Gets the numeric language ID used by the current install session.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetlanguage.asp">MsiGetLanguage</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.Item(System.String)">
            <summary>
            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.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the Session handle is invalid</exception>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetproperty.asp">MsiGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisetproperty.asp">MsiSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.Components">
            <summary>
            Gets an accessor for components in the current session.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.Features">
            <summary>
            Gets an accessor for features in the current session.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.CustomActionData">
            <summary>
            Gets custom action data for the session that was supplied by the caller.
            </summary>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Session.DoAction(System.String,Microsoft.Deployment.WindowsInstaller.CustomActionData)"/>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Session.NonImmediatePropertyNames">
            <summary>
            Gets the (short) list of properties that are available from non-immediate custom actions.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ShortcutTarget">
            <summary>
            Holds information about the target of a shortcut file.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.op_Equality(Microsoft.Deployment.WindowsInstaller.ShortcutTarget,Microsoft.Deployment.WindowsInstaller.ShortcutTarget)">
            <summary>
            Tests whether two shortcut targets have the same product code, feature, and/or component code.
            </summary>
            <param name="st1">The first shortcut target to compare.</param>
            <param name="st2">The second shortcut target to compare.</param>
            <returns>True if all parts of the targets are the same, else false.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.op_Inequality(Microsoft.Deployment.WindowsInstaller.ShortcutTarget,Microsoft.Deployment.WindowsInstaller.ShortcutTarget)">
            <summary>
            Tests whether two shortcut targets have the same product code, feature, and/or component code.
            </summary>
            <param name="st1">The first shortcut target to compare.</param>
            <param name="st2">The second shortcut target to compare.</param>
            <returns>True if any parts of the targets are different, else false.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.Equals(System.Object)">
            <summary>
            Tests whether two shortcut targets have the same product code, feature, and/or component code.
            </summary>
            <param name="obj">The shortcut target to compare to the current object.</param>
            <returns>True if <paramref name="obj"/> is a shortcut target and all parts of the targets are the same, else false.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.GetHashCode">
            <summary>
            Generates a hash code using all parts of the shortcut target.
            </summary>
            <returns>An integer suitable for hashing the shortcut target.</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.ProductCode">
            <summary>
            Gets the target product code of the shortcut, or null if not available.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.Feature">
            <summary>
            Gets the name of the target feature of the shortcut, or null if not available.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ShortcutTarget.ComponentCode">
            <summary>
            Gets the target component code of the shortcut, or null if not available.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.SourceList">
            <summary>
            A list of sources for an installed product or patch.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.Add(System.String)">
            <summary>
            Adds a network or URL source to the source list of the installed product.
            </summary>
            <param name="item">Path to the source to be added. This parameter is
            expected to contain only the path without the filename.</param>
            <remarks><p>
            If this method is called with a new source, the installer adds the source
            to the end of the source list. 
            </p><p>
            If this method is called with a source already existing in the source
            list, it has no effect.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistaddsource.asp">MsiSourceListAddSource</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistaddsourceex.asp">MsiSourceListAddSourceEx</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.SourceList.Insert(System.String,System.Int32)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.Insert(System.String,System.Int32)">
            <summary>
            Adds or reorders a network or URL source for the product or patch.
            </summary>
            <param name="item">Path to the source to be added. This parameter is
            expected to contain only the path without the filename.</param>
            <param name="index">Specifies the priority order in which the source
            will be inserted</param>
            <remarks><p>
            If this method is called with a new source and <paramref name="index"/>
            is set to 0, the installer adds the source to the end of the source list. 
            </p><p>
            If this method is called with a source already existing in the source
            list and <paramref name="index"/> is set to 0, the installer retains the
            source's existing index.
            </p><p>
            If the method is called with an existing source in the source list
            and <paramref name="index"/> 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.
            </p><p>
            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
            <paramref name="index"/>, 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.
            </p><p>
            If <paramref name="index"/> 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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistaddsourceex.asp">MsiSourceListAddSourceEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.Clear">
            <summary>
            Clears sources of all types: network, url, and media.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearall.asp">MsiSourceListClearAll</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.ClearNetworkSources">
            <summary>
            Removes all network sources from the list. URL sources are not affected.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearallex.asp">MsiSourceListClearAllEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.ClearUrlSources">
            <summary>
            Removes all URL sources from the list. Network sources are not affected.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearallex.asp">MsiSourceListClearAllEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.Contains(System.String)">
            <summary>
            Checks if the specified source exists in the list.
            </summary>
            <param name="item">case-insensitive source to look for</param>
            <returns>true if the source exists in the list, false otherwise</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.CopyTo(System.String[],System.Int32)">
            <summary>
            Copies the network and URL sources from this list into an array.
            </summary>
            <param name="array">destination array to be filed</param>
            <param name="arrayIndex">offset into the destination array where copying begins</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.Remove(System.String)">
            <summary>
            Removes a network or URL source.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearsource.asp">MsiSourceListClearSource</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.GetEnumerator">
            <summary>
            Enumerates the network and URL sources in the source list of the patch or product installation.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistenumsources.asp">MsiSourceListEnumSources</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceList.ForceResolution">
            <summary>
            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.
            </summary>
            <remarks><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistforceresolution.asp">MsiSourceListForceResolution</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistforceresolutionex.asp">MsiSourceListForceResolutionEx</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.MediaList">
            <summary>
            Gets the list of disks registered for the media source of
            the patch or product installation.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.Count">
            <summary>
            Gets the number of network and URL sources in the list.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.IsReadOnly">
            <summary>
            Gets a boolean value indicating whether the list is read-only.
            A SourceList is never read-only.
            </summary>
            <value>read-only status of the list</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.MediaPackagePath">
            <summary>
            Gets or sets the path relative to the root of the installation media.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.DiskPrompt">
            <summary>
            Gets or sets the prompt template that is used when prompting the user
            for installation media.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.LastUsedSource">
            <summary>
            Gets or sets the most recently used source location for the product.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.PackageName">
            <summary>
            Gets or sets the name of the Windows Installer package or patch package
            on the source.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.LastUsedType">
            <summary>
            Gets the type of the last-used source.
            </summary>
            <remarks><p>
            <ul>
            <li>&quot;n&quot; = network location</li>
            <li>&quot;u&quot; = URL location</li>
            <li>&quot;m&quot; = media location</li>
            <li>(empty string) = no last used source</li>
            </ul>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceList.Item(System.String)">
            <summary>
            Gets or sets source list information properties of a product or patch installation.
            </summary>
            <param name="property">The source list information property name.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">An unknown product, patch, or property was requested</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistgetinfo.asp">MsiSourceListGetInfo</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.SourceMediaList">
            <summary>
            A list of source media for an installed product or patch.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.Add(Microsoft.Deployment.WindowsInstaller.MediaDisk)">
            <summary>
            Adds or updates a disk of the media source for the product or patch.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistaddmediadisk.asp">MsiSourceListAddMediaDisk</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.Clear">
            <summary>
            Removes all source media from the list.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearallex.asp">MsiSourceListClearAllEx</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.Contains(System.Int32)">
            <summary>
            Checks if the specified media disk id exists in the list.
            </summary>
            <param name="diskId">disk id of the media to look for</param>
            <returns>true if the media exists in the list, false otherwise</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.CopyTo(Microsoft.Deployment.WindowsInstaller.MediaDisk[],System.Int32)">
            <summary>
            Copies the source media info from this list into an array.
            </summary>
            <param name="array">destination array to be filed</param>
            <param name="arrayIndex">offset into the destination array where copying begins</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.Remove(System.Int32)">
            <summary>
            Removes a specified disk from the set of registered disks.
            </summary>
            <param name="diskId">ID of the disk to remove</param>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistclearmediadisk.asp">MsiSourceListClearMediaDisk</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SourceMediaList.GetEnumerator">
            <summary>
            Enumerates the source media in the source list of the patch or product installation.
            </summary>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisourcelistenummediadisks.asp">MsiSourceListEnumMediaDisks</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceMediaList.Count">
            <summary>
            Gets the number of source media in the list.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SourceMediaList.IsReadOnly">
            <summary>
            Gets a boolean value indicating whether the list is read-only.
            A SourceMediaList is never read-only.
            </summary>
            <value>read-only status of the list</value>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.SummaryInfo">
            <summary>
            Provides access to summary information of a Windows Installer database.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SummaryInfo.#ctor(System.String,System.Boolean)">
            <summary>
            Gets a SummaryInfo object that can be used to examine, update, and add
            properties to the summary information stream of a package or transform.
            </summary>
            <param name="packagePath">Path to the package (database) or transform</param>
            <param name="enableWrite">True to reserve resources for writing summary information properties.</param>
            <exception cref="T:System.IO.FileNotFoundException">the package does not exist or could not be read</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the package is an invalid format</exception>
            <remarks><p>
            The SummaryInfo object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msigetsummaryinformation.asp">MsiGetSummaryInformation</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Persist">
            <summary>
            Formats and writes the previously stored properties into the standard summary information stream.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The stream cannot be successfully written.</exception>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfopersist.asp">MsiSummaryInfoPersist</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Title">
            <summary>Gets or sets the Title summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Subject">
            <summary>Gets or sets the Subject summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Author">
            <summary>Gets or sets the Author summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Keywords">
            <summary>Gets or sets the Keywords summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Comments">
            <summary>Gets or sets the Comments summary information property.</summary>
            <remarks><p>
            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:
            </p><p>
            "This installer database contains the logic and data required to install &lt;product name&gt;."
            </p><p>
            where &lt;product name&gt; is the name of the product being installed. In general the value for this summary
            property only changes in the product name, nothing else.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Template">
            <summary>Gets or sets the Template summary information property.</summary>
            <remarks><p>
            The Template summary information propery indicates the platform and language versions supported by the database.
            </p><p>
            The syntax of the Template Summary property information is:
            [platform property][,platform property][,...];[language id][,language id][,...]
            </p><p>
            For example, the following are all valid values for the Template Summary property:
            <list type="bullet">
            <item>Intel;1033</item>
            <item>Intel64;1033</item>
            <item>;1033</item>
            <item>;</item>
            <item>Intel ;1033,2046</item>
            <item>Intel64;1033,2046</item>
            <item>Intel;0</item>
            </list>
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            There are variations of this property depending on whether it is in a source installer database or a transform.
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            This summary property is REQUIRED.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.LastSavedBy">
            <summary>Gets or sets the LastSavedBy summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.RevisionNumber">
            <summary>Gets or sets the RevisionNumber summary information property.</summary>
            <remarks><p>
            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. 
            </p><p>
            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.
            </p><p>
            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.
            </p><p>
            Original-Product-Code Original-Product-Version ; New-Product Code New-Product-Version; Upgrade-Code
            </p><p>
            This summary property is REQUIRED.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.CreatingApp">
            <summary>Gets or sets the CreatingApp summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.LastPrintTime">
            <summary>Gets or sets the LastPrintTime summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.CreateTime">
            <summary>Gets or sets the CreateTime summary information property.</summary>
            <remarks><p>
            The CreateTime summary information property conveys when the installer database was created.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.LastSaveTime">
            <summary>Gets or sets the LastSaveTime summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.CodePage">
            <summary>Gets or sets the CodePage summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.PageCount">
            <summary>Gets or sets the PageCount summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            The PageCount summary information property is set to null in patch packages.
            </p><p>
            This summary property is REQUIRED.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.WordCount">
            <summary>Gets or sets the WordCount summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            This property is a bit field. New bits may be added in the future. At present the following bits are
            available:
            <list type="bullet">
            <item>Bit 0: 0 = long file names, 1 = short file names</item>
            <item>Bit 1: 0 = source is uncompressed, 1 = source is compressed</item>
            <item>Bit 2: 0 = source is original media, 1 = source is administrative installation</item>
            <item>[MSI 4.0] Bit 3: 0 = elevated privileges can be required to install, 1 = elevated privileges are not required to install</item>
            </list>
            </p><p>
            These are combined to give the WordCount summary information property one of the following values
            indicating a type of source file image:
            <list type="bullet">
            <item>0 - Original source using long file names. Matches tree in Directory table.</item>
            <item>1 - Original source using short file names. Matches tree in Directory table.</item>
            <item>2 - Compressed source files using long file names. Matches cabinets and files in the Media table.</item>
            <item>3 - Compressed source files using short file names. Matches cabinets and files in the Media table.</item>
            <item>4 - Administrative image using long file names. Matches tree in Directory table.</item>
            <item>5 - Administrative image using short file names. Matches tree in Directory table.</item>
            </list>
            </p><p>
            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
            <see cref="F:Microsoft.Deployment.WindowsInstaller.FileAttributes.Compressed"/> (value=16384) in the Attributes column of the File table
            for each file in the cabinet.
            </p><p>
            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.
            </p><p>
            This summary property is REQUIRED.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.CharacterCount">
            <summary>Gets or sets the CharacterCount summary information property.</summary>
            <remarks><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.SummaryInfo.Security">
            <summary>Gets or sets the Security summary information property.</summary>
            <remarks><p>
            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:
            <list type="bullet">
            <item>0 - no restriction</item>
            <item>2 - read only recommended</item>
            <item>4 - read only enforced</item>
            </list>
            </p><p>
            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.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TableCollection">
            <summary>
            Contains information about all the tables in a Windows Installer database.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.Add(Microsoft.Deployment.WindowsInstaller.TableInfo)">
            <summary>
            Adds a new table to the database.
            </summary>
            <param name="item">information about the table to be added</param>
            <exception cref="T:System.InvalidOperationException">a table with the same name already exists in the database</exception>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.Clear">
            <summary>
            Removes all tables (and all data) from the database.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.Contains(System.String)">
            <summary>
            Checks if the database contains a table with the given name.
            </summary>
            <param name="item">case-sensitive name of the table to search for</param>
            <returns>True if the table exists, false otherwise.</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.CopyTo(Microsoft.Deployment.WindowsInstaller.TableInfo[],System.Int32)">
            <summary>
            Copies the table information from this collection into an array.
            </summary>
            <param name="array">destination array to be filed</param>
            <param name="arrayIndex">offset into the destination array where copying begins</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.Remove(System.String)">
            <summary>
            Removes a table from the database.
            </summary>
            <param name="item">case-sensitive name of the table to be removed</param>
            <returns>true if the table was removed, false if the table did not exist</returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableCollection.GetEnumerator">
            <summary>
            Enumerates the tables in the database.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableCollection.Count">
            <summary>
            Gets the number of tables in the database.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableCollection.IsReadOnly">
            <summary>
            Gets a boolean value indicating whether the collection is read-only.
            A TableCollection is read-only when the database is read-only.
            </summary>
            <value>read-only status of the collection</value>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableCollection.Item(System.String)">
            <summary>
            Gets information about a given table.
            </summary>
            <param name="table">case-sensitive name of the table</param>
            <returns>information about the requested table, or null if the table does not exist in the database</returns>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.TableInfo">
            <summary>
            Defines a table in an installation database.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableInfo.#ctor(System.String,System.Collections.Generic.ICollection{Microsoft.Deployment.WindowsInstaller.ColumnInfo},System.Collections.Generic.IList{System.String})">
            <summary>
            Creates a table definition.
            </summary>
            <param name="name">Name of the table.</param>
            <param name="columns">Columns in the table.</param>
            <param name="primaryKeys">The primary keys of the table.</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.TableInfo.ToString">
            <summary>
            Gets a string representation of the table.
            </summary>
            <returns>The name of the table.</returns>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.Name">
            <summary>
            Gets the name of the table.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.Columns">
            <summary>
            Gets information about the columns in this table.
            </summary>
            <remarks><p>
            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.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.PrimaryKeys">
            <summary>
            Gets the names of the columns that are primary keys of the table.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.SqlCreateString">
            <summary>
            Gets an SQL CREATE string that can be used to create the table.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.SqlInsertString">
            <summary>
            Gets an SQL INSERT string that can be used insert a new record into the table.
            </summary>
            <remarks><p>
            The values are expressed as question-mark tokens, to be supplied by the record.
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.TableInfo.SqlSelectString">
            <summary>
            Gets an SQL SELECT string that can be used to select all columns of the table.
            </summary>
            <remarks><p>
            The columns are listed explicitly in the SELECT string, as opposed to using "SELECT *".
            </p></remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.ValidationErrorInfo">
            <summary>
            Contains specific information about an error encountered by the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Validate(Microsoft.Deployment.WindowsInstaller.Record)"/>,
            <see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateNew(Microsoft.Deployment.WindowsInstaller.Record)"/>, or <see cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateFields(Microsoft.Deployment.WindowsInstaller.Record)"/> methods of the
            <see cref="T:Microsoft.Deployment.WindowsInstaller.View"/> class.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ValidationErrorInfo.Error">
            <summary>
            Gets the type of validation error encountered.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.ValidationErrorInfo.Column">
            <summary>
            Gets the column containing the error, or null if the error applies to the whole row.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.View">
            <summary>
            A View represents a result set obtained when processing a query using the
            <see cref="M:Microsoft.Deployment.WindowsInstaller.Database.OpenView(System.String,System.Object[])"/> method of a
            <see cref="P:Microsoft.Deployment.WindowsInstaller.View.Database"/>. Before any data can be transferred,
            the query must be executed using the <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Execute(Microsoft.Deployment.WindowsInstaller.Record)"/> method, passing to
            it all replaceable parameters designated within the SQL query string.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Execute(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            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.
            </summary>
            <param name="executeParams">Optional Record that supplies the parameters. This
            Record contains values to replace the parameter tokens in the SQL query.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Execute">
            <summary>
            Executes a SQL View query.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View could not be executed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Fetch">
            <summary>
            Fetches the next sequential record from the view, or null if there are no more records.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View is not in an active state</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            The Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Updates a fetched Record.
            </summary>
            <param name="mode">specifies the modify mode</param>
            <param name="record">the Record to modify</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the modification failed,
            or a validation was requested and the data did not pass</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            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.
            </p><p>
            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 <see cref="M:Microsoft.Deployment.WindowsInstaller.Record.SetStream(System.Int32,System.String)"/>. This ensures that each database has
            its own copy of the binary data.
            </p><p>
            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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Refresh(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Insert(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Update(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Assign(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Replace(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Delete(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.InsertTemporary(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Seek(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Merge(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.Validate(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateNew(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateFields(Microsoft.Deployment.WindowsInstaller.Record)"/>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.View.ValidateDelete(Microsoft.Deployment.WindowsInstaller.Record)"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Refresh(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Refreshes the data in a Record.
            </summary>
            <param name="record">the Record to be refreshed</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the refresh failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            The Record must have been obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>. Fails with
            a deleted Record. Works only with read-write Records.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Insert(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Inserts a Record into the view.
            </summary>
            <param name="record">the Record to be inserted</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the insertion failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Fails if a row with the same primary keys exists. Fails with a read-only database.
            This method cannot be used with a View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Update(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Updates the View with new data from the Record.
            </summary>
            <param name="record">the new data</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the update failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Only non-primary keys can be updated. The Record must have been obtained by calling
            <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>. Fails with a deleted Record. Works only with read-write Records.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Assign(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Updates or inserts a Record into the View.
            </summary>
            <param name="record">the Record to be assigned</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the assignment failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Replace(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Updates or deletes and inserts a Record into the View.
            </summary>
            <param name="record">the Record to be replaced</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the replacement failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            The Record must have been obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>. 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.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Delete(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Deletes a Record from the View.
            </summary>
            <param name="record">the Record to be deleted</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the deletion failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            The Record must have been obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>. Fails if the row has been
            deleted. Works only with read-write records. This method cannot be used with a View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.InsertTemporary(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Inserts a Record into the View.  The inserted data is not persistent.
            </summary>
            <param name="record">the Record to be inserted</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the insertion failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Seek(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Refreshes the information in the supplied record without changing the position
            in the result set and without affecting subsequent fetch operations.
            </summary>
            <param name="record">the Record to be filled with the result of the seek</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the seek failed</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Merge(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Inserts or validates a record.
            </summary>
            <param name="record">the Record to be merged</param>
            <returns>true if the record was inserted or validated, false if there is an existing
            record with the same primary keys that is not identical</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the merge failed (for a reason other than invalid data)</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Works only with read-write records. This method cannot be used with a
            View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.Validate(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Validates a record, returning information about any errors.
            </summary>
            <param name="record">the Record to be validated</param>
            <returns>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</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the validation failed (for a reason other than invalid data)</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            The Record must have been obtained by calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>.
            Works with read-write and read-only records. This method cannot be used
            with a View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewgeterror.asp">MsiViewGetError</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.ValidateNew(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Validates a new record, returning information about any errors.
            </summary>
            <param name="record">the Record to be validated</param>
            <returns>null if the record was validated; if there is an existing
            record with the same primary keys then error information is returned</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the validation failed (for a reason other than invalid data)</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Checks for duplicate keys. The Record must have been obtained by
            calling <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Fetch"/>. Works with read-write and read-only records.
            This method cannot be used with a View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewgeterror.asp">MsiViewGetError</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.ValidateFields(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Validates fields of a fetched or new record, returning information about any errors.
            Can validate one or more fields of an incomplete record.
            </summary>
            <param name="record">the Record to be validated</param>
            <returns>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</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the validation failed (for a reason other than invalid data)</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Works with read-write and read-only records. This method cannot be used with
            a View containing joins.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewgeterror.asp">MsiViewGetError</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.ValidateDelete(Microsoft.Deployment.WindowsInstaller.Record)">
            <summary>
            Validates a record that will be deleted later, returning information about any errors.
            </summary>
            <param name="record">the Record to be validated</param>
            <returns>null if the record is safe to delete; if another row refers to
            the primary keys of this row then error information is returned</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the validation failed (for a reason other than invalid data)</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            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.
            </p><p>
            See <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Modify(Microsoft.Deployment.WindowsInstaller.ViewModifyMode,Microsoft.Deployment.WindowsInstaller.Record)"/> for more remarks.
            </p><p>
            Win32 MSI APIs:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a>,
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewgeterror.asp">MsiViewGetError</a>
            </p></remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.View.GetEnumerator">
            <summary>
            Enumerates over the Records retrieved by the View.
            </summary>
            <returns>An enumerator of Record objects.</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">The View was not <see cref="M:Microsoft.Deployment.WindowsInstaller.View.Execute(Microsoft.Deployment.WindowsInstaller.Record)"/>d before attempting the enumeration.</exception>
            <remarks><p>
            Each Record object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>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.
            </p><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a>
            </p></remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.View.Database">
            <summary>
            Gets the Database on which this View was opened.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.View.QueryString">
            <summary>
            Gets the SQL query string used to open this View.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.View.Tables">
            <summary>
            Gets the set of tables that were included in the SQL query for this View.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.View.Columns">
            <summary>
            Gets the set of columns that were included in the query for this View,
            or null if this view is not a SELECT query.
            </summary>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the View is not in an active state</exception>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InvalidHandleException">the View handle is invalid</exception>
            <remarks><p>
            Win32 MSI API:
            <a href="http://msdn.microsoft.com/library/en-us/msi/setup/msiviewgetcolumninfo.asp">MsiViewGetColumnInfo</a>
            </p></remarks>
        </member>
        <member name="T:Microsoft.Tools.WindowsInstallerXml.WixDistribution">
            <summary>
            Distribution specific strings.
            </summary>
        </member>
        <member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.NewsUrl">
            <summary>
            News URL for the distribution.
            </summary>
        </member>
        <member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.ShortProduct">
            <summary>
            Short product name for the distribution.
            </summary>
        </member>
        <member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.SupportUrl">
            <summary>
            Support URL for the distribution.
            </summary>
        </member>
        <member name="F:Microsoft.Tools.WindowsInstallerXml.WixDistribution.TelemetryUrlFormat">
            <summary>
            Telemetry URL format for the distribution.
            </summary>
        </member>
    </members>
</doc>
