Pages

Friday 3 August 2012

MSI Private Properties

Following are the list of Private Properties


Property
Description
AdminProperties
A semicolon-delimited list of properties that should be “filled in” when an administrative install is performed. When the user later installs from the
Share point, this list is used instead of the values originally in the Installer database.
AdminToolsFolder
Full path to the directory that stores a user’s administrative tools (for example, Microsoft Management Console files).
AdminUser
Set to True if the user has administrative privileges. Always set to True if running on Windows 95 or Windows 98.
Alpha
Set to the processor level if the Installer is running on an Alpha computer.
AppDataFolder
Full path to the directory that stores the user’s application data.
BorderSide
Width of a Windowsdialog box borders in pixels.
BorderTop
Height of a Windows dialog box borders in pixels.
CaptionHeight
Height of a Windows caption in pixels
ColorBits
Color depth for the current video settings
CommonFilesFolder
Full path to the directory that stores the user’s common files.
CommonAppDataFolder
Full path to the directory that stores the user’s application data.
ComputerName
Name of the computer where the installation is running. Set by the Installer by calling the GetComputerName API.
CostingComplete
This property is set to zero by the CostFinalize action. The Installer sets it to 1 when costing is completed.
Date
Current date as a text string.
DefaultUIFont
The name of the TextStyle to use by default on controls. You should set this in the Property table.
DesktopFolder
Full path to the current user’s desktop.
DiskPrompt
String that the Installer uses to prompt for a new source disk.
EnableUserControl
Setting this to 1 has the effect of making all public properties unrestricted.
FavoritesFolder
Full path to the Favorites folder of the current user.
FontsFolder
Full path to the system font’s folder.
Installed
Set to 1 if the product has already been installed for the current user, or on a per-machine basis. Useful to detect when you’re in maintenance mode instead of installing for the first time.
Intel
Set to the processor level (4 for 486, 5 for Pentium, etc.) if the installation is running on an
Intel-based computer.
IsAdminPackage
Set to 1 if the current installation is being run from a package created by an administrative installation.
LeftUnit
Set to 1 to display units to the left of numbers in such things as free space displays.
LocalAppDataFolder
Full path to the application data folder for nonroaming applications.
LogonUser
Name of the current user, set by a call to the
GetUserName API.
NetHoodFolder
Full path to the Network Neighborhood folder. Although this property has been dropped from the most recent SDK documentation, it still works.
Manufacturer
Manufacturer of the product. You must set this property’s value in the Property table.
MyPicturesFolder
Full path to the user’s My Pictures folder.
OLEAdvtSupport
Set to True if the current system supports installon- demand and advertisement.
OutOfDiskSpace
Set to True if any disk in the system doesn’t have enough free disk space for the installation to complete.
OutOfNoRbDiskSpace
Set to true if any disk in the system doesn’t have enough free disk space for the installation to complete even if rollback is disabled.
PersonalFolder
Full path to the current user’s Personal folder.
PhysicalMemory
Megabytes of actual RAM installed in the current computer.
PIDTemplate
String used as a template for the PIDKEY property.
Preselected
Set to 1 when the selection dialog has already been processed.
PrintHoodFolder
Full path to the user’s Printer Neighborhood folder. Although this property has been dropped from the most recent SDK documentation, it still works.
PrimaryVolumePath
Path portion of the PRIMARYFOLDER property
PrimaryVolumeSpaceAvailable
Number of bytes available on the primary volume, in units of 512 bytes.
PrimaryVolumeSpaceRequired
Number of bytes required by all selected features on the primary volume, in units of 512 bytes.
PrimaryVolumeSpaceRemaining
Number of bytes remaining after installation on the primary volume, in units of 512 bytes.
Privileged
Set to 1 when the installation is running with administrative privileges.
ProductCode
GUID that identifies this product. You must set a value for this property in the Property table.
ProductID
Set to the product ID by the ValidateProductID action.
ProductLanguage
Language ID to use for internal Installer strings displayed to the user.
ProductName
Name of the product being installed. You must set a value for this property in the Property table.
ProductState
Will return –1 if the product is neither advertised nor installed, 1 if the product is advertised but not installed, 2 if the product is installed but for a different user, or 5 if the product is already installed for the current user.
ProductVersion
Product version represented as a string in the format 00.00.0000. You must set a value for this property in the Property table.
ProgramFilesFolder
Full path to the user’s Program Files folder.
ProgramMenuFolder
Full path to the user’s Program folder in the Start menu.
RecentFolder
Full path to the current user’s Recent folder. Although this property has been dropped from the most recent SDK documentation, it still works.
RemoteAdminTS
Set to 1 when the system is configured for remote administration via Windows Terminal Services.
ReplacedInUseFiles
Set to 1 if the Installer replaces a file that’s in use (thus requiring a reboot to finish the installation).
RestrictedUserControl
Set to 1 if the user can’t change the value of restricted public properties.
RollbackDisabled
Set to 1 whenever rollback has been disabled by any means.
ScreenX
Width of the screen (in pixels).
ScreenY
Height of the screen (in pixels).
SecureCustomProperties
Semicolon-delimited list of public properties that should be treated as restricted public properties.
SendToFolder
Full path of the Send To folder for the current user.
ServicePackLevel
Major revision number of the most recent service
pack applied to the operating system
ServicePackLevelMinor
Minor revision number of the most recent service pack applied to the operating system.
SharedWindows
Set to 1 when the system is operating in shared
Windows mode.
ShellAdvtSupport
Set to 1 if the operating system supports advertising.
SourceDir
The root directory of the current installation package.
StartMenuFolder
Full path to the current user’s Start Menu folder
StartupFolder
Full path to the current user’s Startup folder.
System16Folder
Full path to the Windows System folder.
SystemFolder
Full path to the Windows System32 folder.
SystemLanguageID
Default language for the system. The Installer sets this by calling the GetSystemDefaultLangID API.
TempFolder
Full path to the user’s Temp folder
TemplateFolder
Full path to the user’s Templates folder
TerminalServer
Set to 1 when the Installer is running on Windows
Terminal Server.
Time
Current time in the format HH:MM:SS. 
TTCSupport
Set to 1 if the system supports .ttc (TrueType
Font Collection) files.
UILevel
2 for none, 3 for basic, 4 for reduced, or 5 for the full user interface.
UpdateStarted
Set to 1 when changes have been made to the user’s system.
UpgradeCode
A GUID representing allowable upgrades.
UserLanguageID
The default language ID for the current user. The
Installer sets this by calling the GetUserDefaultLangID API.
Version9X
If running on Windows 95 or 98, this is set to 100 times the major version of Windows plus the minor version of Windows.
VersionDatabase
Numeric version of the Installer database for the package being installed.
VersionNT
If running on Windows NT or Windows 2000, this is set to 100 times the major version of Windows plus the minor version of Windows.
VirtualMemory
Size of the current page file in megabytes.
WindowsBuild
Build number of the operating system. 
WindowsFolder
Full path to the Windows folder.
WindowsVolume
Root of the drive containing the Windows folder.



