#$K+MsiConfigurationManager Object
	Msi Objects	Database Tables
The MsiConfigurationManager object provides the MsiEngine access to configuraiondata. The Configuration Manager performs the follows tasks:
 
1. Manages product information and databases.
2. Manages registry backward compatibility.
3. Manages shared components and their clients.
4. Provides a facility for locating a file that supports a particular component.
5. Manages volumes.

Properties
Services

Methods
RunScript

RegisterRollbackScript
UnregisterRollbackScript
RollbackScripts

RegisterProduct
RegisterUser
UnregisterProduct

RegisterComponent
UnregisterComponent

RegisterFolder
IsFolderRemovable
UnregisterFolder

DoInstall

LockServer
UnlockServer
InstallFinalize
SetLastUsedSource

#$+KServices Property
	MsiConfigurationManager Object	Msi Objects	Database Tables
The MsiServices object used by the Configuration Manager. Read-only.
Syntax
object.Services
object
Required. The MsiConfigurationManager object.
#$+KThis method is undocumented.
#$+KRunScript Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Runs an installation script.
Syntax
object.RunScript(scriptFile, userToken, message)
object
Required. The MsiConfigurationManager object.
scriptfile
Required. The full path (string) to an installation script file.
userToken
Required. Handle to the user to impersonate while executing the script. Pass 0 for no user impersonation.
message
Required. Any object supporting the MsiMessage interface. Installation progress will be reported via this object.
Remarks
Scriptfile format
#$+KInstallFinalize Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Rolls back the system to the given date, or purges the system of backup files created before the given date. See  MsiExecute.RollbackFinalize_RollbackFinalize for more info.Also removes in-progress information for the install if the install was successful or if the install was rolled back.
Syntax
object.InstallFinalize(state, rollback, userToken, message)
object
Required. The MsiConfigurationManager object.
state
Required. The return status of the last executed action. This value is used to determine whether to roll back the system or to purge backup files. This value is an enumeration iesEnum, as described in the DoAction method.  
rollback
Required. True to rollback the install if state indicates failure or cancellation.
userToken
Required. Handle to the user to impersonate while rolling back. Pass 0 for no user impersonation.
message
Required. Any object supporting the MsiMessage interface. Rollback progress will be reported via this object.
#$+KLockServer Method
	MsiConfigurationManager Object	Msi Objects	Database Tables

Syntax
object.LockServer()
object
Required. The MsiConfigurationManager object.
#$+KUnlockServer Method
	MsiConfigurationManager Object	Msi Objects	Database Tables

Syntax
object.UnlockServer()
object
Required. The MsiConfigurationManager object.
#$+KSetLastUsedSource Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Sets the last used source for a product, optionally adding it to the product's source list.
Syntax
object.SetLastUsedSource(strProductCode, strSource, fAddToList)
object
Required. The MsiConfigurationManager object.
strProductCode
Required. The product code for the product whose source is being updated.
strPath
Required. The source to be added, in the form of a path (e.g. D:\X\Y, \\foo\bar\x\y) (string)
fAddToList
Required. If true then the source is added to the list if it's not already there. (see Remarks for restrictions)
Remarks
SetLastUsedSource only adds new sources if the following criteria are met:
1) The user is either an Admin or has the EnableBrowse policy value set to 1
2) The source is of a type allowed by the SearchOrder policy

#$+KRegisterRollbackScript Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers a rollback script with the configuration manager. The date and  time of the registration is saved along with the script file path.
Syntax
object.RegisterRollbackScript(scriptFile)
object
Required. The MsiConfigurationManager object.
scriptfile
Required. The full path (string) to a rollback script file.
Remarks
Registration of a scriptfile that is already registered will overwrite the old registration.
#$+KUnregisterRollbackScript Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Unregisters a rollback script with the configuration manager.
Syntax
object.UnregisterRollbackScript(scriptFile)
object
Required. The MsiConfigurationManager object.
scriptfile
Required. The full path (string) to a rollback script file.
Remarks
Unregistration of a scriptfile that is not already registered will cause no action to be taken.
#$+KRollbackScripts Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Returns an collection of strings that each contain the date that the rollback script was generated and the name of the rollback script. The collection isrestricted to the set of scripts that meet the specifed date restriction.
Syntax
object.RollbackScripts(date, after)
object
Required. The MsiConfigurationManager object.
date
Required. The date that, along with after, specifies which rollback scripts should be in the collection.
after
Required. If after is true then the collection will contain all rollback  scripts registered on or after date. If after is false then the collection will contain all rollback scripts registered on or before date.
Remarks
The strings in the collection are of the following form:
	MsiDate#scriptfilePath, e.g. "3043#C:\windows\aim\rb5365.scr"
