Pages

Friday, 3 August 2012

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.



Action ICEs - MSI Validation


ICE12 is used to validate that type 35 and type 51 custom actions are properly positioned with respect to the CostFinalize action in any sequence tables. Type 35 custom actions must come after the CostFinalize action, and type 51 custom actions must come before the CostFinalize action.


ICE13 checks for dialogs in the Execute Sequence tables. Dialogs can only
appear in the UI Sequence tables.


ICE26 checks the Sequence tables to make sure that all of the required actions are present. It also makes sure that no Sequence table contains an action that is disallowed for that table.

ICE27 verifies that every entry in every Sequence table is either a standard
action, a custom action, or a Dialog name. It also checks the organization of each Sequence table to be sure that actions are being performed in the proper order.


ICE28 looks at ForceReboot actions, and makes sure that they are not being
called in inappropriate places.


ICE63 checks the sequencing of the RemoveExistingProducts action. This action may be placed in several spots in the Sequence tables, but there are other spots where it is invalid.


ICE68 checks the Type column in the CustomAction table. Only some numbers
are valid custom action types. For example, a value of 82 in this column (which is not a valid custom action type) would generate an error from this ICE.


ICE72 checks the AdvtExecuteSequence table to make sure than any custom
actions it contains are type 19, 35, or 51. If this table contains other types of custom actions, advertisement may fail.


File and Registry ICEs - MSI Validation


ICE04 checks to make sure that all files have sequence numbers that make sense when compared to the information in the Media table. It finds the largest LastSequence value in the Media table, and makes sure that the value for the Sequence column in every row of the File table is less than this value.


ICE30 checks that the same file is never installed in the same directory by two
different components in the same Installer package (doing so would break the reference counting scheme of the Installer). It considers both long and short file names, and looks at what will happen if Condition columns evaluate to either true or false.


ICE33 validates that all entries in the Registry table should be in that table. Some Registry information should be made through the more specialized tables in order to support advertisement and install-on-demand. This includes information that belongs in the Extension, ProgId, Verb, MIME, Class, Typelib and AppId tables. If this ICE detects any problems it will tell you which entries you should move and which tables you should move them to.


ICE42 inspects rows in the Class table for InprocServer32 Registry entries. It
makes sure that these rows do not refer to an .exe file in the File table, because inprocess servers must be .dll files.


ICE49 inspects the data type of default Registry entries (those with a null in the Name column). Such entries must use the REG_SZ data type.


ICE53 presents a warning if the Registry table tries to modify the Installer policy by writing to keys underneath Software\Policies\Microsoft\Installer.
Any changes made to these keys are better made by setting the values of the properties that control the Installer’s actions.


ICE60 looks at file version information in the File table. If a file is not a font and it has a version, then it must also have a language. If you ignore warnings from this ICE, then repairs will tend to reinstall files needlessly. That’s because the file on disk will always have a language, even if the entry in the File table does not. The Installer will see this as the installed language not matching the language in the package, and so will reinstall the file.


ICE70 checks Registry entries that write integers to make sure that the integers are specified properly. For example, ##5 or #x12A4 are valid, but #zzy27 is not.