2.2.4.2.2 ProductInfo (Opcode 4)

Operation code 4 provides information about the product. ProductInfo includes the following arguments:

ProductKey: ASCII character string. Represented as a GUID, ProductKey is a unique identifier for a particular product release. Letters used in this GUID MUST be uppercase. Two different versions of a product MUST NOT have the same ProductKey.

ProductName: A string (array) of either ASCII characters or Unicode characters.

PackageName: A string (array) of either ASCII characters or Unicode characters.

Language: 32-bit signed integer. The value is an LCID, identical in value to LangId in the header.

Version: 32-bit signed integer. Conversion of authored ProductVersion string property in the form major.minor.build, where major and minor max is 255 and build max is 65535.

The algorithm to compute the version is as follows. Given a version A.B.C, the integer representation is ((A << 24) | (B << 16) | C. Note that A and B <= 0xFF and that C <= 0xFFFF).

Assignment: 32-bit signed integer. The value MUST be 0 when the product is on a per-user basis or 1 when the product is on a per-machine basis.

ObsoleteArg: 32-bit signed integer. MUST be 0.

ProductIcon: A string (array) of ASCII characters. This is the ARPPRODUCTICON property as described in the [MSDN-Production] Windows Installer documentation.

PackageMediaPath: A string (array) of either ASCII characters or Unicode characters. If the installation package is not at the root of the source media, this value provides the relative path to the application installation package on media.

If "e:" represents a removable media drive and example.msi is located at e:\apps\app1\example.msi, then the value of PackageMediaPath is "\apps\app1\". This value relates to the functionality described in the MEDIAPACKAGEPATH Property reference.

PackageCode: ASCII character string. Represented as a GUID, PackageCode specifies a particular Windows Installer package. The package code associates an .msi file with an application or product and can also be used for the verification of sources.

The product and package codes are not interchangeable.

null argument (1)

null argument (2)

InstanceType: 32-bit signed integer. When the installation is accomplished via a multi-instance transform, the value MUST be 1. Otherwise, the value MUST be 0. Installing multiple instances with instance transforms is described further in [MSDN-InstType].

LUASetting: 32-bit signed integer. The value MUST be 1 when the product supports UAC updates. Otherwise, the value MUST be 0. The default value is 0.

For details, see User Account Control (UAC) Patching [MSDN-LUASetting].

RemoteURTInstalls: 32-bit signed integer. The value MUST be 0.

ProductDeploymentFlags: 32-bit signed integer. The value MUST be one of the following values.

Name

Meaning

Value

MSIDEPLOYFLAGS_UNKNOWN

Deployment compliance state is unknown.

0

MSIDEPLOYFLAGS_GPDEPLOY

Group Policy deployed app (in-proc advertisement first).

1

MSIDEPLOYFLAGS_UAC

MSI performs UAC elevation or package is LUA compliant (true per-user).

2

MSIDEPLOYFLAGS_INSTALLER_DETECTED

Installer detected or indeterminate.

3

MSIDEPLOYFLAGS_INSTALLPERUSER

Performing per-user installation for a dual mode package.

4

MSIDEPLOYFLAGS_INSTALLPERUSER_GPDEPLOY

Group Policy deployed dual-mode package is being installed per-user.

5

MSIDEPLOYFLAGS_INSTALLPERUSER_INSTALLER_DETECTED

Installer detected dual-mode package is installer detected.

6