RESTRICTED PUBLIC Properties


Following are the list of Restricted Public Properties


PROPERTY
DESCRIPTION
ACTION
Reflects the top-level action being performed. Will be either INSTALL, ADVERTISE, or ADMIN.
AFTERREBOOT
Set to 1 after a reboot initiated by the ForceReboot action
ALLUSERS
The ALLUSERS property determines whether a per-machine or per-user installation is done on Windows NT or Windows 2000 (it has no effect on Windows 95 or Windows 98). By default, all installations are per-user. If ALLUSERS is set to 1 and the user has administrative   privileges, a per-machine installation is performed; if the user does not have administrative privileges, an error is returned. If ALLUSERS is set to 2 and the user has administrative privileges, a per-machine installation is performed; if the user does not have  administrative privileges, a per-user installation is performed.
EXECUTEACTION
Set to the name of the top-level action being executed, for example INSTALL or ADMIN.
EXECUTEMODE
Set to None for a dry run that does not actually make any changes to the user’s system. Set to Script to run the installation script. Any other value defaults to the Script setting.
FILEADDDEFAULT
Comma-delimited list of files to be installed in their default state.
FILEADDLOCAL
Comma-delimited list of files to be installed locally.
FILEADDSOURCE
Comma-delimited list of files to be installed to run from source.
INSTALLLEVEL
The level for which features are selected to install by default. Defaults to 1 if not set.
LIMITUI
Set to 1 to limit the user interface to the Basic level.
LOGACTION
Semicolon-separated list of actions for which action data messages will be logged.
NOCOMPANYNAME
Set this to 1 to suppress the Installer’s automatic filling in of the COMPANYNAME property. Useful if your application needs to be sure it collects the current company name itself.
NOUSERNAME
Set this to 1 to suppress the Installer’s automatic filling in of the USERNAME property. Useful if your application needs to be sure it collects the current username itself.
PATCH
Full path of the current patch package (if any).
PRIMARYFOLDER
The main directory for the installation.
PROMPTROLLBACKCOST
Specifies how the installer should handle low-disk conditions if running with no UI or the basic UI. Set to P to prompt the user to disable rollback, D to disable rollback without prompting, or F to fail with a warning that there is not enough disk space.
REBOOT
This property allows you to control some of the reboot-prompting behavior. If set to “Force,” the Installer automatically prompts for a reboot after install. If set to “Suppress,” the Installer doesn’t prompt for a reboot unless it executes a ForceReboot action. If set to “ReallySuppress,” the Installer doesn’t prompt for a reboot even for a ForceReboot action.
REINSTALL
Comma-delimited list of features to be reinstalled.
REINSTALLMODE
A string of letters showing the actions to be performed by a reinstall. The default is “omus.”
RESUME
Set to 1 when the current installation is a resumption of a previously suspended installation.
SEQUENCE
Specifies the name of a table to be used by the SEQUENCE action.
SHORTFILENAMES
Set this property to 1 to force the Installer to use short names for files and directories.
TRANSFORMS
List of transforms to be applied during the installation.
TRANSFORMSATSOURCE
Set this property to 1 to indicate that transforms are stored at the root directory of the installation.
TRANSFORMSSECURE
Set to 1 to cache transforms in a location where the user does not have write access.
































































































