Copyright: Microsoft Installer Version 0.20.3311


Msispy User Interface
  Msispy: A Tool to Display Component-Level View of System

Msispy provides a component level view of the products and features installed on a system, using either an MSI Package, or the registry information. Msispy also displays the status of each, and allows you to partially or completely re-install missing or damaged items. You  can also re-configure any product or feature, selecting the install level, and specifying whether to install it locally or run it from a network server.

Please select a topic you would like more information on:

Menu Options

Context Menus

Command Line Options

Setting Preferences

Msispy Automation Interface


Msispy_MenuOptions
Menu Options

The File Menu

Open MSI Package allows you to open an MSI package.

Open Local Database uses the registry information to display information about all the products installed on the computer.

Load Saved State allows you to load a profile of the system previously saved by Msispy.

Save Current State allows you to save a complete profile of the system onto a file. The information is stored in an easy to read text format. This information should not be modified directly.

Restore Saved State (enabled only when a saved state is loaded) attempts to restore the system to the configuration in the saved state. If more components have been added since the profile was saved, they are left untouched. If some products or components have been damaged since the profile was saved, Msispy attempts to restore them by attempting to re-install them from the original source. If the source is not available, you are given the option to abort, retry or ignore.

Check Differences (enabled only when a saved state is loaded) checks the differences between the configuration in the saved state and the current system configuration. These differences are written to a log file in a tab-separated table in simple text format.

The View Menu

Refresh refreshes the display by getting the displayed information again and redrawing it.

Prefences allows you to change the Msispy mode and language. For more information, refer to Setting Preferences.

The Help Menu

Overview brings up the Msispy help file

About brings up the product information box, with information about the registered user and the version and product ID of the installed copy of Msispy.

Context Menus
Command Line Options


Msispy ContextMenus
Context Menus

When a product, feature or component is selected, clicking on the right mouse-button brings up the  context menus that allow you to perform operations on the selected item.

Properties

All context menus have a Properties option, that brings up a property sheet containing information about the selected item. In addition to the General tab that contains the information, the property sheets also contain a File List tab, that contains information about all the files needed by the selected item. The list of files contains information about the file including the component that uses it, the file name and size when it was installed, the location of the file. In this tab, the Verify Files button allows you to check the current status of the files. This button brings up a window with the current file information, including current size, creation, last access and modification dates. If the file is not found, or if the file size is different, the file is marked broken with an icon to the its left.

Important: If a saved state is in use, the verify files brings up information about the files when the state was saved, not the current file information.

Additional context-menu choices cary depending on the item selected:

Components

The menu comprises:

Re-install Component (enabled only if the component is broken), which allows you to re-install the component from it's original install source.

Installed Products (and their Features)

The menu comprises:

Re-install, which allows you to use one of the available re-install modes, including options to re-install just the damaged or missing files. Other options allow you to force all the files to be re-installed, the registry entries to be verified, and so on.

Configure, which allows you to install the feature on your local machine, or run it from a remote source. Some features may have components that need to be installed on the local machine. Attempting to install such features to run from a remote location will lead to a mix of some components being on the local system and the rest at the remote location.

Un-install, which allows you to un-install the product or feature. If a feature with sub-features is un-installed, all of its sub-features will be un-installed as well. If the last installed feature in a product is un-installed, the entire product will be un-installed.

Other Products (and their Features)

If an MSI package for a product not installed on the local system  is in use, the context menu has the following options:

Install Product, which will install the product on the local system using the default options.

Advertise Product, which will advertise the product on to the local system. This will set all the registry entries needed for the product, but will not actually install any files on the local system. The files will be transferred in when the component they belong to is used.

Products in Saved States (and their Features)

If a saved state is loaded, the menu always comprises:

Restore Saved State, which has the same functionality as Restore Saved State described under  Menu Options.

Menu Options
Command Line Options


Msispy_CommandLine
Msispy Command Line Options

msispy [filename|/options filename(s)]

/d<srcprof.msp> <destfile.log>

Saves the differences between the current system configuration and the profile <srcprof.msp> into <destfile.log> in a tab-separated table form.

/s<destprof.msp>

Saves the current system configuration to the profile <destprof.msp>

/r<srcprof.msp>

Restores the current system to the configuration in the profile <srcprof.msp>

<srcprof.msp>

Launches GUI version and loads the profile <srcprof.msp>

