What is InstallShield Multiplatform (ISMP) evidence?
Summary
This article explains how InstallShield Multiplatform (ISMP) package evidence is captured by the FlexNet Inventory Agent.
Synopsis
InstallShield Multiplatform is a package installation technology developed by Revenera and used by various software publishers to developer software installers. It has since been superseded by InstallAnywhere. Formerly, ISMP was known as InstallShield Universal.
To track product installations, InstallShield Universal uses the Vital Product Data (VPD) registry.
ISMP versions prior to 10.5 store VPD data in a file named vpd.properties. Data is stored in a pipe ("|") separated text file format. For example:
IBM.WICS|4|3|0|0|WICS 4.3.0|1=WebSphere ICS|IBM WebSphere InterChange Server 4.3.0|WebSphere ICS|IBM Corporation|http://www.ibm.com|4.3.0|/opt/IBM/WebSphereICS|0|0|1|IBM.WebSphere.ICS|4|3|0|0|WICS 4.3.0|1|0|false| |true|3|IBM.WICS|4|3|0|0|WICS 4.3.0|1
ISMP versions 10.5 and later store VPD data in a HSQL database. While the vpd.properties file is still used, it now only contains details of the HSQL database. A file named vpd.script contains the product details in the form of SQL statements required to create and populate an INSTALLED_SOFTWARE_OBJECT database table. For example:
CREATE TABLE INSTALLED_SOFTWARE_OBJECT(INSTALLED_SOFTWARE_OBJECT_ID INTEGER NOT NULL PRIMARY KEY,SOFTWARE_OBJECT_UID VARCHAR(255) NOT NULL,INSTALL_LOCATION VARCHAR(255) NOT NULL,INSTANCE INTEGER NOT NULL,VERSION VARCHAR(255),INSTALL_STATUS INTEGER,ACTIVE VARCHAR(255),COMPATIBLE_VERSION VARCHAR(255),PUBLICLY_SHARED VARCHAR(255),VENDOR_NAME VARCHAR(255),VENDOR_WEBSITE VARCHAR(255),NAME VARCHAR(255),DISPLAY_NAME VARCHAR(255),DESCRIPTION VARCHAR(255),UNINSTALL_INFORMATION VARCHAR(255),ISPRODUCT CHAR(5) DEFAULT 'false' NOT NULL,INCLUDES_UNINSTALLER_ENGINE CHAR(5) DEFAULT 'false' NOT NULL,ENGINE_VERSION VARCHAR(255) DEFAULT '1.0.0',CONSTRAINT INSTALLED_SO_ORDER UNIQUE(SOFTWARE_OBJECT_UID,INSTALL_LOCATION,INSTANCE))
INSERT INTO INSTALLED_SOFTWARE_OBJECT VALUES(1,'9e19032d537d59151b616e1aaa4582a8','/opt/IBM/MBFE',1,'5.0.0.2',3,'true',NULL,'false','IBM Corporation','http://www.ibm.com','rootbean','IBM WebSphere Message Broker File Extender',NULL,'"_uninst" "uninstall.jar" "uninstall.dat" "assembly.dat" "run.inf" "/root/InstallShield/Universal/common/Gen1/engine/1.0/engine.jar" "/root/InstallShield/Universal/common/Gen1/engine/1.0/ext" "" ""','true','true','1.0.1')
INSERT INTO INSTALLED_SOFTWARE_OBJECT VALUES(2,'c0e608ab498ac40d4d04eca1bb347ab2','/opt/IBM/MBFE',1,'',3,'true',NULL,'false',NULL,NULL,'JPlugin','File plug-in nodes runtime',NULL,NULL,'false','false','1.0.1')
INSERT INTO INSTALLED_SOFTWARE_OBJECT VALUES(3,'e84e5e4a2f4bf7b692bbe820f9dd8acc','/opt/IBM/MBFE/eclipse',1,'',3,'true',NULL,'false',NULL,NULL,'Eclipse','File plug-in nodes Eclipse components',NULL,NULL,'false','false','1.0.1')
The FlexNet Inventory Agent looks for vpd.properties and vpd.script files using the following techniques:
- All operating systems:
- Under directories specified by the IncludeDirectory preference.
- $HOME/vpd.properties
- $HOME/InstallShield/Universal/
- Windows operating systems:
- %SYSTEMROOT%/vpd.properties
- Under the %CommonDir%\InstallShield\Universal\ directory
- UNIX-like operating systems:
- /usr/lib/objrepos/vpd.properties
- /usr/lib/vpd.properties
- /InstallShield/VitalProductData/vpd.properties
- Under the /usr/lib/objrepos/InstallShield/Universal directory
- Under the /usr/lib/InstallShield/Universal directory
- Under the /InstallShield/VitalProductData/InstallShield/Universal directory
Where:
- $HOME is the executing user's home directory (%HOMEPATH% on Windows)
- %SYSTEMROOT% is the Windows system root.
- %CommonDir% is the CommonFilesDir in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion.
Once a vpd.properties file is discovered, the agent parses details from it into package evidence records.
Relevant pipe-separated fields are:
- Package name: field 8
- Version: fields 2, 3, 4 and 5 as "..|Major|Minor|Update|Maintenance|.."
- InstallLocation: field 13
- ProductCode: field 1
- Publisher: field 10
- Summary: field 9
The example above would produce the following details in an inventory NDI file:
<Package Name="IBM WebSphere InterChange Server 4.3.0" Evidence="ISMP" Version="4.3.0.0">
<Property Name="InstallLocation" Value="/opt/IBM/WebSphereICS"/>
<Property Name="ProductCode" Value="IBM.WICS"/>
<Property Name="Publisher" Value="IBM Corporation"/>
<Property Name="Summary" Value="WebSphere ICS"/>
</Package>
Discovered vpd.script files are also parsed into package evidence records. Values taken from the INSTALLED_SOFTWARE_OBJECT table are:
- Package name: DISPLAY_NAME
- Version: VERSION
- InstallLocation: INSTALL_LOCATION
- ProductCode: SOFTWARE_OBJECT_UID
- Publisher: VENDOR_NAME
- Summary: DESCRIPTION
The example above would produce the following details in an inventory NDI file:
<Package Name="IBM WebSphere Message Broker File Extender" Evidence="ISMP" Version="5.0.0.2">
<Property Name="InstallLocation" Value="/opt/IBM/MBFE"/>
<Property Name="ProductCode" Value="9e19032d537d59151b616e1aaa4582a8"/>
<Property Name="Publisher" Value="IBM Corporation"/>
</Package>