9.105 GET_PRODUCT_ATTRIBS
This BIF lists an installed product's attributes. Use and understanding of its return values requires knowledge of Windows Installer which you may obtain from the Internet. Indeed there are references to C header files in this description that may assist in understanding, and to give you a starting point in your search for further knowledge. LANSA cannot provide this to you.
Arguments
No | Type | Req/ Opt | Description | Min Len | Max Len | Min Dec | Max Dec |
|---|---|---|---|---|---|---|---|
1 | A | O | Upgrade code (defaults to the UPCD session value) Requires surrounding {} and hyphen delimiters adding up to 38 bytes. For example, {7121782D-DD4E-4E53-A83E-DFFE86AE6995} | 38 | 38 |
Return Values
No | Type | Req/ Opt | Description | Min Len | Max Len | Min Dec | Max Dec |
|---|---|---|---|---|---|---|---|
1 | A | R | Return Code: OK – Upgrade Code found | 2 | 2 | ||
2 | List | R | Product Attributes Only contains entries if return code is OK or OV. All attributes are returned. If an attribute is not valid in the current context then the Attribute Validity is set to ER and the Attribute Value is set to the API Error Code. Refer to MsiGetProductInfoEx() error codes for error code reason. List structure is flexible with only these requirements: NCHAR/NVARCHAR fields preferably with *LC attribute Field 1, NCHAR or NVARCHAR =Attribute Id; Field 2, NCHAR or NVARCHAR =Attribute Value; Field 3, Alpha(2)=Attribute Validity: | 1 | 2147483647 | ||
3 | List | O | Patch Attributes If the Patch List is provided then Patch Attributes are listed. Only contains entries if Return Code is OK or OV. All attributes are returned. If an attribute is not valid in the current context then the Attribute Validity is set to ER. And the Attribute Value is set to the API Error Code. Refer to MsiGetPatchInfoEx () error codes List structure is flexible with only these requirements: NCHAR/NVARCHAR fields preferably with *LC attribute Field 1, NCHAR or NVARCHAR =Attribute Id; | 1 | 2147483647 |
Notes:
This Built-In Function lists all products that are related to the Upgrade Code. The current Windows Installer documentation implies that there should only be one, but the code will list all products that are returned.
Products installed across all users in the system are listed. You may not have access rights to the Upgrade Code you have specified.
Attributes may be added to the list, so do not expect them in any particular order or even that the one you are looking for is returned. If the code lists a value, it will at least set the attribute return code to ER, it will not omit it from the list.
References are made below to attributes that are defined winerror.h and msi.h which are C header files.
Product Attributes
UpgradeCode - 38 byte GUID (Input value, but as it is optional the actual value used is returned in the list).
For each Product related to the Upgrade Code the following are returned:
ProductCode – 38 byte GUID
InstallContext – a value in the enumeration MSIINSTALLCONTEXT
SID – Security Identifier of the account under which this product instance exists.
The following values are easily mapped to the Attribute Identifier returned. For example, INSTALLPROPERTY_INSTALLEDPRODUCTNAME returns InstalledProductName. Listing the value used by C will enable you to search the Web for what the attribute means.
INSTALLPROPERTY_INSTALLEDPRODUCTNAME,
INSTALLPROPERTY_PACKAGENAME ,
INSTALLPROPERTY_TRANSFORMS ,
INSTALLPROPERTY_LANGUAGE ,
INSTALLPROPERTY_PRODUCTNAME ,
INSTALLPROPERTY_ASSIGNMENTTYPE ,
INSTALLPROPERTY_INSTANCETYPE ,
INSTALLPROPERTY_AUTHORIZED_LUA_APP ,
INSTALLPROPERTY_PACKAGECODE ,
INSTALLPROPERTY_VERSION ,
INSTALLPROPERTY_PRODUCTICON ,
// Product info attributes: installed information
INSTALLPROPERTY_INSTALLEDPRODUCTNAME ,
INSTALLPROPERTY_VERSIONSTRING ,
INSTALLPROPERTY_HELPLINK ,
INSTALLPROPERTY_HELPTELEPHONE ,
INSTALLPROPERTY_INSTALLLOCATION ,
INSTALLPROPERTY_INSTALLSOURCE ,
INSTALLPROPERTY_INSTALLDATE ,
INSTALLPROPERTY_PUBLISHER ,
INSTALLPROPERTY_LOCALPACKAGE ,
INSTALLPROPERTY_URLINFOABOUT ,
INSTALLPROPERTY_URLUPDATEINFO ,
INSTALLPROPERTY_VERSIONMINOR ,
INSTALLPROPERTY_VERSIONMAJOR ,
INSTALLPROPERTY_PRODUCTID ,
INSTALLPROPERTY_REGCOMPANY ,
INSTALLPROPERTY_REGOWNER ,
INSTALLPROPERTY_INSTALLEDLANGUAGE ,
INSTALLPROPERTY_PRODUCTSTATE ,
INSTALLPROPERTY_LASTUSEDSOURCE ,
INSTALLPROPERTY_LASTUSEDTYPE ,
INSTALLPROPERTY_MEDIAPACKAGEPATH ,
INSTALLPROPERTY_DISKPROMPT,
For example, following is a list of a few of the attributes returned for an example Product. Note that the Attribute Value field length was only 30 so a number of attributes, such as UpgradeCode, have a status of OV. LANSA has implemented the standard behavior of truncating the value:
Patch Attributes
Each of the attributes will be listed starting with the Patch Code. When a Patch Code entry repeats, its the start of another patch. There can be many patches in some products, such as the Microsoft Windows product itself, so it's advisable to use a dynamic list.
PatchCode – 38 byte GUID
INSTALLPROPERTY_LOCALPACKAGE,
INSTALLPROPERTY_PATCHTYPE,
INSTALLPROPERTY_TRANSFORMS,
INSTALLPROPERTY_INSTALLDATE,
INSTALLPROPERTY_UNINSTALLABLE,
INSTALLPROPERTY_PATCHSTATE,
INSTALLPROPERTY_LUAENABLED,
INSTALLPROPERTY_DISPLAYNAME,
INSTALLPROPERTY_MOREINFOURL