PUBLIC Properties - MSI

Property                                                                             

Description
ADVERTISE
A comma-delimited list of features to be advertised, or the value “All.”

ADDDEFAULT
A comma-delimited list of features to be installed in their default state.

ADDLOCAL
A comma-delimited list of features to be installed locally.
ADDSOURCE
A comma-delimited list of features to be installed to run from source.
ARPAUTHORIZEDCDPREFIX
URL of the update channel for the application.
ARPCOMMENTS
Add/Remove Control Panel comments.

ARPCONTACT
Add/Remove Control Panel contact name.

ARPHELPTELEPHONE
Phone number for technical support.
ARPHELPLINK
URL for technical support.
ARPINSTALLLOCATION
Full path to the application’s primary folder, displayed by the Add/Remove Control Panel applet.
ARPNOREPAIR
If set to 1, disables the repair button in Add/Remove Control Panel.
ARPPRODUCTICON
Foreign key to the Icon table specifying the icon to display in Add/Remove Control Panel.
ARPREADME
Add/Remove Control Panel readme information.
ARPSIZE
Add/Remove Control Panel size of application in kilobytes.
ARPSYSTEMCOMPONENT
If set to 1, the application will not be displayed by the Add/Remove Control Panel applet.
ARPURLINFOABOUT
URL for information on the product.

ARPURLUPDATEINFO
URL for information about product updates.

ARPNOMODIFY
If set to 1, disables Add/Remove Control
Panel repair functionality.

ARPNOREMOVE
If set to 1, disables Add/Remove Control Panel remove functionality.
AVAILABLEFREEREG
Desired bytes free in the Registry after calling the AllocateRegistrySpace action.

CCP_DRIVE
Root path of the volume to be searched by the RMCPPSearch action.