#$+KRegisterProduct Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers a product with the Configuration Manager. This supplements the product information that was advertised.
Syntax
object.RegisterProduct(productInfo)
object
Required. The MsiConfigurationManager object.
productInfo
Required. A record containing the product information. See the Remarks section for the record's details.
Remarks
The record returned contains the following fields:
	Field Number          Field Contents
	icmrpfProductKey         - product code
	icmrpfDisplayName        - ProductName property
	icmrpfVersionString      - ProductVersion property
	icmrpfVersionMajorString - From ProductVersion property
	icmrpfVersionMinorString - From ProductVersion property
	icmrpfHelpLink           - From SupportURL property
	icmrpfHelpTelephone      - From SupportPhone property
	icmrpfInstallLocation    - TBD -- Currently TARGETDIR property
	icmrpfInstallSource      - TBD -- Currently SOURCEDIR property
	icmrpfInstallDate        - String form of install date
	icmrpfPublisher          - Manufacturer property
	icmrpfLocalPackage       - cached database location
	icmrpfURLInfoAbout       - SupportURL property
	icmrpfURLUpdateInfo      - TBD
	icmrpfUninstallString    - TBD
	icmrpfModifyString       - msiexec /c ProductCode /qf
	icmrpfUninstallPath      - msiexec /t ProductCode /qb

#$+KRegisterUser Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers user information for a registered product. This is separate from RegisterProduct to allow the collection of user information to be deferred until first-run, if desired.
Syntax
object.RegisterUser(productKey, userInfo)
object
Required. The MsiConfigurationManager object.
productKey
Required. The productKey for the product with which the user info is to be associated
userInfo
Required. A record containing the user information. See the Remarks section for the record's details.
Remarks
The record returned contains the following fields:
	Field Number      Field Contents
	icmrufOwner      -  User name from UI or registry
	icmrufCompany    -  Organization name from UI or registry
	icmrufProductId  -  Generated PID, 23 characters including 3 dashes

#$+KRegisterComponent Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers an component. 
Syntax
object.RegisterComponent(componentCode, keyPath, supersededComponents)
object
Required. The MsiConfigurationManager object.
componentCode
Required. The GUID that represents the component.
keyPath
The path to the key file, registry key, or folder for this component.
supersededComponents
Optional. An MsiRecord containing the componentIds of components that are superseded by this component.
#$+KUnregisterComponent Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Unregisters a component.
Syntax
object.UnregisterComponent(productKey, componentCode)
object
Required. The MsiConfigurationManager object.
componentCode
Required. The GUID that represents the component.
#$K+MsiComponentManager Object
	Msi Objects	Database Tables
 The Component Manager performs the follows tasks:
 
1. Supports run-time run-time installation and uninstallation of components
2. Allows an application's components to be dynamically located at run-time, based on currently available components.
#$+KRegisterFolder Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers a folder with the Configuration Manager.
Syntax
object.RegisterFolder(path, fExplicitCreation)
object
Required. The MsiConfigurationManager object.
path
Required. A path object pointing to the folder to be registered.
component
Required. A bool indicating whether the component was explicitly created.
Remarks

#$+KIsFolderRemovable Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Registers a folder with the Configuration Manager.
Syntax
object.IsFolderRemovable(path, fExplicit)
object
Required. The MsiConfigurationManager object.
path
Required. A path object pointing to the folder to be registered.
amComponent
Required. Required. A bool indicating whether the component was explicitly created.
Remarks

#$+KUnregisterFolder Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Unregisters a folder with the Configuration Manager. Nothing is done if the folder wasn't registered.
Syntax
object.UnregisterFolder(path)
object
Required. The MsiConfigurationManager object.
path
Required. A path object pointing to the folder to be unregistered.
Remarks

#$+KUnregisterProduct Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Unregisters a product with the Configuration Manager. Removes all references to the product from the Configuration Database, but only if no client products remain. Returns a boolean indicating whether any additional clients remain.
Syntax
object.UnregisterProduct(productKey, parentKey)
object
Required. The MsiConfigurationManager object.
productKey
Required. The product key identifying the product to be unregistered.
parentKey
Optional. Only if a nested install: the product key of parent product.
Remarks
A non-nested install is considered as having the user as a client, such that when a parent product installs it again as a child, it will be held by two clients, and not released until both the parent and the standalone (via Add/Remove or API) goes away.
#$+KDoInstall Method
	MsiConfigurationManager Object	Msi Objects	Database Tables
Runs an install.
Syntax
object.DoInstall()
object
Required. The MsiConfigurationManager object.
product
Required. Product code or path to database .
action
Optional. The action to run
object
Optional. Property=Value string.
object
Required. Message object for UI callback.
Remarks