<?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.#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)">
            <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="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>
            </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>
            </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/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.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="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.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="installContext"/> is set to the machine context only,
            <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="installContext"/> 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>
            To change the disk prompt only, get the existing volume label from the
            registry and provide it in this call along with the new disk prompt.
            Passing a null or empty string for <paramref name="volumeLabel"/>
            registers an empty string as the volume label.
            <p>To change the volume label only, get the existing disk prompt
            that is registered and provide it when calling SourceListAddMediaDisk
            along with the new volume label. Passing null or an empty string
            registers an empty string as the disk prompt.</p>
            </p><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>
    </members>
</doc>