without any command-line option

Launches GUI version

Menu Options
Context Menus


Msispy Preferences
Setting Preferences

Msispy can be used in different modes, and in different languages. You can set your preferences by selecting "Preferences" under the View Menu.

Modes

Msispy can be used in the following modes:
Normal: This is the default Msispy mode. In this mode, Msispy determines the status of a component solely on the basis of the component key-file. This makes Msispy much faster, and in most cases will present an accurate picture of the component status. All the features of Msispy are available in this mode.
Diagnostic: In this mode, Msispy will perform a complete check of all files to determine component status, instead of relying on component key files. This mode will give a more accurate picture of the component status, but will make the program significantly slower. Msispy should not normally be used in this mode, especially if it is being used on a slow machine.
Restricted: In this mode, the functionality of Msispy is limited to the Local Database only. You will not be able to access MSI Packages or Msispy Saved States. Leads to a slight performance gain. This mode is recommended if you are on slow machines and do not wish to take advantage of all the Msispy features.

If Msispy is unable to load the system interface DLL (default name msispyu.dll), it will start up in the restricted mode. You will not be able to switch to any other mode, since the other modes need the system interface DLL to function. To restore Msispy to it's full functionality, you may need to perform a re-install from the original install source.

Languages

Msispy can be used in many languages if the Msispy language support components are installed. A list of all supported languages appears in the "Language" tab of the preferences property sheet. To select a different language, click on the new language, and select OK. Msispy will switch to the new language automatically, if the language resources for the new language can be loaded. If the new language cannot be loaded, Msispy will load the closest match if available. If there is no similar language available, default language will be loaded.


Msispy Automation Overview
Msispy Automation Interface

Access to C++ Libraries

An Msispy object must be initially created in order to load  the automation support that is required in order to access the Msispy objects through OLE automation. This object provides wrappers to create the top level objects and access their methods. These wrapper simply provide argument translations to expose the Msispy functions in a manner consistent with BASIC without changing the behavior of the methods. When possible, a pair of Get and Set C++ methods will be exposed to BASIC as a single property. Where appropriate, C++ methods taking an index argument will be exposed as an indexed property. Many C++ methods return the result through an argument, as the return value is used for the error return; however in BASIC errors are handled by a separate mechanism, and the result is always passed in the return value.

Creating the Msispy object

In order for OLE to access the automation, the DLL must be registered. This can be done in one of two ways- (a) by installing Msispy on your system using MSI, or (b) self-registering the DLL. The OLE ProgId used to create the Msispy object is Msispy.Automation.


Msispy Objects
Msispy Automation Objects

Msispy object
MsispyDatabase object
MsispyProfile object
MsispyRegistry object


Msispy Object

An Msispy object must be initially created in order to load the automation support that is required in order to access the Msispy automation functionsthrough OLE automation. This object provides wrappers to create the top level objects and access their methods.

Methods

CreateDatabase
CreateProfile
CreateRegistry


Msispy.CreateDatabase
CreateDatabase Method
Msispy Object	Msispy Objects

Returns a new MsispyDatabase object.

Syntax

object.CreateDatabase()

object
Required. The Msispy object.


Msispy.CreateProfile
CreateProfile Method
Msispy Object	Msispy Objects

Returns a new MsispyProfile object.

Syntax

object.CreateProfile()

object
Required. The Msispy object.


Msispy.CreateDatabase
CreateRegistry Method
Msispy Object	Msispy Objects

Returns a new MsispyRegistry object.

Syntax

object.CreateRegistry()

object
Required. The Msispy object.


MsispyDatabase Object
Msispy Objects

The database object accesses a Microsoft Installer database.

Before the MsispyDatabase object is released (by going out of scope or by setting the object variable to Nothing), the Close method must be called to release all handles.

Properties

GetProduct
GetFeatureFromProduct
GetProduct
GetFeatureFromProduct
GetComponent
GetComponentFromProduct
GetComponentFromFeature
GetComponentName
GetProductInfo
GetFeatureInfo
QueryProductState
QueryFeatureState
QueryComponentState
GetFeatureUsage
GetClientFromComponent
GetFileFromComponent
GetFileInfo
GetComponentLocation

Methods

Open
Close


MsispyDatabase.Open
Open Method
MsispyDatabase Object	Msispy Objects

Opens a database at the location specified.

Syntax

