/*
 *		msi.mof
 *
 *		© 1998-1999 Microsoft Corporation.  All rights reserved.
 *
 */

#pragma autorecover
#pragma classflags("forceupdate")

Qualifier Description : ToSubClass Amended;
Qualifier Values : ToSubClass Amended;
Qualifier DisplayName : Amended;
Qualifier BitValues:ToSubClass Amended ;

Qualifier Aggregate : ToSubClass ;
Qualifier Aggregation : ToSubClass ; 
Qualifier ArrayType : ToSubClass ;
Qualifier Association : ToInstance ToSubClass DisableOverride ; 
Qualifier ValueMap : ToSubClass ;
Qualifier BitMap : ToSubClass ;
Qualifier CIM_Key : ToSubClass ;
Qualifier CIMTYPE : ToSubClass ;
Qualifier Deprecated : ToSubClass ;
Qualifier Enumeration : ToSubClass ;
Qualifier EnumPrivileges : ToSubClass ;
Qualifier Fixed : ToSubclass;
Qualifier ImplementationSource : ToSubClass ;
Qualifier Key : ToInstance ToSubClass DisableOverride ;
Qualifier Locale : ToInstance ;
Qualifier MappingStrings : ToSubClass ;
Qualifier Max : ToSubClass ;
Qualifier MaxLen : ToSubClass ;
Qualifier Min : ToSubClass ;
Qualifier ModelCorrespondence : ToSubClass ;
Qualifier Not_Null : ToSubClass ;
Qualifier Override : Restricted ;
Qualifier Privileges : ToSubClass ; 
Qualifier Propagated : ToSubClass ;
Qualifier provider : ToInstance ;
Qualifier Range : ToSubClass ;
Qualifier Read : ToSubClass ;
Qualifier Schema : ToInstance ;
Qualifier Singleton : ToSubClass ToInstance ;
Qualifier SUBTYPE : ToSubClass ;
Qualifier Units : ToSubClass ;
Qualifier UUID : ToInstance ;
Qualifier Volatile : ToSubClass ; 
Qualifier Weak : ToSubClass ;
Qualifier Write : ToSubClass ;
Qualifier WritePrivileges : ToSubClass ;

#pragma namespace ("\\\\.\\Root")

[Locale(0x409)]
instance of __Namespace
{
    Name = "CIMV2";
};

#pragma namespace ("\\\\.\\root\\cimv2")

instance of __Win32Provider as $Z
{
    Name = "MSIProv";
    ClsId = "{BE0A9830-2B8B-11d1-A949-0060181EBBAD}";
	ImpersonationLevel = 1;
	PerUserInitialization = "TRUE";
	HostingModel = "LocalSystemHost";
};
instance of __InstanceProviderRegistration
{
    Provider = $Z;
    SupportsGet = "TRUE";
    SupportsEnumeration = "TRUE";
	SupportsPut = "TRUE";
	SupportsDelete = "TRUE";
};
instance of __MethodProviderRegistration
{
    Provider = $Z;
};

        [Locale(0x409),UUID ( "{CE3324AA-DB34-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class represent products as they are "
		"installed by MSI.  A product generally correlates to a single installation "
		"package."), provider ("MSIProv") , dynamic, MappingStrings{"Microsoft.MSI"}, SupportsUpdate] 
class Win32_Product:CIM_Product
{
		[Read, Description ("The installed state of the product."),
		ValueMap {"-6", "-2", "-1", "1", "2", "5"}, 
		Values {"Bad Configuration", "Invalid Argument",
		"Unknown Package", "Advertised", "Absent", "Installed"}
		 ]
    sint16 InstallState;
		[Read, Description ("The location of the locally cached package for this product.")]
    string PackageCache;
		[DEPRECATED, Read, Description ("The installation date.  The InstallDate property has been "
		"deprecated in favor of the InstallDate2 property which is of type DateTime rather than String. "
		"New implementations should use the InstallDate2 property.")]
	string InstallDate;
		[Read, Description ("The InstallDate2 property represents the "
		"installation date of the product.")]
	datetime InstallDate2;

		[Read, Description ("The location of the installed product.")]
	string InstallLocation;