COMPADDLOCAL
Comma-delimited list of Component IDs for components to be installed locally.
COMPADDSOURCE
Comma-delimited list of Component IDs for components to be installed to run from the source media.
COMPANYNAME
Name of the company of the user performing the installation. If this isn’t set by another method, the Installer will read the value from the Registry.
DISABLEADVTSHORTCUTS
If set to 1, the Installer will generate regular shortcuts instead of advertised shortcuts.
DISABLEMEDIA
If set to 1, prevents the user from registering a different copy of the installation source. Useful if you are setting up an administrative source and want to ensure that all installs are from this source.
DISABLEROLLBACK
Set to 1 to disable all rollback processing, including the generation of the rollback script.
PATCHNEWPACKAGECODE
New Package code to set for a product after a patch is installed.
PATCHNEWSUMMARYCOMMENTS
New comments property for a product after a patch is installed.
PATCHNEWSUMMARYSUBJECT
New subject property for a product after a patch is installed.
PIDKEY
The part of the product ID entered by the user.
REBOOTPROMPT
If set to S or Suppress, the Installer automatically reboots at each reboot prompt, without actually prompting the user.
REMOVE
Comma-delimited list of features to be removed.
ROOTDRIVE
Default drive for the installation.
SOURCELIST
Semicolon-delimited list of available source
paths for the installation.
TARGETDIR
Root location where the Installer package will be copied by an administrative installation.
USERNAME
Name of the user performing the installation. If this isn’t set by another method, the Installer will read the value from the Registry.


Miscellaneous ICEs - MSI Validation


ICE07 checks that all fonts are being installed into the Fonts folder on the user’s computer.


ICE15 verifies the necessary reciprocal relationship between the MIME table
and the Extension table. Every entry in the MIME table must refer to an entry in the Extension table in its Extension_ column. The referenced entry in the Extension table must refer back to that same entry in the MIME table through its MIME_ column.


ICE25 checks merge module dependencies. It checks to be sure that all of the
merge modules listed in the ModuleDependency table are present, and that none of the merge modules listed in the ModuleExclusion table are present.

ICE29 verifies that all stream names within the Installer package are unique,
even after possible name truncation (the Installer stores a maximum of 62 characters for a stream name).


ICE36 checks the database for “icon bloat”—that is, for icons that are stored in the database but that are never used anywhere during the installation. If this ICE detects unused icons, you should remove them to shrink your Installer package.


ICE39 validates the Summary Information Stream in the database. It checks to make sure that all of the required properties are present in the stream, and that they have the appropriate data types.


ICE40 does three miscellaneous validations:
• It checks to be sure an Error table is present in the database.
• It checks the Property table to make sure you have not defined a property
named REINSTALLMODE.
• It checks the RemoveIniFile table to be sure that any Delete Tag entries specify the tag to delete.


ICE41 checks the Class and Extension tables to make sure that they do not conflict with the FeatureComponent table. The Class and Extension tables specify the Component and Feature for each row, and this information must match the associations between components and features in the FeatureComponent table.


ICE43 validates that non-advertised shortcuts refer to components that use a
Registry entry in HKEY_CURRENT_USER as their key path.


ICE45 compares Bit Field columns to the bit fields that are defined for the current release of the Installer. It makes sure that none of the bits that are currently reserved is set to 1. It performs this check in these tables:
• BBControl
• Control
• Dialog
• Feature
• File
• MoveFile
• ODBCDataSource
• Patch
• RemoveFile
• ServiceControl
• ServiceInstall
• TextStyle




ICE48 looks at the Directory table, checking for paths that are hard-coded to
local drives (for example, c:\Temp). Such paths can cause problems because the target machine won’t necessarily have such a path available. This is not a fatal error, because in some cases (for example, when installing to computers where you control the directory structure) this may be acceptable.


ICE50 warns you if you have an icon stored in files that do not have the extension .exe or .ico. Such icons won’t be correctly displayed by Windows. It also warns you if you have an icon for a shortcut that does not have the same extension as the target for that shortcut, because this would cause the shortcut to have an incorrect context menu.