object.Open(databasePath)

object
Required. The MsispyDatabase object.

databasePath
Required. The location of the database.


MsispyDatabase.Close
Close Method
MsispyDatabase Object	Msispy Objects

Closes a database, releasing the database handles.

Syntax

object.Close()

object
Required. The MsispyDatabase object.


MsispyDatabase.GetProduct
GetProduct Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the product-code of a product in the database, or a blank string if all the products in the database have been enumerated. A 0-based index is used to enumerate the products one at a time.

Syntax

object.GetProduct(productIndex)

object
Required. The MsispyDatabase object.

productIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetFeatureFromProduct
GetFeatureFromProduct Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the name of a feature of the product, or a blank string  if all the features of the product have been enumerated. A 0-based index is used to enumerate the features one at a time. The product being used must be in the database, otherwise no features are enumerated.

Syntax

object.GetFeatureFromProduct(productCode, featureIndex)

object
Required. The MsispyDatabase object.

productCode
Required. The product whose features are to be enumerated, must be in the database.

featureIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetComponent
GetComponent Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the GUID of a component in the database, or a blank string if all the components in the database have been enumerated. A 0-based index is used to enumerate the components one at a time.

Syntax

object.GetComponent(componentIndex)

object
Required. The MsispyDatabase object.

componentIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetComponentFromProduct
GetComponentFromProduct Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the GUID of a component of the product, or a blank string  if all the components of the product have been enumerated. A 0-based index is used to enumerate the components one at a time. The product being used must be in the database, otherwise no components are enumerated.

Syntax

object.GetComponentFromProduct(productCode, componentIndex)

object
Required. The MsispyDatabase object.

productCode
Required. The product whose components are to be enumerated, must be in the database.

componentIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetComponentFromFeature
GetComponentFromFeature Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the GUID of a component of the feature, or a blank string  if all the components of the feature have been enumerated. A 0-based index is used to enumerate the components one at a time. The product in use must be in the database, otherwise no components are enumerated.

Syntax

object.GetComponentFromFeature(productCode, featureName, componentIndex)

object
Required. The MsispyDatabase object.

productCode
Required. The product in use, must be in the database.

featureName
Required. The feature whose components are to be enumerated.

componentIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetComponentName
GetComponentName Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the name of a component whose GUID is passed in, or a blank string if the required information could not be found.

Syntax

object.GetComponentName(componentGuid)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component whose name will be returned.


MsispyDatabase.GetProductInfo
GetProductInfo Property
MsispyDatabase Object	Msispy Objects

Returns a string containing a specific property of a product, or a blank string if the required information could not be found.

Syntax

object.GetProductInfo(productCode, productAttribute)

object
Required. The MsispyDatabase object.

productCode
Required. The product about which information will be returned.

productAttribute
Required. The required property of the product (case-sensitive). Valid attributes are:
ProductName
ProductVersion
ProductCode
Manufacturer
SupportURL
SupportPhone
UserName
UserOrgName
ProductId


MsispyDatabase.GetFeatureInfo
GetFeatureInfo Property
MsispyDatabase Object	Msispy Objects

Returns a string containing a specific property of a feature, or a blank string if the required information could not be found.

Syntax

object.GetFeatureInfo(productCode, featureName, featureAttribute)

object
Required. The MsispyDatabase object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.

featureAttribute
Required. The required property of the feature (case-sensitive). Valid attributes are:
Feature
Feature_Parent
Title
Description
Display
Level
Directory_Configurable
RunFromSource


MsispyDatabase.QueryProductState
QueryProductState Property
MsispyDatabase Object	Msispy Objects

Returns a numeric value that represents the install-state of a product on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryProductState(productCode)

object
Required. The MsispyDatabase object.

productCode
Required. The product about which information will be returned.


MsispyDatabase.QueryFeatureState
QueryFeatureState Property
MsispyDatabase Object	Msispy Objects

Returns a numeric value that represents the install-state of a feature on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryFeatureState(productCode, featureName)

object
Required. The MsispyDatabase object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyDatabase.QueryComponentState
QueryComponentState Property
MsispyDatabase Object	Msispy Objects

Returns a numeric value that represents the install-state of a component on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryComponentState(componentGuid)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component about which information will be returned.


MsispyDatabase.GetFeatureUsage
GetFeatureUsage Property
MsispyDatabase Object	Msispy Objects