	//methods
        [static, Implemented, Description(
        "This method Will install an associated Win32_Product using the installation "
        "package provided through PackageLocation and any command line options "
        "that are supplied. The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Install
	(
			[in, Description("The path to the package that is to be installed")]
        string PackageLocation,
			[in, Description("The command line options for the install.  These "
			"should be in the form of property=setting")]
        string Options,
			[in, Description("Indicates whether the operation should be applied to "
			"the current user (FALSE) or all users on the machine (TRUE).")]
        boolean AllUsers = FALSE
    );

        [static, Implemented, Description(
        "This method will preform an administrative install of an associated "
        "Win32_Product using the installation package provided through "
        "PackageLocation and any command line options that are supplied. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Admin
	(
			[in, Description("The path to the package that is to be admined")]
        string PackageLocation,
			[in, Description("The location for the administrative image to be installed "
			"at.")]
        string TargetLocation,
			[in, Description("The command line options for the upgrade.  These "
			"should be in the form of property=setting")]
        string Options
    );

        [static, Implemented, Description(
        "This method will advertise an associated Win32_Product using the installation "
        "package provided through PackageLocation and any command line options "
        "that are supplied. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Advertise
	(
			[in, Description("The path to the package that is to be advertised")]
        string PackageLocation,
			[in, Description("The command line options for the advetisement.  These "
			"should be in the form of property=setting")]
        string Options,
			[in, Description("Indicates whether the operation should be applied to "
			"the current user (FALSE) or all users on the machine (TRUE).")]
        boolean AllUsers = FALSE
    );

        [Implemented, Description(
        "This method will reinstall the associated instance of Win32_Product "
        "using the specified reinstallation mode. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Reinstall
	(
			[In, Description("Specifies the reinstall mode"), 
			Values{"FileMissing","FileOlderVersion", "FileEqualVersion", 
			"FileExact", "FileVerify", "FileReplace", "UserData", "MachineData", 
			"Shortcut", "Package"}, 
			Valuemap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}]
        uint16 ReinstallMode = 1
    );

        [Implemented, Description(
        "This method will upgrade the associated Win32_Product using the upgrade "
        "package provided through PackageLocation and any command line options "
        "that are supplied. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Upgrade
	(
			[in, Description("The path to the package that contains the upgrade")]
        string PackageLocation,
			[in, Description("The command line options for the upgrade.  These "
			"should be in the form of property=setting")]
        string Options
    );

		[Implemented, Description(
        "This method will configure the associated instance of Win32_Product "
        "to the specified install state and level. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
	uint32 Configure
	(
			[in, 
			Values {"Default", "Local", "Source"}, 
			Valuemap {"1", "2", "3"}]
		uint16 InstallState = 1,
			[in, 
			Values {"Default", "Minimum", "Maximum"}, 
			Valuemap {"1", "2", "3"}]
		uint16 InstallLevel = 1
	);
		
		[Implemented, Description(
        "This method will uninstall the associated instance of "
		"Win32_Product. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
	uint32 Uninstall();
};

        [Locale(0x409),UUID("{A7A5AEBA-E3D2-11d2-8601-0000F8102E5F}"),
		Description (
        "SoftwareFeatures and SoftwareElements: A 'SoftwareFeature' is a distinct subset of a "
        "Product, consisting of one or more 'SoftwareElements'. Each SoftwareElement is "
        "defined in a Win32_SoftwareElement instance, and the association between a feature "
        "and its SoftwareFeature(s) is defined in the Win32_SoftwareFeatureSoftwareElement Association. "
        " Any component can be 'shared' between two or more SoftwareFeatures. If two or "
        "more features reference the same component, that component will be "
        "selected for installation if any of these features are selected.") ,
		dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_SoftwareFeature:CIM_SoftwareFeature
{
        [Description (
        "Remote execution option, one of irsEnum: ifrsFavorLocal   = 0:  Install "
        "components locally, if possible ifrsFavorSource  = 1:  Install "
        "components to run from the source CD/Server, if possible "
        "ifrsFollowParent = 2:  Follow the remote execution option of the parent "
        "feature"), Read ] 
    uint16 Attributes;
		[Read, Description ("The installed state of the software feature."),
		ValueMap {"-6", "-2", "-1", "1", "2", "3", "4"}, 
		Values {"Bad Configuration", "Invalid Argument", "Unknown Package", 
		"Advertised", "Absent", "Local", "Source"}]
	sint16 InstallState;
        [Description(
        "Number of times this SoftwareFeature has been used"), Read]
    uint16 Accesses;
        [Description(
        "Last time this SoftwareFeature was used"), Read]
    datetime LastUse;

	//methods
        [Implemented, Description(
        "This method will reinstall the associated instance of Win32_SoftwareFeature "
        "using the specified reinstallation mode. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
    uint32 Reinstall
	(
			[in, Description("Specifies the reinstall mode"), 
			Values{"FileMissing","FileOlderVersion", "FileEqualVersion", 
			"FileExact", "FileVerify", "FileReplace","UserData", "MachineData", 
			"Shortcut", "Package"}, 
			Valuemap{"1", "2", "3", "4", "5","6", "7", "8", "9", "10"}]
        uint16 ReinstallMode = 1
    );

		[Implemented, Description(
        "This method will configure the associated instance of Win32_SoftwareFeature "
        "to the specified install state. "
		"The method can return the following values:\n"
		"0 - Success.\n"
		"2147549445 - RPC Server Fault Error. \n"
		"Other - For integer values other than those listed above, refer to the "
		"documentation on error codes returned by the Windows Installer API and "
		"the Win32 error codes."),
		ValueMap {"0", "2147549445", ".."},
		Values {"Success", "RPC Server Fault Error", "Other"}]
	uint32 Configure
	(
			[in, 
			Values {"Default", "Advertise", "Local", "Absent", "Source"}, 
			Valuemap{"1", "2", "3","4", "5"}]
		uint16 InstallState = 1
	);
};
     
        [Locale(0x409),UUID("{92ECDE80-E3D2-11d2-8601-0000F8102E5F}"),
		Description (
        "SoftwareFeatures and SoftwareElements: A 'SoftwareFeature' is a distinct subset of a "
        "Product, consisting of one or more 'SoftwareElements'. Each SoftwareElement is "
        "defined in a Win32_SoftwareElement instance, and the association between a feature "
        "and its SoftwareFeature(s) is defined in the Win32_SoftwareFeatureSoftwareElement Association. "
        " Any component can be 'shared' between two or more SoftwareFeatures. If two or "
        "more features reference the same component, that component will be "
        "selected for installation if any of these features are selected.") ,
		dynamic
        , provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_SoftwareElement:CIM_SoftwareElement
{
		[Read, Description ("A bit map containing the remote execution options for "
		"the software element.")]
    uint16 Attributes;
		[Read, 
		Description (
		"The path to the installed software element. 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:"
		"Root"
		"Returned Value\n"
		"HKEY_CLASSES_ROOT 00\n"
		"HKEY_CURRENT_USER 01\n"
		"HKEY_LOCAL_MACHINE 02\n"
		"HKEY_USERS 03")]
	string Path;
		[Read, Description (
		"The current installed state for the software element."),
		values{"Not Used", "Bad Configuration", "Source Absent", 
		"Error","Absent", "Local","Source"}, 
		valuemap{"-7", "-6", "-4", "-1", "2", "3", "4"}]
	sint16 InstallState;
};

        [Locale(0x409),UUID("{CC78410E-E3D1-11d2-8601-0000F8102E5F}"),
		Dynamic, provider ("MSIProv") , Description (
        "The Win32_ApplicationService class represents any installed or "
        "advertised components or applications available on the system. "
        "Instances of this class include all properly installed and instrumented "
        "executables.") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_ApplicationService:CIM_Service
{
};

        [Locale(0x409),UUID("{656E1F1E-E3D2-11d2-8601-0000F8102E5F}"),
		Dynamic, provider ("MSIProv") , Description (
        "The Win32_CommandLineAccess class represents the command line interface "
        "to a service or application. The name of the access point is always the "
        "full command line text.") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_CommandLineAccess:CIM_ServiceAccessPoint
{
        [Description (
        "The value of the Commandline property provides the string used to start "
        "the service."), Read ] 
    string CommandLine;
};

        [Locale(0x409),UUID ( "{280AE270-DB34-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class represent conditional checks that must "
		"be evaluated to TRUE before their associated Win32_SoftwareElement can be "
		"installed."), dynamic, provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_SoftwareElementCondition:CIM_Check
{
		[Read, Description ("A conditional statement which evaluates to TRUE or FALSE to determine"
		" whether the associated software element should is installed.")]
    string Condition;
};
     
        [Locale(0x409),UUID ( "{E79C9694-DB32-11d2-85FC-0000F8102E5F}" ),
		dynamic, provider ("MSIProv") , Description (
        "The LaunchCondition class is used by the LaunchConditions action. It "
        "contains a list of conditions, all of which must be satisfied for the "
        "action to succeed.") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_LaunchCondition:CIM_Check
{
		[Read, Description ("A condition that must evaluate to TRUE for installation to begin.")]
    string Condition;
};  
     
        [Locale(0x409),UUID ( "{43FF3654-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The Condition class can be used to modify the selection state of any "
        "entry in the Feature class, based on a conditional expression. If "
        "Condition evaluates to True, the corresponding Level value in the "
        "Feature class will be set to the value specified in the Condition class'"
        "s Level column. Using this mechanism, any feature can be permanently "
        "disabled (by setting the Level to 0), set to be always installed (by "
        "setting the Level to 1), or set to a different install priority (by "
        "setting Level to an intermediate value). The Level may be set based "
        "upon any conditional statement, such as a test for platform, operating "
        "system, a particular property setting, etc.") , dynamic, provider (
        "MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_Condition:CIM_Check
{
		[Read, Description ("The install level for the associated software feature "
		"if condition evaluates to TRUE.")]
    uint16 Level;
		[Read, Description ("A conditional statement which evaluates to TRUE or FALSE "
		"to determine whether the Level value should be applied to the associated software "
		"feature.")]
    string Condition;
		[Read, Description ("The name of the feature within the associated product to which "
		"this condition applies.")]
    string Feature;
};
     
        [Locale(0x409),UUID ( "{BBB7EBAA-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "Each instance of this class represents a source file with it's various "
        "attributes, ordered by a unique, non-localized identifier.  For "
        "uncompressed files, the File property is ignored, and the FileName "
        "column is used for both the source and destination file name. You must "
        "set the 'Uncompressed' bit of the Attributes column for any file that "
        "is not compressed in a cabinet.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_FileSpecification:CIM_FileSpecification
{
        [Description (
        "List of decimal language Ids, comma-separated if more than one."), Read ] 
    string Language;
        [Description (
        "Integer containing bit flags representing file attributes (with the "
        "decimal value of each bit position in parentheses).  See the remarks "
        "below for more information:       Bit 0:   Read Only (1)    Bit 1:   "
        "Hidden (2)     Bit 2:   System (4)     Bit 8:   Split (256) - the file "
        "is split between two or more compression cabinets    Bit 9:   Vital ("
        "512) - this file is vital for the proper operation of the component to "
        "which it belongs    Bit 12:  Permanent (4096) - the file will not be "
        "removed on uninstall    Bit 13:  Uncompressed (8192) - the file is "
        "uncompressed on the source media    Bit 14:  Patch (16384) (reserved "
        "for future use)    Bit 15:  PatchSourceIgnore (32768) - the file can be "
        "ignored during a patch upgrade if it is run-from-source"), Read ] 
    uint16 Attributes;
        [Description (
        "Sequence with respect to the media images; order must track cabinet "
        "order."), Read ] 
    uint16 Sequence;
		[Fixed, Read, Description ("A unique key which identifies a file within the scope of a product.")]
    string FileID;
		[Fixed, Read]
    string Version;
};
     
        [Locale(0x409),UUID ( "{47772EC4-DB21-11d2-85FC-0000F8102E5F}" ),
		Description (
        "This class contains the .INI information that the application needs to "
        "set in an .INI file. The .INI file information is written out when the "
        "corresponding component has been selected to be installed, either "
        "locally or run from source.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_IniFileSpecification:CIM_FileSpecification
{
		[Read, Description ("The .ini file section.")]
    string Section;
		[Read, Description ("The .ini file key within the section.")]
    string Key;
		[Read, Description ("The value to be written.")]
    string Value;
		[Read, Description ("The type of modification made.\n"
		" Hexadecimal \n Decimal \n Modification \n\n"
		"0x000 \n 0 \n Creates or updates a .ini entry. \n\n"
		"0x001 \n 1 \n Creates a .ini entry only if the entry does not already exist. \n\n"
		"0x003 \n 3 \n Creates a new entry or appends a new comma-separated value to an existing entry.")]
    uint16 Action;
		[Read, Description ("A unique key identifying this ini file specification within its product.")]
    string IniFile;
};
     
        [Locale(0x409),UUID ( "{6328B2A8-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "This class represents the directory layout for the product. Each "
        "instance of the class represents a directory in both the source image "
        "and the destination image. Directory resolution is performed during the "
        "CostFinalize action and is done as follows: Root destination "
        "directories: Root directories entries are those with a null "
        "Directory_Parent value or a Directory_Parent value identical to the "
        "Directory value. The value in the Directory property is interpreted as "
        "the name of a property defining the location of the destination "
        "directory. If the property is defined, the destination directory is "
        "resolved to the property's value. If the property is undefined, the "
        "ROOTDRIVE property is used instead to resolve the path. Root source "
        "directorires: The value of the DefaultDir column for root entries is "
        "interpreted as the name of a property defining the source location of "
        "this directory. This property must be defined or an error will occur. "
        "Non-root destination directories: The Directory value for a non-root "
        "directory is also interpreted as the name of a property defining the "
        "location of the destination. If the property is defined, the "
        "destination directory is resolved to the property's value. If the "
        "property is not defined, the destination directory is resolved to a "
        "sub-directory beneath the resolved destination directory for the "
        "Directory_Parent entry. The DefaultDir value defines the name of the "
        "sub-directory.  Non-root source directories: The source directory for a "
        "non-root directory is resolved to a sub-directory of the resolved "
        "source directory for the Directory_Parent entry. Again, the DefaultDir "
        "value defines the name of the sub-directory.") , dynamic, provider (
        "MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_DirectorySpecification:CIM_DirectorySpecification
{
		[Read]
    string DefaultDir;
		[Read]
    string Directory;
};

        [Locale(0x409),UUID ( "{8518ABC0-DB32-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class contain information about any environment "
		"variables that may need to be registered for their associated products installation."), 
		Dynamic, Provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_EnvironmentSpecification:CIM_Check
{
		[Read, Description ("Token name for the environment specification within its package.")]
    string Environment;
		[Read, Description ("The value for this environment as a formatted string.")]
    string Value;
};
     
        [Locale(0x409),UUID ( "{C744CF5A-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "This optional class allows the author to 'reserve' a specified amount "
        "of disk space in any directory, depending on the installation state of "
        "a component. Reserving cost in this way could be useful for authors who "
        "want to ensure that a minimum amount of disk space will be available "
        "after the installation is completed. For example, this disk space might "
        "be reserved for user documents, or for application files (such as index "
        "files) that are created only after the application is launched "
        "following installation. The ReserveCost class also allows custom "
        "actions to specify an approximate cost for any files, registry entries, "
        "or other items, that the custom action might install.") , dynamic, 
        provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_ReserveCost:CIM_Check
{
		[Read, Description ("A unique key identifying this reserve cost item within its product.")]
    string ReserveKey;
		[Read, Description ("The name of the directory (as a path, reference to a directory specification or reference to a property) where the space is reserved.")]
    string ReserveFolder;
		[Read, Description ("The number of bytes of disk space reserved if the associated software element is installed to run locally.")]
    uint32 ReserveLocal;
		[Read, Description ("The number of bytes of disk space reserved if the associated software element is installed to run from source.")]
    uint32 ReserveSource;
};

        [Locale(0x409),UUID ( "{45BD8DD2-DB33-11d2-85FC-0000F8102E5F}" ),
		Description("This class represents any ODBC drivers that are to be installed "
		"as part of a particular product."), Provider ("MSIProv") , Dynamic,
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCDriverSpecification:CIM_Check
{
		[Read, Description ("Token name for the driver within its package.")]
    string Driver;
		[Read]
    string Description;
		[Read, Description("The FileID of the Win32_FileSpecification representing this driver.")]
    string File;
		[Read, Description("The FileID of the Win32_FileSpecification representing this drivers setup dll.")]
    string SetupFile;
};

        [Locale(0x409),UUID ( "{51E28842-DB33-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class represent any ODBC Translators that are "
		"included as part of a products installation."), Provider ("MSIProv") ,
		Dynamic, MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCTranslatorSpecification:CIM_Check
{
		[Read, Description ("Token name for the translator within its package.")]
    string Translator;
		[Read]
	string Description;
		[Read, Description ("The FileID of the Win32_FileSpecification representing this translator.")]
    string File;
		[Read, Description ("The FileID of the Win32_FileSpecification representing this translators setup dll.")]
    string SetupFile;
};
     
        [Locale(0x409),UUID ( "{1F20B83E-DB33-11d2-85FC-0000F8102E5F}" ),
		Description("This class specifies any Data Sources (DSNs) that need to be registered "
		"as part of an installation."), Provider ("MSIProv") , Dynamic,
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCDataSourceSpecification:CIM_Check
{
		[Read, Description ("Token name for the data source within its package.")]
    string DataSource;
		[Read]
    string Description;
		[Read, Description ("The associated ODBC driver name.")]
    string DriverDescription;
		[Read, Description (" The type of registration for this data source. \n ) indicates per machine, \n 1 indicates per user.")]
    string Registration;
};

        [Locale(0x409),UUID ( "{DBAD0F60-DB34-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class represent the services that are to be installed "
		"along with an associated package."), Provider ("MSIProv") , Dynamic,
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_ServiceSpecification:CIM_Check
{
		[Read, Description ("A unique key identifying this service specification item within its product.")]
    string ID;
		[Read]
    string Name;
		[Read, Description ("This property is the string that user interface programs use to identify the service.")]
    string DisplayName;
		[Read, Description ("This property is a set of bit flags that specify the type of service.\n"
		" One of the following service types must be specified in this column.\n"
		" Type of service\n Value \n Description \n\n"
		"SERVICE_WIN32_OWN_PROCESS \n 0x00000010 \n A Microsoft Win32® service that runs its own process.\n\n"
		"SERVICE_WIN32_SHARE_PROCESS \n0x00000020 \n A Win32 service that shares a process.\n\n"
		"SERVICE_INTERACTIVE_PROCESS \n 0x00000100A \n Win32 service that interacts with the desktop."
		" This value cannot be used alone and must be added to one of the two previous types.\n\n\n"
		"The following types of service are unsupported.\n"
		" Type of service \n Value \n Description \n\n"
		"SERVICE_KERNEL_DRIVER \n 0x00000001 \n A driver service.\n\n"
		"SERVICE_FILE_SYSTEM_DRIVER \n 0x00000002 \n A file system driver service.")]
    sint32 ServiceType;
		[Read, Description ("This property is a set of bit flags that specify when to start the service.\n"
		" One of the following types of service start must be specified in this column.\n"
		" Type of service start \n Value \n Description \n\n"
		"SERVICE_AUTO_START \n 0x00000002 \n A service start during startup of the system.\n\n"
		"SERVICE_DEMAND_START \n 0x00000003 \n A service start when the service control manager calls "
		"the StartService function.\n\n"
		"SERVICE_DISABLED \n 0x00000004 \n Specifies a service that can no longer be started.\n\n"
		"The following types of service starts are valid only for driver services.\n"
		" Type of driver service start\n ValueDescription \n\n"
		"SERVICE_BOOT_START \n 0x00000000 \n A device driver started by the operating system loader.\n\n"
		"SERVICE_SYSTEM_START \n 0x00000001 \n A device driver started by calling the IoInitSystem function."
		" Use this in the ServiceControl Table, with the StartServices action put after the InstallServices"
		" action, to start a driver service during an install.")]
	sint32 StartType;
		[Read, Description ("This column specifies the action taken by the startup program if "
		"the service fails to start during startup. One of the following error control flags "
		"must be specified in this column.\n"
		" Adding the value 0x08000 to the flags in the following table specifies that the overall install"
		" will fail if the service cannot be installed into the system.\n\n"
		" Value \n"
		"Startup program's action \n\n"
		"0x00000000 \n"
		"Logs the error and continues with the startup operation.\n\n"
		"0x00000001 \n"
		"Logs the error, displays a message box and continues the startup operation.\n\n"
		"0x00000003 \n"
		"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.")]
	sint32 ErrorControl;
		[Read, Description ("This property contains the string that names the load ordering group "
		"of which this service is a member.")]
	string LoadOrderGroup;
		[Read, Description ("This column is a list of names of services or load ordering groups"
		" that the system must start before this service. Names in the list are separated by Nulls."
		" If the service has no dependencies, then Null or an empty string is returned."
		" Dependency on a group means that this service can run if at least one member of the group"
		" is running after an attempt to start all members of the group.")]
	string Dependencies;
		[Read, Description ("The account name used to start this service.")]
	string StartName;
		[Read, Description ("The password associated with StratName.")]
	string Password;
};

        [Locale(0x409),UUID ( "{8D500594-DB33-11d2-85FC-0000F8102E5F}" ),
		Description("Instances of this class represent and ProgIDs that need to be registered "
		"durring a given installation."), Provider ("MSIProv") , Dynamic,
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_ProgIDSpecification:CIM_Check
{
		[Fixed, Read]
    string ProgID;
		[Fixed, Read, Description ("Contains the ProgID for any version independent programs.")]
	string Parent;
		[Read] 
    string Description;
};

        [Locale(0x409),UUID ( "{A3864E0E-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The WriteRegistryValues action sets up registry information that the "
        "application desires in the system Registry. The registry information is "
        "gated by the Component class. A registry value is written to the system "
        "registry if the corresponding component has been set to be installed "
        "either locally or run from source.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_RegistryAction:CIM_Action
{
        [Description (
        "The registry value name.     If the Value column is null, then the "
        "following strings in the Name column have special significance.    +  "
        "The key is to be created, if absent upon the installation of the "
        "component.    -  The key is to be deleted, if present, with all its "
        "values and subkeys upon the uninstallation of the component.     *  The "
        "key is to be created, if absent upon the installation of the component "
        "AND the key is to be deleted, if present, with all its values and "
        "subkeys upon the uninstallation of the component."), Read ] 
    string Registry;
		[Read, Description ("This property contains the registry value name."
		" If this is Null, then the data entered into the Value proeprty are written to"
		" the default registry key.")]
    string EntryName;
		[Read, Description ("This property is the registry value.")]
    string EntryValue;
		[Values{"HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_CLASSES_ROOT",
		"HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS"}, ValueMap{-1, -1,
		0, 1, 2, 3}, Read]
    sint16 Root;
		[Read, Description ("The key for the registry value.")]
    string Key;
};
     
        [Locale(0x409),UUID ( "{B94A25A8-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RemoveIniValues action deletes .INI file information that the "
        "application desires to delete from .INI files. The deletion of the "
        "information is gated by the Component class. A .INI value is deleted if "
        "the corresponding component has been set to be installed either locally "
        "or run from source.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_RemoveIniAction:CIM_Action
{
		[Read, Description ("The .ini file section.")]
    string Section;
		[Read, Description ("The .ini file key below the section.")]
    string Key;
		[Read, Description ("The value to be deleted.")]
    string Value;
		[Read, Description ("The type of modification made.\n"
		" Hexadecimal \n Decimal \n Meaning\n\n"
		"0x002 \n 2 \n Deletes .ini entry. \n\n"
		"0x004 \n 4 \n Deletes a tag from a .ini entry.")]
    uint16 Action;
};
     
        [Locale(0x409),UUID ( "{FF7DA3FC-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The MoveFiles action allows the author to locate files that already "
        "exist on the user's machine, and move or copy those files to a new "
        "location.") , dynamic, provider("MSIProv"), MappingStrings{"Microsoft.MSI"}] 
class Win32_MoveFileAction:CIM_FileAction
{
		[Read, Description ("This property contains the name of the source files to be moved or copied.\n"
		" This property may be left blank. See the description of the SourceFolder property."
		" This field may contain wildcard characters (* and ?).")]
    string SourceName;
		[Read, Description ("This property contains the name to be given to the original file"
		" after it is moved or copied. If this field is blank, then the destination"
		" file is given the same name as the source file.")]
    string DestName;
		[Read, Description ("This property contains the name of a Win32_Property having a value"
		" that resolves to the full path to the source directory. If the SourceName property is "
		"left blank, then the property named in the SourceFolder property is assumed to contain "
		"the full path to the source file itself (including the file name).")]
    string SourceFolder;
		[Read, Description ("The name of a win32_Property whose value resolves to the"
		" full path to the destination directory.")]
    string DestFolder;
		[Read, Description ("Integer value specifying the operating mode.  ) indicates a copy,"
		" 1 indicates a move.")]
    uint16 Options;
		[Read, Description ("A unique key identifying this move file action within its product.")]
    string FileKey;
};
     
        [Locale(0x409),UUID ( "{38BA58F0-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RegisterClassInfo action manages the registration of COM class "
        "information with the system. In the Advertise mode the action registers "
        "all COM classes for which the corresponding feature is enabled. Else "
        "the action registers COM classes for which the corresponding feature is "
        "currently selected to be installed.") , dynamic, provider ("MSIProv") 
        , MappingStrings{"Microsoft.MSI"} ] 
class Win32_ClassInfoAction:CIM_Action
{
		[Read, Description ("The class identifier of a COM server")]
    string CLSID;
		[Read, Description ("The default Program ID associated with this Class ID.")]
    string ProgID;
		[Read, Description ("The VI Program ID associated with this Class ID.")]
    string VIProgID;
		[Read, Description ("An indicator as to whether this object is insertable or not.")]
    uint16 Insertable;
		[Read, Description ("Application ID containing DCOM information "
		"for the associated application (string GUID).")]
    string AppID;
		[Read, Description ("Contains information for the HKCR (this CLSID) key. "
		" If multiple patterns exist, they must be delimited by a semicolon, and numeric subkeys "
		"are generated: 0, 1, 2.")]
    string FileTypeMask;
		[Read, Description ("This property is optional only when the Context property is set to"
		" the LocalServer or LocalServer32 server context. The text is registered as the argument"
		" against the OLE server and is used by OLE for invoking the server.")]
    string Argument;
		[Read, Description (" Default inproc handler.   May be optionally provided only for "
		"Context = LocalServer or LocalServer32. A non-numeric value is treated as a system file"
		" that serves as the 32-bit InprocHandler (appearing as the InprocHandler32 value). \n"
		" Value \n Meaning \n\n "
		"1 = default (system) \n 16-bit InprocHandler (appearing as the InprocHandler value) \n\n"
		"2 = default (system) \n 32-bit InprocHandler (appearing as the InprocHandler32 value) \n\n"
		"3 = default (system) \n 16-bit as well as 32-bit InprocHandlers")]
    string DefInprocHandler;
		[Read, Description ("The server context for this server.  This may be one of the following"
		" values: LocalServer, LocalServer32, InprocServer, InprocServer32")]
    string Context;
		[Read, Description ("The name used remotely for the server.")]
    string RemoteName;
};
     
        [Locale(0x409),UUID ( "{F3F3A266-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RegisterMIMEInfo action registers the MIME related registry "
        "information with the system. In the Advertise mode the action registers "
        "all MIME info for servers for which the corresponding feature is "
        "enabled. Else the action registers MIME info for servers for which the "
        "corresponding feature is currently selected to be installed.") , 
        dynamic, provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_MIMEInfoAction:CIM_Action
{
		[Read, Description ("This column is an identifier for the MIME content."
		" It is commonly written in the form of type/format.")]
    string ContentType;
		[Read, Description ("This property contains the COM server CLSID"
		" that is associated with the MIME content.")]
    string CLSID;
		[Read, Description ("This column contains the server extension"
		" that is to be associated with the MIME content, without the dot.")]
    string Extension;
};
     
        [Locale(0x409),UUID ( "{C63BAA94-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RegisterFonts action registers installed fonts with the system. It "
        "maps the Font.FontTitle to the path of the font file installed. The "
        "RegisterFonts action is triggered when the Component to which the Font."
        "File_ belongs is selected for install. This implies that fonts can be "
        "made private, shared or system by making the Components to which they "
        "belong so.") , dynamic, provider ("MSIProv") , ImplementationSource (
        "MSI") ] 
class Win32_FontInfoAction:CIM_Action
{
		[Read, Description ("Font name. For TrueType Fonts and TrueType Collections"
		" if NULL the installer registers the font after reading the correct font title"
		" from the font file.")]
    string FontTitle;
		[Read, Description ("The FileID of a Win32_FileSpecification that represents"
		" this fonts file.")]
    string File;
};
     
        [Locale(0x409),UUID ( "{FAE1F7B6-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The CreateShortcuts action manages the creation of shortcuts. In the "
        "Advertise mode, the action creates shortcuts to the key files of "
        "components of features that are enabled. Advertised shortcuts are those "
        "for which the Target property is the feature of the component and the "
        "directory of the shortcut is one of the Shell folders or below one. "
        "Advertised shortcuts are created with a Microsoft installer technology "
        "Descriptor as the target. Non-advertised shortcuts are those for which "
        "the Target column in the Shortcut class is a property or the directory "
        "of the shortcut is not one of the Shell folders or below one. "
        "Advertised shortcuts are created with a Microsoft installer technology "
        "Descriptor as the target. In the non-advertise mode (normal install) "
        "the action creates shortcuts to the key files of components of features "
        "that are selected for install as well as non-advertised shortcuts whose "
        "component is selected for install.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ShortcutAction:CIM_Action
{
        [Description ("The command-line arguments for the shortcut."), Read ] 
    string Arguments;
        [Description (
        "The hotkey for the shortcut. It has the virtual-key code for the key in "
        "the low-order byte, and the modifier flags in the high-order byte. "), Read 
        ] 
    uint16 HotKey;
		[Description ("The icon index for the shortcut.") ]
    string IconIndex;
        [Description("The Show Command specifies the view state of the "
		"application window and is similar to the ShowWindow Windows function."), 
		 ValueMap{"0", "3", "7"}, Read,
		 Values{"SW_SHOWNORMAL", "SW_SHOWMAXIMIZED", "SW_SHOWMINNOACTIVE"}]
    uint16 ShowCmd;
        [Description ("The name of the shortcut to be created."), Read ] 
    string Shortcut;
		[Read]
    string Name;
		[Read, Description ("The Shortcut target specifies the action to be taken"
		" when a shortcut is launched.  This can reference a software feature or "
		"a file specification of directory specification.")]
    string Target;
		[Read, Description ("The name of the Win32_Property that has the path of"
		" the working directory for the shortcut.")]
    string WkDir;
};
     
        [Locale(0x409),UUID ( "{5D06847A-DB34-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RegisterTypeLibraries action registers type libraries with the "
        "system. The action works on each file referenced which is triggered to "
        "be installed.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_TypeLibraryAction:CIM_Action
{
        [Fixed, Description ("The language of the type library."), Read ] 
    uint16 Language;
		[Fixed, Read, Description ("The cost associated with the registration of "
		"the type library in bytes.")]
    uint32 Cost;
        [Fixed, Description ("The GUID that identifies the library."), Read ] 
    string LibID;
};
     
        [Locale(0x409),UUID ( "{DC7E5E90-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The SelfRegModules action processes all the modules in the SelfReg to "
        "register the modules, if installed.") , dynamic, provider ("MSIProv") 
        , MappingStrings{"Microsoft.MSI"} ] 
class Win32_SelfRegModuleAction:CIM_Action
{
		[Read, Description ("The value to be deleted.")]
    uint16 Cost;
		[Read, Description ("The FileID of a Win32_FileSpecification associated"
		" with this selfreg module action.")]
    string File;
};
     
        [Locale(0x409),UUID ( "{990E7AE6-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The PublishComponents action manages the advertisement of the "
        "components that may be faulted in by other products with the system. In "
        "the Advertise mode the action publishes the all components for which "
        "the corresponding feature is enabled. Else the action publishes "
        "components for which the corresponding feature is currently selected to "
        "be installed.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_PublishComponentAction:CIM_Action
{
		[Read, Description ("The SoftwareElementID of the software element associated with this action.")]
    string ComponentID;
		[Read, Description ("A text string that qualifies the value in the ComponentId property."
		" A qualifier is used to distinguish multiple forms of the same software element, such as"
		" a software element that is implemented in multiple languages.")]
    string Qual;
		[Read, Description ("A localizable text describing the qualified component"
		" of this instance. The string is commonly parsed by the application and"
		" can be displayed to the user.")]
    string AppData;
};
     
        [Locale(0x409),UUID ( "{1D40FFD4-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The BindImage action binds each executable that needs to be bound to "
        "the DLLs imported by it by computing the virtual address of each "
        "function that is imported from all DLLs. The computed virtual address "
        "is then saved in the importing image's Import Address Table (IAT). The "
        "action works on each file installed locally.") , dynamic, provider (
        "MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_BindImageAction:CIM_Action
{
		[Read, Description (" A list of paths, separated by semicolons, that represent"
		" the paths to be searched to find the imported DLLs. The list is usually a list"
		" of Win32_Properties, with each Win32_Property.Name enclosed inside square brackets ([ ]).")]
    string Path;
		[Read, Description ("The FileID of a Win32_FileSpecification"
		" for which this action applies (must be a valid binary file.)")]
    string File;
};
     
        [Locale(0x409),UUID ( "{9668DF4E-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The ExtensionInfoAction manages the registration of "
        "extension related information with the system. The action registers "
        "the extension servers for which the corresponding feature is currently "
        "selected to be uninstalled.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ExtensionInfoAction:CIM_Action
{
		[Read, Description ("The Program ID associated with this extension.")]
    string ProgID;
		[Read, Description ("Parameters for shell execution.")]
    string ShellNew;
		[Read, Description ("Value for shell execution.")]
    string ShellNewValue;
		[Read, Description ("The extension associated with an instance.")]
    string Extension;
		[Read, Description ("The verb for the command.")]
    string Verb;
		[Read, Description ("The text displayed on the context menu.")]
    string Command;
		[Read, Description ("Value for the command arguments.")]
    string Argument;
		[Read, Description("The MIME type associated with this extension.")]
    string MIME;
};
     
        [Locale(0x409),UUID ( "{785B1AD0-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The DuplicateFileAction allows the author to make one or more "
        "duplicate copies of files installed by the InstallFiles executable action, either "
        "to a different directory than the original file, or to the same "
        "directory, but with a different name.") , dynamic, provider ("MSIProv"
        ) , MappingStrings{"Microsoft.MSI"} ] 
class Win32_DuplicateFileAction:CIM_CopyFileAction
{
		[Read, Description ("A unique key identifying this duplicate file action within its product.")]
    string FileKey;
};
     
        [Locale(0x409),UUID ( "{AE565838-DB33-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The RemoveFiles action uninstalls files previously installed by the "
        "InstallFiles action. Each of these files is 'gated' by a link to an "
        "entry in the Component class; only those files whose components are "
        "resolved to the iisAbsent Action state, or the iisSource Action state "
        "IF the component is currently installed locally, will be removed. The "
        "RemoveFiles action can also remove specific author-specified files that "
        "weren't installed by the InstallFiles action. Each of these files is '"
        "gated' by a link to an entry in the Component class; those files whose "
        "components are resolved to any 'active' Action state (i.e. not in the '"
        "off', or NULL, state) will be removed (if the file exists in the "
        "specified directory, of course). This implies that removal of files "
        "will be attempted when the gating component is first installed, during "
        "a reinstall, and again when the gating component is removed.") , 
        dynamic, provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_RemoveFileAction:CIM_RemoveFileAction
{
		[Read, Description ("The property contains the name of the file to be removed."
		" If this column is null, then the specified folder will be removed if it is empty. "
		"All of the files that match the wildcard will be removed from the specified directory.")]
    string FileName;
		[Read, Description ("The name of a Win32_Property whose value is assumed"
		" to resolve to the full path to the folder of the file to be removed. "
		"The property can be the name of a directory iproperty for a Win32_DirectorySpecification"
		" or any other property that represents a full path.")]
    string DirProperty;
		[Read, Description ("A unique key identifying this remove file action within its product.")]
    string FileKey;
		[Read, Description ("A bit map that tells when this action will be preformed based on "
		"the following\n"
		"Hexadecimal \n Decimal \n Description \n\n"
		" 0x001 \n 1 \n Remove only when the associated component is being installed "
		"(msiInstallStateLocalor msiInstallStateSource).\n\n"
		"0x002 \n 2 \n Remove only when the associated component is being removed "
		"(msiInstallStateAbsent).\n\n"
		"0x003 \n 3 \n Remove in either of the above cases.")]
    uint16 InstallMode;
};
     
        [Locale(0x409),UUID ( "{55A2DC30-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        "The CreateFolder action creates empty folders for components set to be "
        "installed locally. The removal of these folders is handled by the "
        "RemoveFolders action. When a folder is created (and didn't already "
        "exist), it is registered with the appropriate component id.") , dynamic
        , provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_CreateFolderAction:CIM_CreateDirectoryAction
{
};
     
        [Locale(0x409),UUID("{CD7CA121-E3D2-11d2-8601-0000F8102E5F}"),
		Description("This abstract class represents any resources that are "
		"used by the MSI installer durring the course of an installation, "
		"patch or upgrade"), Abstract, MappingStrings{"Microsoft.MSI"} ] 
class Win32_MSIResource:CIM_Setting
{
};
     
        [Locale(0x409),UUID("{14575942-E3E1-11d2-8601-0000F8102E5F}"),
		Description("The PatchPackage class describes all patch packages that "
		"have been applied to this product. For each patch package, the unique "
		"identifier for the patch is provided along with information about the "
		"media image the on which the patch is located."), Provider ("MSIProv") ,
		Dynamic, MappingStrings{"Microsoft.MSI"} ] 
class Win32_PatchPackage:Win32_MSIResource
{
        [Key, Read, Description ("The unique identifier for a patch package.")] 
    string PatchID;
        [Key, Read, Description ("The product code for the product to which this patch package is applied.")] 
    string ProductCode;
};
     
        [Locale(0x409),UUID("{CD7CA120-E3D2-11d2-8601-0000F8102E5F}"),
		Description (
        "This table contains the property names and values for all defined "
        "properties in the installation. Properties with Null values are not "
        "present in the table.") , dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_Property:Win32_MSIResource
{
		[Read, Description ("The value of the property.")]
    string Value;
        [Key, Read, Description ("The name of the property.")] 
    string Property;
        [Key, Read, Description ("The product code for the product of which this property is a part.")] 
    string ProductCode;
};

     
        [Locale(0x409),UUID("{7A9E24ED-E3D2-11d2-8601-0000F8102E5F}"),
		Description("Instances of this class represent individual patches that are "
		"to be applied to a particular file and whose source reside at a specified "
		"location."), Dynamic, Provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_Patch:Win32_MSIResource
{
        [Key, Read, Description ("The FileID of the Win32_FileSpecification this patch applies to.")] 
    string File;
        [Key, Read, Description ("The position of this patch in the sequence of patches on the source media.")] 
    sint16 Sequence;
		[Read, Description ("The size of the patch in bytes.")]
    uint32 PatchSize;
		[Read, Description ("A bit flag representing patch attributes. A value of 1 "
		" indicates that the failure to apply this patch is not a fatal error.")]
    uint16 Attributes;
        [Key, Read, Description ("The product code for the product to which this patch is applied.")] 
    string ProductCode;
};

        [Locale(0x409),UUID("{DB150AA8-E3D1-11d2-8601-0000F8102E5F}"),
		Description("Instances ofthis class represent binary information (such as bitmapps, "
		"icons, executables, etc...) that are used by an installation."), Dynamic,
		Provider ("MSIProv") , MappingStrings{"Microsoft.MSI"} ] 
class Win32_Binary:Win32_MSIResource
{
        [Key, Read] 
    string Name;
		[Description("This property represents the binary data that is associated "
		"with this object."), Read]
    string Data;
		[Key, Read, Description ("The product code for the product of which this binary is a part.")] 
    string ProductCode;
};

#pragma deleteclass("Win32_Upgrade", NOFAIL)


        [Locale(0x409),UUID("{E7D29B98-E3D1-11d2-8601-0000F8102E5F}"),
		Description("Instances of this class represent instrctions for controlling both "
		"installed and uninstalled services."), Provider ("MSIProv") , Dynamic,
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_ServiceControl:Win32_MSIResource
{
        [Key, Read, Description ("A unique key identifying this service control item within its product.")] 
    string ID;
		[Key, Read, Description ("The product code for the product of which this service control is a part.")] 
    string ProductCode;
		[Read]
	string Name;
		[Read, Description ("A bit map representing the operations for which this object applies."
		" The following are the valid values \n"
		" Hexadecimal \n Decimal \n Description \n"
		" 0x001 \n 1 \n Starts the service during the StartServices action. \n\n"
		" 0x002 \n 2 \n Stops the service during the StopServices action. \\nn"
		" 0x004 \n 4 \n <reserved> \n\n"
		" 0x008 \n 8 \n Deletes the service during the DeleteServices action.\n\n"
		" The following values are only used during an uninstall \n\n "
		" Hexadecimal \n Decimal \n Description \n\n"
		" 0x010 \n 16 \n Starts the service during the StartServices action.\n\n"
		" 0x020 \n 32 \n Stops the service during the StopServices action.\n\n"
		" 0x040 \n 64 \n <reserved> \n\n"
		" 0x080 \n 128\n Deletes the service during the DeleteServices action.")] 
    string Event;
		[Read, Description ("A value of 1 in this column means to wait until the"
		" service actually completes before proceeding. This implies that the event "
		"is critical to the install, and that if the event fails the resulting error cannot be"
		" ignored. A value of 0 in this column means to wait only until the service control "
		"manager (SCM) reports that this service is in a pending state.")]
	uint16 Wait;
		[Read, Description ("A list of arguments for starting services. The arguments are "
		"separated by null characters [~]. For example, the list of arguments One, Two, and"
		" Three are listed as: One[~]Two[~]Three.")]
	string Arguments;
};

        [Locale(0x409),UUID("{023763EC-E3D2-11d2-8601-0000F8102E5F}"),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCAttribute:CIM_Setting
{
        [Key, Read] 
    string Driver;
        [Key, Read, Description ("The name of the ODBC attribute.")] 
    string Attribute;
		[Read, Description ("The value of this attribute.")]
    string Value;
};
     
        [Locale(0x409),UUID("{100985A4-E3D2-11d2-8601-0000F8102E5F}"),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCSourceAttribute:CIM_Setting
{
        [Key, Read, Description ("Token name for the data source within its package to which this attribute applies.")] 
    string DataSource;
        [Key, Read, Description ("The name of the data source attribute.")] 
    string Attribute;
		[Read, Description ("The value for this data source attribute.")]
    string Value;
};

        [Locale(0x409),UUID ( "{F3B44268-DB34-11d2-85FC-0000F8102E5F}" ),
		dynamic, provider ("MSIProv") , 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_SoftwareFeatureSoftwareElements:CIM_SoftwareFeatureSoftwareElements
{
        [key, Override("GroupComponent"), Read] 
    Win32_SoftwareFeature REF GroupComponent;
        [key, Override("PartComponent"), Read] 
    Win32_SoftwareElement REF PartComponent;
};
     
        [Locale(0x409),UUID ( "{E7CD451C-DB34-11d2-85FC-0000F8102E5F}" ),
		provider ("MSIProv") , 
		dynamic, 
		MappingStrings{"Microsoft.MSI"} ] 
class Win32_SoftwareFeatureParent:CIM_Dependency
{
        [key, Override("Dependent"), Read] 
    Win32_SoftwareFeature REF Dependent;
        [key, Override("Antecedent"), Read] 
    Win32_SoftwareFeature REF Antecedent;
};

//RuleBased("Select * From "
//			"Win32_SoftwareFeature As A "
//			"Join "
//			"Win32_Condition As B "
//			"On A.Name = B.Name")

        [Locale(0x409),UUID ( "{5016E228-DB34-11d2-85FC-0000F8102E5F}" ),
		Association,
		Provider ("MSIProv") , Dynamic,
        MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI feature with any condition or "
        "locational information that a feature may require.") ] 
class Win32_SoftwareFeatureCheck
{
		[Key, Read]
    Win32_SoftwareFeature REF Element;
		[Key, Read]
    CIM_Check REF Check;
};
     
        [Locale(0x409),UUID ( "{1E45DFA6-DB34-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI element with any condition or "
        "locational information that a feature may require.") ] 
class Win32_SoftwareElementCheck:CIM_SoftwareElementChecks
{
		[Key, Read]
    Win32_SoftwareElement REF Element;
		[Key, Read]
    CIM_Check REF Check;
};
     
// RuleBased("Select * From "
//			"Win32_SoftwareFeature As A "
//			"Join "
//			"Win32_Product As B "
//			"On A.IdentifyingNumber = B.IdentifyingNumber")

        [Locale(0x409),UUID ( "{80D071C8-DB33-11d2-85FC-0000F8102E5F}" ),
			dynamic, provider ("MSIProv"),
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ProductSoftwareFeatures:CIM_ProductSoftwareFeatures
{
        [key, Read] 
    Win32_Product REF Product;
        [key, Read] 
    Win32_SoftwareFeature REF Component;
};

//RuleBased("Select * From "
//			"Win32_Product As A "
//			"Join "
//			"Win32_Property As B "
//			"On A.IdentifyingNumber = B.ProductCode")
     
        [Locale(0x409),UUID ( "{6EBF1FC0-DB33-11d2-85FC-0000F8102E5F}" ),
		Association, 
		 Provider ("MSIProv") , Dynamic,
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ProductResource
{
		[Key, Read]
    Win32_Product REF Product;
		[Key, Read]
    Win32_MSIResource REF Resource;
};

        [Locale(0x409),UUID ( "{63ECB33C-DB33-11d2-85FC-0000F8102E5F}" ),
		Association, Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"} ] 
class Win32_ProductCheck
{
		[Key, Read]
    Win32_Product REF Product;
		[Key, Read]
    CIM_Check REF Check;
};

        [Locale(0x409),UUID ( "{0D51A84E-DB32-11d2-85FC-0000F8102E5F}" ),
		Association, Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI action with any locational information "
        "it requires.  This location is in the form of a file and/or directory "
        "specification.") ] 
class Win32_ActionCheck
{
		[Key, Read]
    CIM_Action REF Action;
        [Key, Read] 
    CIM_Check REF Check;
};

        [Locale(0x409),UUID ( "{FCD0E156-DB31-11d2-85FC-0000F8102E5F}" ),
		Association, Abstract, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI check with any setting information "
        "it requires.") ] 
class Win32_SettingCheck
{
		[Read]
    CIM_Setting REF Setting;
		[Read]
    CIM_Check REF Check;
};

        [Locale(0x409),UUID ( "{2C6811D2-DB32-11d2-85FC-0000F8102E5F}" ),
		Association, Provider ("MSIProv") , Dynamic, 
		MappingStrings{"Microsoft.MSI"}, Description (
		"This association relates a MSI Check with any locational information "
		"it requires.  The location is in the form of a file and/or directory "
		"specification.") ]
class Win32_CheckCheck
{
		[Key, Read, Description ("The Check reference represents one side of "
		"the Check.")]
	CIM_Check REF Check;
		[Key, Read, Description ("The Location reference represents the other "
		"side of the Check.")]
	CIM_Check REF Location;
};

        [Association, Locale(0x409),UUID ( "{3F3B81D4-DB34-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI feature with an action used to register "
        "and/or publish the feature") ] 
class Win32_SoftwareFeatureAction
{
		[Key, Read]
    Win32_SoftwareFeature REF Element;
		[Key, Read]
    CIM_Action REF Action;
};
     
        [Locale(0x409),UUID ( "{E40D5488-DB31-11d2-85FC-0000F8102E5F}" ),
		Association, abstract, Description (
        "This association relates an MSI feature with an action used to register "
        "and/or publish the feature") ] 
class Win32_ManagedSystemElementResource
{
};
     
        [Locale(0x409),UUID ( "{322CE0F0-DB34-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI feature with an action used to register "
        "and/or publish the feature") ] 
class Win32_SoftwareElementResource:Win32_ManagedSystemElementResource
{
		[Key, Override("Element"), Read]
    Win32_SoftwareElement REF Element;
		[Key, Override("Setting"), Read]
    Win32_MSIResource REF Setting;
};
     
        [Locale(0x409),UUID ( "{1362C2AC-DB34-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic, MappingStrings{"Microsoft.MSI"}
		, Description (
        "This association relates an MSI software element with an action that "
        "access the element.") ] 
class Win32_SoftwareElementAction:CIM_SoftwareElementActions
{
		[Key, Read]
    CIM_Action REF Action;
		[Key, Read]
    Win32_SoftwareElement REF Element;
};

//RuleBased("Select * From "
//			"Win32_FileSpecification As A "
//			"Join "
//			"Win32_Patch As B "
//			"On A.Attribute = B.Attribute")

        [Locale(0x409),UUID ( "{A51D806C-DB32-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic,
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_PatchFile:Win32_SettingCheck
{
        [key, Read] 
    Win32_FileSpecification REF Check;
        [Key, Read] 
    Win32_Patch REF Setting;
};

//RuleBased("Select * From "
//			"Win32_ODBCDriverSpecification As A "
//			"Join "
//			"Win32_ODBCAttribute As B "
//			"On A.Driver = B.Driver")

        [Locale(0x409),UUID ( "{2B306494-DB33-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic,
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCDriverAttribute:Win32_SettingCheck
{
        [Key, Read] 
    Win32_ODBCDriverSpecification REF Check;
        [Key, Read] 
    Win32_ODBCAttribute REF Setting;
};

//RuleBased("Select * From "
//			"Win32_ODBCDataSourceSpecification As A "
//			"Join "
//			"Win32_ODBCSourceAttribute As B "
//			"On A.DataSource = B.DataSource")
     
        [Locale(0x409),UUID ( "{0E5ACD14-DB33-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic,
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCDataSourceAttribute:Win32_SettingCheck
{
        [Key, Read] 
    Win32_ODBCDataSourceSpecification REF Check;
        [Key, Read] 
    Win32_ODBCSourceAttribute REF Setting;
};
     
        [Locale(0x409),UUID ( "{3A20796C-DB33-11d2-85FC-0000F8102E5F}" ),
		Provider ("MSIProv") , Dynamic, 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ODBCDriverSoftwareElement:CIM_SoftwareElementChecks
{
        [Key, Read] 
    Win32_ODBCDriverSpecification REF Check;
        [Key, Read] 
    Win32_SoftwareElement REF Element;
};

        [Locale(0x409),UUID ( "{DB91D602-DB32-11d2-85FC-0000F8102E5F}" ),
		Description (
        " The InstalledSoftwareElement association allows one to  to identify "
        "the Computer System a particular Software element is installed on. ") 
        , MappingStrings{"Microsoft.MSI"} , Provider ("MSIProv") , Dynamic] 
class Win32_InstalledSoftwareElement:CIM_InstalledSoftwareElement
{
        [Key, Min (0) , Max (1) , Description (
        "References the software element that is installed."), Read ] 
    Win32_SoftwareElement REF Software;
        [Key, Min (0) , Max (1), Description (
        "References the computer system hosting a particular software element. "
        ), Read ] 
    CIM_ComputerSystem REF System;
};

        [Association, Locale(0x409),UUID ( "{08145BE0-DB34-11d2-85FC-0000F8102E5F}" ),
		MappingStrings{"Microsoft.MSI"} , Provider (
        "MSIProv") , Dynamic] 
class Win32_ShortcutSAP
{
        [Key, Read] 
    Win32_ShortcutAction REF Action;
        [Key, Read] 
    Win32_CommandLineAccess REF Element;
};

        [Locale(0x409),UUID ( "{ED2ED490-DB33-11d2-85FC-0000F8102E5F}" ),
		Association, Provider ("MSIProv") , Dynamic, 
        MappingStrings{"Microsoft.MSI"} ] 
class Win32_ServiceSpecificationService
{
        [Key, Override("Setting"), Read] 
    Win32_ServiceSpecification REF Check;
        [Key, Override("Element"), Read] 
    Win32_Service REF Element;
};

        [Locale(0x409),UUID ( "{C170CF06-DB34-11d2-85FC-0000F8102E5F}" ),
		Description (
        " The ApplicationCommandLine association allows one to  to identify "
        "connection between an application and it's command line access point.") 
        , MappingStrings{"Microsoft.MSI"} , Provider ("MSIProv") , Dynamic] 
class Win32_ApplicationCommandLine:CIM_ServiceAccessBySAP
{
        [Key, Override("Antecedent"), Description (
        "References the application."), Read ] 
    Win32_ApplicationService REF Antecedent;
        [Key, Override("Dependent"), Description (
        "references the commandline used to access the antecedent."
        ), Read ] 
    Win32_CommandLineAccess REF Dependent;
};