ICE51 checks for problems with font titles. Fonts stored in ttf or ttc files (True- Type fonts) should have a null value in the FontTitle column of the Font table, because these fonts have a name embedded directly in the font file. Fonts stored in other types of files (such as fon files) should have an entry in the FontTitle column of the Font table, because these fonts do not contain embedded names.


ICE55 validates that all files and other objects referenced in the LockObject column of the LockPermissions table actually exist in the installation.


ICE56 checks the Directory table for several possible problems:
• There should be a single root directory.
• The root directory should be the TARGETDIR property.
• The SourceDir property should occur in the DefaultDir column.


ICE58 checks to make sure there are not too many entries in the Media table.
The Media table is limited to 80 rows.


ICE59 verifies that advertised shortcuts belong to components that are installed by the target feature of the shortcut. If this ICE fails, then advertised shortcuts will not function properly. Instead, they will launch the Installer to install the necessary component, but because the component isn’t associated with the feature that the shortcut calls the Installer will be unable to locate it.


ICE61 inspects the Upgrade table to make sure that upgrades will not try to
remove themselves or perform other illegal operations.


ICE62 checks the IsolatedComponent table for entries that might cause unexpected behavior. For example, it will detect isolated-shared components that are not properly set up for refcounting.


ICE64 checks for directory entries that will not be properly removed if an application is uninstalled.


ICE65 validates the format of entries in the Environment table.


ICE66 checks the database version (contained in the PageCount property of the Summary Information Stream) to make sure that it does not conflict with other information in the database. For example, the Upgrade table is processed by the version 1.1 Installer but not the version 1.0 Installer, and so should not occur in version 1.0 Installer databases.


ICE67 checks that the target of a non-advertised shortcut belongs to the same
component as the shortcut itself.


ICE71 validates that the Media table contains a row where the DiskID column
has a value of 1. This entry is necessary because the Installer itself always assumes that the .msi package is on disk 1.


ICE73 checks the product code, package code, and upgrade code in your
Installer database to make sure that these codes do not match any of those used in the Windows Installer samples. Copying the samples without changing the codes they contain is a common mistake, but breaks the rule that Installer packages should not reuse product, package, or upgrade codes from another product.


Dialog ICEs - MSI Validation


ICE17 checks for some common problems with the Control table, including the
following:


• PushButton controls without entries in the Event table
• Bitmap or Icon controls without entries in the Binary table
• RadioButtonGroup, ListBox, ComboBox, or ListView controls without
entries in the corresponding tables


ICE20 verifies that required dialogs are present and that they have the required controls. For example, there must be a FilesInUse dialog box and it must have a Listbox control and three PushButton controls with specific properties set.


ICE23 checks that the tab order is correct for every dialog. That is, it makes sure that there is a Control_First control specified for every dialog, and that the Control_Next properties for each dialog form a single closed loop.


ICE31 validates that any text styles used in the Control table are actually defined in the TextStyle table.


ICE34 checks for inconsistencies in the RadioButton table and the corresponding RadioButtonGroup controls. For example, it makes sure that the default value of the control is one of the values listed in the RadioButton table.


ICE44 checks the NewDialog, SpawnDialog and SpawnWaitDialog rows in the
ControlEvent table to be sure that these rows reference dialogs that actually exist in the Dialog table.


Property ICEs - MSI Validation


ICE05 checks to make sure that required properties, including ProductName, ProductLanguage, ProductVersion, ProductCode, and Manufacturer, are present in the database.


ICE16 checks the length of the ProductName property to make sure it does not
exceed the maximum allowed 63 characters.


ICE24 checks the data types of the ProductCode, ProductVersion, and Product-
Language properties.


ICE46 looks at the database for properties that differ only in case (for example, “MyProperty” and “myProperty”). Because the Installer is case-sensitive, such properties are treated as two distinct properties. This is usually not what the developer intended. If you really did want to have separate MyProperty and myProperty properties, you can ignore the warnings from this ICE.


ICE52 checks for private properties in the AppSearch table. All properties in the AppSearch table must be public properties (that is, their names must be entirely upper case).


ICE69 inspects strings of the Formatted data type, looking for [$componentkey] substrings. These substrings must refer to the same component that is referenced in the Component column of the table being inspected.