Returns the usage-count of a feature on the local system. Returns 0 if the information could not be obtained.

Syntax

object.GetFeatureUsage(productCode, featureName)

object
Required. The MsispyDatabase object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyDatabase.GetClientFromComponent
GetClientFromComponent Property
MsispyDatabase Object	Msispy Objects

Returns a string containing product-code of a client-product of the component, or a blank  string if all the clients of the component have been enumerated. A 0-based index is used to enumerate the clients one at a time. The component being used must be in the database, otherwise no clients are enumerated.

Syntax

object.GetClientFromComponent(componentGuid, clientIndex)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component whose clients are to be enumerated, must be in the database.

clientIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetFileFromComponent
GetFileFromComponent Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the name of a file used by the component, or a blank  string if all the files of the component have been enumerated. A 0-based index is used to enumerate the files one at a time. The component being used must be in the database, otherwise no files are enumerated.

Syntax

object.GetFileFromComponent(componentGuid, fileIndex)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component whose files are to be enumerated, must be in the database.

fileIndex
Required. The 0-based index used for enumeration.


MsispyDatabase.GetFileInfo
GetFileInfo Property
MsispyDatabase Object	Msispy Objects

Returns a string containing a specific property of a file, or a blank string if the required information could not be found.

Syntax

object.GetFileInfo(componentGuid, fileName, fileAttribute)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component to which the file belongs.

fileName
Required. The file about which information will be returned.

fileAttribute
Required. The required property of the file (case-sensitive). Valid attributes are:
FileTitle
FileSize
Version
Language
Attributes
Sequence
FileActualSize
FileCreated
FileModified
FileAccessed
FileStatus


MsispyDatabase.GetComponentLocation
GetComponentLocation Property
MsispyDatabase Object	Msispy Objects

Returns a string containing the full path to the keyfile of a component.

Syntax

object.GetComponentLocation(componentGuid)

object
Required. The MsispyDatabase object.

componentGuid
Required. The component about which information will be returned.


MsispyProfile Object
Msispy Objects

The profile object accesses a Msispy profile.

Before the MsispyProfile object is released (by going out of scope or by setting the object variable to Nothing), the Close method must be called to release all handles.

Properties

GetProduct
GetFeatureFromProduct
GetProduct
GetFeatureFromProduct
GetComponent
GetComponentFromProduct
GetComponentFromFeature
GetComponentName
GetProductInfo
GetFeatureInfo
QueryProductState
QueryFeatureState
QueryComponentState
GetFeatureUsage
GetClientFromComponent
GetFileFromComponent
GetFileInfo
GetComponentLocation

Methods

Open
Close


MsispyProfile.Open
Open Method
MsispyProfile Object	Msispy Objects

Opens a profile at the given location.

Syntax

object.Open(profilePath)

object
Required. The MsispyProfile object.

profilePath
Required. The location of the profile.


MsispyProfile.Close
Close Method
MsispyProfile Object	Msispy Objects

Closes an open profile.

Syntax

object.Close()

object
Required. The MsispyProfile object.


MsispyProfile.GetProduct
GetProduct Property
MsispyProfile Object	Msispy Objects

Returns a string containing the product-code of a product in the profile, or a blank string if all the products in the profile have been enumerated. A 0-based index is used to enumerate the products one at a time.

Syntax

object.GetProduct(productIndex)

object
Required. The MsispyProfile object.

productIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetFeatureFromProduct
GetFeatureFromProduct Property
MsispyProfile Object	Msispy Objects

Returns a string containing the name of a feature of the product, or a blank string  if all the features of the product have been enumerated. A 0-based index is used to enumerate the features one at a time. The product being used must be in the profile, otherwise no features are enumerated.

Syntax

object.GetFeatureFromProduct(productCode, featureIndex)

object
Required. The MsispyProfile object.

productCode
Required. The product whose features are to be enumerated, must be in the profile.

featureIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetComponent
GetComponent Property
MsispyProfile Object	Msispy Objects

Returns a string containing the GUID of a component in the profile, or a blank string if all the components in the profile have been enumerated. A 0-based index is used to enumerate the components one at a time.

Syntax

object.GetComponent(componentIndex)

object
Required. The MsispyProfile object.

componentIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetComponentFromProduct
GetComponentFromProduct Property
MsispyProfile Object	Msispy Objects

Returns a string containing the GUID of a component of the product, or a blank string  if all the components of the product have been enumerated. A 0-based index is used to enumerate the components one at a time. The product being used must be in the profile, otherwise no components are enumerated.

Syntax

object.GetComponentFromProduct(productCode, componentIndex)

object
Required. The MsispyProfile object.

productCode
Required. The product whose components are to be enumerated, must be in the profile.

componentIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetComponentFromFeature
GetComponentFromFeature Property
MsispyProfile Object	Msispy Objects

Returns a string containing the GUID of a component of the feature, or a blank string  if all the components of the feature have been enumerated. A 0-based index is used to enumerate the components one at a time. The product in use must be in the profile, otherwise no components are enumerated.

Syntax

object.GetComponentFromFeature(productCode, featureName, componentIndex)

object
Required. The MsispyProfile object.

productCode
Required. The product in use, must be in the profile.

featureName
Required. The feature whose components are to be enumerated.

componentIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetComponentName
GetComponentName Property
MsispyProfile Object	Msispy Objects

Returns a string containing the name of a component whose GUID is passed in, or a blank string if the required information could not be found.

Syntax

object.GetComponentName(componentGuid)

object
Required. The MsispyProfile object.

componentGuid
Required. The component whose name will be returned.


MsispyProfile.GetProductInfo
GetProductInfo Property
MsispyProfile Object	Msispy Objects

Returns a string containing a specific property of a product, or a blank string if the required information could not be found.

Syntax

object.GetProductInfo(productCode, productAttribute)

object
Required. The MsispyProfile object.

productCode
Required. The product about which information will be returned.

productAttribute
Required. The required property of the product (case-sensitive). Valid attributes are:
ProductName
ProductVersion
ProductCode
Manufacturer
SupportURL
SupportPhone
UserName
UserOrgName
ProductId


MsispyProfile.GetFeatureInfo
GetFeatureInfo Property
MsispyProfile Object	Msispy Objects

Returns a string containing a specific property of a feature, or a blank string if the required information could not be found.

Syntax

object.GetFeatureInfo(productCode, featureName, featureAttribute)

object
Required. The MsispyProfile object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.

featureAttribute
Required. The required property of the feature (case-sensitive). Valid attributes are:
Feature
Feature_Parent
Title
Description
Display
Level
Directory_Configurable
RunFromSource


MsispyProfile.QueryProductState
QueryProductState Property
MsispyProfile Object	Msispy Objects

Returns a numeric value that represents the install-state of a product on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryProductState(productCode)

object
Required. The MsispyProfile object.

productCode
Required. The product about which information will be returned.


MsispyProfile.QueryFeatureState
QueryFeatureState Property
MsispyProfile Object	Msispy Objects

Returns a numeric value that represents the install-state of a feature on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryFeatureState(productCode, featureName)

object
Required. The MsispyProfile object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyProfile.QueryComponentState
QueryComponentState Property
MsispyProfile Object	Msispy Objects

Returns a numeric value that represents the install-state of a component on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryComponentState(componentGuid)

object
Required. The MsispyProfile object.

componentGuid
Required. The component about which information will be returned.


MsispyProfile.GetFeatureUsage
GetFeatureUsage Property
MsispyProfile Object	Msispy Objects

Returns the usage-count of a feature on the local system. Returns 0 if the information could not be obtained.

Syntax

object.GetFeatureUsage(productCode, featureName)

object
Required. The MsispyProfile object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyProfile.GetClientFromComponent
GetClientFromComponent Property
MsispyProfile Object	Msispy Objects

Returns a string containing product-code of a client-product of the component, or a blank  string if all the clients of the component have been enumerated. A 0-based index is used to enumerate the clients one at a time. The component being used must be in the profile, otherwise no clients are enumerated.

Syntax

object.GetClientFromComponent(componentGuid, clientIndex)

object
Required. The MsispyProfile object.

componentGuid
Required. The component whose clients are to be enumerated, must be in the profile.

clientIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetFileFromComponent
GetFileFromComponent Property
MsispyProfile Object	Msispy Objects

Returns a string containing the name of a file used by the component, or a blank  string if all the files of the component have been enumerated. A 0-based index is used to enumerate the files one at a time. The component being used must be in the profile, otherwise no files are enumerated.

Syntax

object.GetFileFromComponent(componentGuid, fileIndex)

object
Required. The MsispyProfile object.

componentGuid
Required. The component whose files are to be enumerated, must be in the profile.

fileIndex
Required. The 0-based index used for enumeration.


MsispyProfile.GetFileInfo
GetFileInfo Property
MsispyProfile Object	Msispy Objects

Returns a string containing a specific property of a file, or a blank string if the required information could not be found.

Syntax

object.GetFileInfo(componentGuid, fileName, fileAttribute)

object
Required. The MsispyProfile object.

componentGuid
Required. The component to which the file belongs.

fileName
Required. The file about which information will be returned.

fileAttribute
Required. The required property of the file (case-sensitive). Valid attributes are:
FileTitle
FileSize
Version
Language
Attributes
Sequence
FileActualSize
FileCreated
FileModified
FileAccessed
FileStatus


MsispyProfile.GetComponentLocation
GetComponentLocation Property
MsispyProfile Object	Msispy Objects

Returns a string containing the full path to the keyfile of a component.

Syntax

object.GetComponentLocation(componentGuid)

object
Required. The MsispyProfile object.

componentGuid
Required. The component about which information will be returned.


MsispyRegistry Object
Msispy Objects

The registry object accesses the local registry on a machine to obtain information about products installed by MSI.

Before the MsispyRegistry object is released (by going out of scope or by setting the object variable to Nothing), the Close method must be called to release all handles.

Properties

GetProduct
GetFeatureFromProduct
GetProduct
GetFeatureFromProduct
GetComponent
GetComponentFromProduct
GetComponentFromFeature
GetComponentName
GetProductInfo
GetFeatureInfo
QueryProductState
QueryFeatureState
QueryComponentState
GetFeatureUsage
GetClientFromComponent
GetFileFromComponent
GetFileInfo
GetComponentLocation

Methods

Open
Close


MsispyRegistry.Open
Open Method
MsispyRegistry Object	Msispy Objects

Opens a registry object.

Syntax

object.Open()

object
Required. The MsispyRegistry object.


MsispyRegistry.Close
Close Method
MsispyRegistry Object	Msispy Objects

Closes a registry object.

Syntax

object.Close()

object
Required. The MsispyRegistry object.


MsispyRegistry.GetProduct
GetProduct Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the product-code of a product in the registry, or a blank string if all the products in the registry have been enumerated. A 0-based index is used to enumerate the products one at a time.

Syntax

object.GetProduct(productIndex)

object
Required. The MsispyRegistry object.

productIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetFeatureFromProduct
GetFeatureFromProduct Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the name of a feature of the product, or a blank string  if all the features of the product have been enumerated. A 0-based index is used to enumerate the features one at a time. The product being used must be in the registry, otherwise no features are enumerated.

Syntax

object.GetFeatureFromProduct(productCode, featureIndex)

object
Required. The MsispyRegistry object.

productCode
Required. The product whose features are to be enumerated, must be in the registry.

featureIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetComponent
GetComponent Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the GUID of a component in the registry, or a blank string if all the components in the registry have been enumerated. A 0-based index is used to enumerate the components one at a time.

Syntax

object.GetComponent(componentIndex)

object
Required. The MsispyRegistry object.

componentIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetComponentFromProduct
GetComponentFromProduct Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the GUID of a component of the product, or a blank string  if all the components of the product have been enumerated. A 0-based index is used to enumerate the components one at a time. The product being used must be in the registry, otherwise no components are enumerated.

Syntax

object.GetComponentFromProduct(productCode, componentIndex)

object
Required. The MsispyRegistry object.

productCode
Required. The product whose components are to be enumerated, must be in the registry.

componentIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetComponentFromFeature
GetComponentFromFeature Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the GUID of a component of the feature, or a blank string  if all the components of the feature have been enumerated. A 0-based index is used to enumerate the components one at a time. The product in use must be in the registry, otherwise no components are enumerated.

Syntax

object.GetComponentFromFeature(productCode, featureName, componentIndex)

object
Required. The MsispyRegistry object.

productCode
Required. The product in use, must be in the registry.

featureName
Required. The feature whose components are to be enumerated.

componentIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetComponentName
GetComponentName Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the name of a component whose GUID is passed in, or a blank string if the required information could not be found.

Syntax

object.GetComponentName(componentGuid)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component whose name will be returned.


MsispyRegistry.GetProductInfo
GetProductInfo Property
MsispyRegistry Object	Msispy Objects

Returns a string containing a specific property of a product, or a blank string if the required information could not be found.

Syntax

object.GetProductInfo(productCode, productAttribute)

object
Required. The MsispyRegistry object.

productCode
Required. The product about which information will be returned.

productAttribute
Required. The required property of the product (case-sensitive). Valid attributes are:
ProductName
ProductVersion
ProductCode
Manufacturer
SupportURL
SupportPhone
UserName
UserOrgName
ProductId


MsispyRegistry.GetFeatureInfo
GetFeatureInfo Property
MsispyRegistry Object	Msispy Objects

Returns a string containing a specific property of a feature, or a blank string if the required information could not be found.

Syntax

object.GetFeatureInfo(productCode, featureName, featureAttribute)

object
Required. The MsispyRegistry object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.

featureAttribute
Required. The required property of the feature (case-sensitive). Valid attributes are:
Feature
Feature_Parent
Title
Description
Display
Level
Directory_Configurable
RunFromSource


MsispyRegistry.QueryProductState
QueryProductState Property
MsispyRegistry Object	Msispy Objects

Returns a numeric value that represents the install-state of a product on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryProductState(productCode)

object
Required. The MsispyRegistry object.

productCode
Required. The product about which information will be returned.


MsispyRegistry.QueryFeatureState
QueryFeatureState Property
MsispyRegistry Object	Msispy Objects

Returns a numeric value that represents the install-state of a feature on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryFeatureState(productCode, featureName)

object
Required. The MsispyRegistry object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyRegistry.QueryComponentState
QueryComponentState Property
MsispyRegistry Object	Msispy Objects

Returns a numeric value that represents the install-state of a component on the local system. The value returned is one of the following:
-6: configuration data corrupt
-5: installation suspended or in progress
-4: run from source, source is unavailable
-3: return buffer overflow
-2: invalid function argument
-1: unrecognized product or feature
 0: broken
 1: advertised
 2: uninstalled
 3: installed on local drive
 4: run from source, CD or net
 5: use default, local or source

Syntax

object.QueryComponentState(componentGuid)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component about which information will be returned.


MsispyRegistry.GetFeatureUsage
GetFeatureUsage Property
MsispyRegistry Object	Msispy Objects

Returns the usage-count of a feature on the local system. Returns 0 if the information could not be obtained.

Syntax

object.GetFeatureUsage(productCode, featureName)

object
Required. The MsispyRegistry object.

productCode
Required. The product to which the feature belongs.

featureName
Required. The feature about which information will be returned.


MsispyRegistry.GetClientFromComponent
GetClientFromComponent Property
MsispyRegistry Object	Msispy Objects

Returns a string containing product-code of a client-product of the component, or a blank  string if all the clients of the component have been enumerated. A 0-based index is used to enumerate the clients one at a time. The component being used must be in the registry, otherwise no clients are enumerated.

Syntax

object.GetClientFromComponent(componentGuid, clientIndex)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component whose clients are to be enumerated, must be in the registry.

clientIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetFileFromComponent
GetFileFromComponent Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the name of a file used by the component, or a blank  string if all the files of the component have been enumerated. A 0-based index is used to enumerate the files one at a time. The component being used must be in the registry, otherwise no files are enumerated.

Syntax

object.GetFileFromComponent(componentGuid, fileIndex)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component whose files are to be enumerated, must be in the registry.

fileIndex
Required. The 0-based index used for enumeration.


MsispyRegistry.GetFileInfo
GetFileInfo Property
MsispyRegistry Object	Msispy Objects

Returns a string containing a specific property of a file, or a blank string if the required information could not be found.

Syntax

object.GetFileInfo(componentGuid, fileName, fileAttribute)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component to which the file belongs.

fileName
Required. The file about which information will be returned.

fileAttribute
Required. The required property of the file (case-sensitive). Valid attributes are:
FileTitle
FileSize
Version
Language
Attributes
Sequence
FileActualSize
FileCreated
FileModified
FileAccessed
FileStatus


MsispyRegistry.GetComponentLocation
GetComponentLocation Property
MsispyRegistry Object	Msispy Objects

Returns a string containing the full path to the keyfile of a component.

Syntax

object.GetComponentLocation(componentGuid)

object
Required. The MsispyRegistry object.

componentGuid
Required. The component about which information will be returned.