SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
W H I T E PA P E R




                     MSI Installation Design Issues and
                     Best Practices
                     by Robert Dickau
                     Principal Technical Training Writer, Flexera Software
MSI Installation Design Issues and
    Best Practices
    Introduction                                                    view enables you to edit the features, components, and
    To avoid common errors, there are some techniques               component data used by your project; the Registry view
    and design issues that you should be aware of when              enables you to modify the registry data installed by your
    working with different parts of the Windows Installer (MSI)     installation program; and the Direct Editor view gives you
    technology. This white paper provides an overview of the        access to the raw MSI database tables.
    following Windows Installer concepts related to the design
    of your installation project, which should help you avoid       It is also assumed you are familiar with some of the wizards
    certain types of problems at build and deployment time:         available with InstallShield, such as the Release Wizard
                                                                    and Component Wizard.
    •	 Working	with	features	and	components
    •	 Working	with	files                                           	 •		 he	Release	Wizard,	available	under	the	Build	menu	
                                                                        T
    •	 Working	with	custom	actions                                      and also from the Releases view, lets you describe the
    •	 Working	with	properties                                          properties—media type, compression settings, and so
                                                                        forth—of	a	release,	and	then	builds	the	specified	
    It also highlights how InstallShield® from Flexera Software         release image.
    assists you in avoiding these problems.                         	 •		 he	Component	Wizard,	available	by	right-clicking	a	
                                                                        T
                                                                        feature in the Setup Design view, lets you create special
    Using the InstallShield Environment                                 types of components, such as components for COM
    This white paper frequently refers to the InstallShield             servers, fonts, and Windows services.
    development environment. It is assumed you are familiar
    with the general layout of the InstallShield interface, which   The InstallShield Help Library contains information
    contains a list of views with which you can modify different    about using every view and wizard in the InstallShield
    portions of your installation project.                          environment. The InstallShield Help Library is available when
                                                                    you press F1 with any view selected; you can also select
                                                                    Contents from the Help menu to view the help library.

                                                                    In addition to the graphical environment, InstallShield
                                                                    provides several tools for modifying and building projects
                                                                    from the command line or an external script. For example, to
                                                                    build	a	project	from	the	command	line,	batch	file,	or	other	
                                                                    automated process, you can use the executable IsCmdBld.
                                                                    exe. The IsCmdBld executable is located in the System
                                                                    subdirectory of the InstallShield distribution directory.

                                                                    To	rebuild	a	project,	you	pass	IsCmdBld	the	project	file	
                                                                    path,	the	product	configuration	name,	and	the	release	
                                                                    name that you want to rebuild. A sample command appears
                                                                    as follows:
    For example, the General Information view is where you set
    general product and project properties; the Setup Design        	 	scmdbld	-p	C:ProductName.ism	-a	BuildConfig	-r	
                                                                      i


2
MSI Installat ion Design Issues and Best Pract ices




   ReleaseName                                                          component’s Destination property is the one actually
In addition, InstallShield provides an Automation interface,            used. In the common special case of the values being
with	which	you	can	modify	the	contents	of	a	project	file	               the	same	public	property	(as	in	INSTALLDIR),	the	
without using the graphical environment.                                destination selected in the Custom Setup dialog box is
                                                                        passed along to the component.
  Learn More about InstallShield
  If you wish to learn more about the capabilities of             Working with Files
  InstallShield, please visit the Flexera Software Web            In	order	to	avoid	or	troubleshoot	unexpected	file	installation	
  site at http://www.flexerasoftware.com/installshield.           and uninstallation behavior, it is important to understand the
                                                                  file-overwrite	rules	that	Windows	Installer	uses,	along	with	
                                                                  the standard uninstallation behavior.
Working with Features and Components
Features represent the end user’s view of your installation       File-Overwrite Rules
program, and components represent your view of the                When deciding whether to install a component, Windows
installation. Part of your responsibility as the installation     Installer checks only the key path of the component. If the
designer is to decide how many separately installable pieces      key path does not need to be replaced, the component
of the installation should be presented to the user. Each of      will not be installed. For this reason, Windows Installer
these pieces should be a feature or subfeature.                   best practices strongly suggest that the key path of each
                                                                  component	be	a	versioned	file,	and	that	each	EXE,	DLL,	and	
When designing features and components, you should                help	file	be	placed	in	its	own	component	and	be	marked	as	
consider the following points:                                    the	key	file.

	 •		 ll	of	the	file	contents	of	a	component	must	be	installed	
    A                                                             When	testing	if	one	file	is	“newer”	than	another—by	
    to	the	same	directory.	If	application	files	need	to	be	       default,	a	newer	file	overwrites	an	older	file—Windows	
    installed in multiple directories, you must create at least   Installer uses the following rules:
    one component for each destination.
	 •		 	component	is	the	lowest	level	to	which	a	condition	
    A                                                             	 •		f	both	files	have	version	resources,	the	file	with	the	
                                                                      I
    can be attached. There is no method for installing                higher	version	will	be	installed.	Note	that	if	the	two	files	
    only	some	of	the	files	in	a	component,	or	for	installing	         have equal versions, Windows Installer does not check
    the	files	but	not	registry	data	for	a	component.	If	you	          the	file	dates.
    have data that need to be installed under different           	 •		f	one	file	has	a	version	resource	and	the	other	does	
                                                                      I
    conditions—such as different target operating systems             not,	the	versioned	file	will	be	installed.
    or languages—the data must be separated into                  	 •		f	neither	file	has	a	version,	if	the	file	on	the	system	has	
                                                                      I
    different components.                                             identical	creation	and	modification	dates,	the	file	in	
	 •		 o	resource—file,	registry	key,	shortcut,	and	so	
    N                                                                 the	installer	will	overwrite	it.	Otherwise,	the	file	is	
    forth—should be placed in more than one component,                assumed to contain user data and settings, and will
    even across different products and organizations.                 not be overwritten.
    (Placing the same resource in multiple components
    breaks Windows Installer reference counting.) Instead,        Modifying File-Transfer Behavior
    if a resource is required by multiple pieces of the           Some of the techniques that exist for modifying the default
    application, you can share entire components among            Windows	Installer	file-transfer	behavior	for	installation	and	
    multiple features, or use merge modules to share              uninstallation are the following:
    components among multiple products.
	 •		 s	described	in	the	following	section,	for	the	most	
    A                                                             	   •		 sing	the	Never	Overwrite	component	setting.
                                                                        U
    effective	file	transfer,	a	component	should	contain	at	       	   •		 hanging	the	REINSTALLMODE	property.
                                                                        C
    most	one	executable	or	DLL—ideally,	a	versioned	file—         	   •		 pecifying	companion-file	relationships.
                                                                        S
    and	this	file	should	be	marked	as	the	key	file	of	            	   •		 sing	the	Permanent	component	setting.
                                                                        U
    its component.                                                	   •		 sing	the	RemoveFile	table	to	delete	files	created	by	
                                                                        U
	 •		 ecause	component	and	feature	names	can	
    B                                                                   your application.
    occasionally be returned in Windows Installer log
    files,	for	the	sake	of	maintainability	you	should	give	       You	can	modify	the	Never	Overwrite	setting	in	the	
    components and features descriptive internal names.           Components view or the Setup Design view of the
    In the case of components, one common practice is to          InstallShield	environment.	If	you	set	the	Never	Overwrite	
    name the component after its key path (usually its            component property to Yes, Windows Installer will skip
    key	file).                                                    installing	the	component	if	its	key	file	is	already	present	on	
	 •		 hen	there	are	identical	properties	for	both	
    W                                                             the	target	system.	If	the	component’s	key	file	is	not	present	
    components and features, the component property is            on the target system, Windows Installer will follow the
    the setting used. For example, both components and            normal	file-overwrite	behavior.
    features have a Destination property. The feature’s
    Destination property is the one displayed to the              You	can	use	the	REINSTALLMODE	property	to	modify	
    end user in the Custom Setup dialog box, while the            the	default	file-overwrite	behavior.	The	REINSTALLMODE	

Flexera Software: InstallShield White Paper Series                                                                                            3
MSI Installat ion Design Issues and Best Pract ices




    property contains a string made of a collection of letters             Equivalently, you can enter the desired key in the Version
    indicating	how	files	should	be	overwritten.	The	default	               field	of	the	File-table	record	using	the	Direct	Editor	view.
    value	is	“omus”,	where	o	indicates	that	older	files	should	be	
    overwritten	with	new	files,	m	and	u	indicate	that	machine	             Another	aspect	of	file-transfer	behavior	is	the	product’s	
    and user registry data should be reinstalled, and s indicates          uninstaller. The following techniques enable you to modify
    that shortcuts should be reinstalled.                                  your project’s uninstall behavior.

    To	modify	file-overwrite	behavior,	you	can	replace	the	o	              If you set the Permanent property to Yes for a component, the
    in	the	REINSTALLMODE	value	with	another	letter	                        component’s data will not be removed when the component
    indicating the desired behavior. Some of the possible                  is uninstalled. By default, when a product is uninstalled, any
    values	are	e,	to	overwrite	a	file	with	an	older	or	equal	              data installed by the installation will be removed.
    version,	or	a,	to	overwrite	existing	files	without	checking	
    their version information.                                             By	default,	a	product’s	uninstallation	will	remove	only	files	
                                                                           installed by the original installation. Files created by an
    NOTE:	The	REINSTALLMODE	value	cannot	be	limited	to	a	                  application after the installation is complete will not be
    component or feature, but instead applies to all features that         removed	automatically.	If	you	want	to	remove	files	created	
    will be installed.                                                     by your application, you can add records to the RemoveFile
                                                                           table of your project. The RemoveFile table is where you
    To	modify	the	value	of	REINSTALLMODE,	you	typically	                   specify	extra	files	to	be	removed	when	a	given	component	is	
    set the value at the command line when deploying the                   installed or removed.
    installation.	Because	REINSTALLMODE	is	a	public	property,	
    you can modify its value at the command line as follows:               To add a record to the RemoveFile table, you can use the
                                                                           Direct Editor view. If you select the RemoveFile table icon in
       msiexec /i product.msi REINSTALLMODE=amus                           the Direct Editor view and press F1, InstallShield opens the
       REINSTALL=ALL                                                       Windows Installer Help Library topic that describes the
                                                                           data to enter in a RemoveFile record.
    (The	REINSTALL	property	contains	either	a	comma-separated	
    list of features to reinstall, or the special value ALL to reinstall   A record in the RemoveFile table appears similar to
    every feature already installed on the system.)                        the following.

    Another	technique	for	adjusting	file-overwrite	behavior	is	
    to	use	companion	files,	which	associate	one	file’s	overwrite	
    behavior	to	another	file’s	behavior.	At	run	time,	if	the	
    “parent”	of	the	companion	file	relationship	is	installed,	
    the	“child”	will	be	installed	without	regard	for	its	version	
    relationship	with	an	existing	file.	To	set	up	a	companion	file	
    relationship,	for	the	child’s	Version	data,	enter	the	File-table	
    key	of	the	parent	file.	By	default,	the	File-table	key	of	a	file	      There	are	five	fields	in	a	RemoveFile	record:
    is displayed in the rightmost (Key) column of the properties
    in	a	component’s	file	list.                                            	 •		 ileKey: An arbitrary primary key
                                                                               F
                                                                               (“removeCustomSettings”,	in	the	figure	above)	that	
                                                                               uniquely	identifies	this	record.
                                                                           	 •		 omponent_: The component to associate with
                                                                               C
                                                                               this record.
    To	enter	the	parent	file’s	File-table	key	in	the	child’s	version	      	 •	FileName:	The	name	of	the	file	to	remove,	as	in	
    information,	you	can	use	the	file’s	Properties	panel,	                     “settings.tmp”.	You	can	use	wildcard	characters	in	this	
    available	when	you	right-click	the	file	icon	and	select	                   field	to	remove	multiple	files.
    Properties.	In	the	Properties	panel,	select	the	“Override	             	 •		 irProperty:	The	Directory-table	property	describing	the	
                                                                               D
    system	version”	check	box,	and	then	enter	the	desired	Key	                 location	of	the	file	to	delete.	In	this	example,	the	file	is	
    in	the	version	field.                                                      assumed to be in the directory represented by the main
                                                                               installation	directory	INSTALLDIR.	The	directory	you	
                                                                               enter here must be represented by a Directory property,
                                                                               and	cannot	be	a	hard-coded	path.
                                                                           	 •		nstallMode: A number indicating when to remove the
                                                                               I
                                                                               file.	The	value	1	removes	the	file	when	the	associated	
                                                                               component	is	installed;	2	removes	the	file	when	the	
                                                                               component	is	uninstalled;	and	3	removes	the	file	when	
                                                                               the component is either installed or uninstalled.




4                                                                                        Flexera Software: InstallShield White Paper Series
MSI Installat ion Design Issues and Best Pract ices




After adding such a record to your project, the installer will   as launching executables, calling DLL functions, or running
delete	the	file	“settings.tmp”	from	INSTALLDIR	when	the	         VBScript or InstallScript code. When working with custom
associated component is installed or removed.                    actions, there are two steps to perform:

Working with Sequences and Actions                               	 1.		 efine	the	custom	action:	Specify	what	it	does,	
                                                                      D
A Windows Installer installation program does not contain             whether to check the return value, and so forth.
an explicit script, but instead the installation behavior is       2. Schedule the action in the installation sequences,
defined	by	the	ordering	of	standard	and	custom	actions	into	          relative to other actions in the project.
installation sequences. The order of actions appearing in
the sequences determines the order in which your installer       In the InstallShield environment, you can perform both of
performs changes on the target system. An understanding          these steps in the Custom Actions and Sequences view. To
of sequences and actions will help you avoid common              perform	the	first	step,	defining	the	action,	right-click	the	
problems with the behavior of your installation project.         Custom Actions icon, select the desired type of action, and
                                                                 then rename the action. The name you use is the action’s
An	installation	sequence	is	divided	into	two	sub-sequences,	     internal name, stored in the CustomAction table of
called	the	User	Interface	(UI)	sequence	and	the	Execute	         your project.
sequence.	The	UI	sequence	displays	dialog	boxes	to	
the user and queries the target system, and the Execute
sequence makes changes to the target system. During a
silent	or	reduced-UI	installation,	only	the	Execute	sequence	
is	performed;	during	a	test-mode	installation,	only	the	UI	
sequence	is	performed.	(The	UI	sequence	is	sometimes	
called the client process, and the Execute sequence is
sometimes called the server process.)
                                                                 Next,	you	set	the	action’s	properties.	(You	can	also	right-
NOTE:	Because	the	User	Interface	sequence	and	Execute	           click the Custom Actions icon and launch the Custom Action
sequence are two different processes, it is expected that two    Wizard, in which you enter your action’s settings in a series
msiexec.exe processes are visible in the Task Manager.           of	panels.)	For	a	launch-an-executable	custom	action,	for	
                                                                 example, you specify the action’s source—whether the
Standard	actions	define	the	built-in	Windows	Installer	          executable is already on the target system or bundled within
functionality. Some of the standard actions                      the	MSI	database—and	command-line	arguments.
Windows Installer uses are:
                                                                 The second step when working with custom actions is to
	   •		nstallFiles
      I                                                          determine where the action runs, relative to other actions in
	   •		 reateShortcuts
      C                                                          the installation. The following sections describe the various
	   •		 riteRegistryValues
      W                                                          sequencing options available for custom actions.
	   •		 riteIniValues
      W
                                                                 Sequencing Actions
The action names suggest the changes they make to the            As described above, a typical installation is controlled by
target system during installation. For details about any         sequences, which are ordered lists of actions the installation
specific	action,	see	the	Windows	Installer	Help	Library	topic	   performs.	The	overall	flow	of	an	installation	is	as	follows:
describing the action.
                                                                 	 •		 irst,	Windows	Installer	starts	the	installation	with	
                                                                     F
To view the order in which actions are performed, you                the	first	action	in	the	User	Interface	sequence	with	a	
can use the Custom Actions and Sequences view,                       nonnegative sequence number.
found	in	the	“Behavior	and	Logic”	view	group	of	the	             	 •		 ctions	and	dialog	boxes	in	the	UI	sequence	are	
                                                                     A
InstallShield environment.                                           executed in ascending sequence number until the
                                                                     modeless SetupProgress dialog box is displayed,
                                                                     followed by the ExecuteAction action, which begins
                                                                     the Execute sequence.
                                                                 	 •		 ext,	the	actions	in	the	Execute	sequence	are	
                                                                     N
                                                                     performed in order of ascending sequence number.
                                                                     (As described in the following section, there are two
                                                                     passes through part of the Execute sequence, called
                                                                     immediate mode and deferred mode.)
                                                                 	 •		 hen	the	Execute	sequence	is	complete,	control	returns	
                                                                     W
Introduction to Custom Actions                                       to	the	UI	sequence:	the	SetupProgress	dialog	box	is	
If you need to perform tasks not handled by the standard             closed,	then	the	appropriate	“setup	complete”	dialog	
Windows	Installer	service	actions,	you	can	define	many	              box (with a negative sequence number) is displayed.
types of custom actions. Custom actions perform tasks such


Flexera Software: InstallShield White Paper Series                                                                                          5
MSI Installat ion Design Issues and Best Pract ices




    For a custom action, then, you must determine where it             Deferred execution is valid only between InstallInitialize
    should be executed relative to other actions. In the Custom        and InstallFinalize. Windows Installer will report error 2762
    Actions and Sequences view, you can specify where the              if	you	try	to	place	a	deferred	custom	action	in	the	UI	
    action	should	be	placed	using	the	Install	UI	Sequence	action	      sequence, or in the Execute sequence before InstallInitialize
    setting	if	you	want	the	action	to	run	during	the	UI	sequence,	     or after InstallFinalize.
    or the Install Exec Sequence setting if you want the action
    to run during the Execute sequence. (Alternatively, you can        You can perform ICE validation on your MSI database to
    right-click	an	action	icon	in	the	Sequences	list	and	select	       detect some types of problems with the placement and
    Insert, and then select the desired custom action. The action      scheduling of custom actions.
    you select will be scheduled immediately after the action
    you	right-clicked.	You	also	can	right-click	a	custom	action	       Rollback Execution
    and	select	Move	Up	or	Move	Down	to	move	the	action	up	             As Windows Installer performs system changes using
    or down.)                                                          standard actions, it simultaneously creates a rollback script
                                                                       and backs up any data the installer replaces or deletes. If the
    A single action can be executed only once in a given               user cancels the installation during deferred execution, or
    subsequence, but you can schedule an action in both the            if the installation fails during deferred execution, Windows
    UI	and	Execute	subsequences,	if	necessary.	Many	built-             Installer consults the rollback script to roll back the system to
    in actions can be found in both sequences, to ensure the           the state it was in before the installation program ran.
    action	runs	at	the	beginning	of	either	a	full-UI	installation	
    or a silent installation. You can control the behavior of          Changes made to the system by custom actions, however,
    a	custom	action	that	occurs	in	both	the	UI	and	Execute	            are not logged for uninstallation. Instead, for each deferred
    sequences using the Execution Scheduling setting: If you           action	that	modifies	the	target	system,	you	should	create	
    select Always Execute, the action is executed every time it        a corresponding rollback action to undo the system
    is encountered; the option Execute Only Once executes the          changes if the installation fails or the user cancels it during
    action	only	in	the	UI	sequence	for	a	full-UI	installation,	and	    deferred execution. (You will typically also need to create
    only in the Execute sequence for a silent installation.            a corresponding uninstallation action to undo the system
                                                                       changes when the user uninstalls your application.)
    Immediate vs. Deferred Execution
    Windows Installer makes two passes through the Execute             To	create	a	rollback	action,	you	set	an	action’s	In-Script	
    sequence, called immediate mode and deferred mode.                 Execution	setting	to	Rollback	Execution.	Note	that	the	
    Immediate mode is Windows Installer generating its internal        rollback action must be placed in your sequences before
    script, and deferred mode is Windows Installer performing          the action it rolls back. In addition, rollback execution is a
    its internal script.                                               type of deferred execution, and therefore must be scheduled
                                                                       between InstallInitialize and InstallFinalize.
    The	internal	script	is	generated	during	the	first	pass	from	the	
    InstallInitialize action through to the InstallFinalize action,
    and the internal script is carried out during the second pass
    from InstallInitialize through InstallFinalize. For example, the
    standard InstallFiles action appears between InstallInitialize
    and InstallFinalize; during immediate mode, Windows
    Installer	determines	which	files	it	will	install,	and	during	      One	additional	action-scheduling	option	is	called	commit	
    deferred	mode,	Windows	Installer	actually	installs	the	files.      execution, which executes only when the Execute sequence
                                                                       completes successfully. Rollback actions and commit actions
    Some guidelines related to determining whether to schedule         are complementary, in the sense that either the rollback
    an action for immediate mode or deferred mode include              action will run or the commit action will run, but not both.
    the following:                                                     To	flag	an	action	as	a	commit	action,	set	its	In-Script	
                                                                       Execution setting to Commit Execution.
    	 •		 he	UI	sequence	runs	only	in	immediate	mode.
        T
    	 •		 roperty	values	can	be	set	only	during	immediate	
        P                                                              Working with Properties
        mode.                                                          To store settings and data that are usable throughout an
    	 •		 n	action	that	makes	system	changes	should	be	
        A                                                              installation, MSI uses properties. A property is similar to
        scheduled for deferred execution, often in the system          a variable in a programming language. Some properties
        context. This is especially important for Windows Vista        describe	the	target	operating	environment	(VersionNT,	
        target systems.                                                WindowsBuild, PhysicalMemory), user information
    	 •		 imilarly,	an	action	that	relies	on	system	changes	
        S                                                              (LogonUser,	AdminUser,	USERNAME,	COMPANYNAME),	
        having been made (such as an action that launches an           locations of special folders (ProgramFilesFolder,
        installed executable or document) must be scheduled            SystemFolder),	product	information	(ProductName,	
        for deferred execution. For example, a custom action           ProductVersion,	INSTALLDIR),	and	installation	status	and	
        that launches an executable you are installing must be         configuration	settings	(ALLUSERS,	ARPINSTALLLOCATION,	
        scheduled for deferred execution after InstallFiles.           Installed).


6                                                                                    Flexera Software: InstallShield White Paper Series
MSI Installat ion Design Issues and Best Pract ices




Some properties are stored in the Property table of an MSI       system search for the registry data, or use a custom action
database, some are set at the command line by the user           (with condition Installed, for example).
or by a setup launcher, and some are initialized by the
Windows Installer service when an installation program           Conditions
launches. A property can also be created or set by a custom      Properties can also be used in Windows Installer conditions.
action, or by a control in a dialog box.                         A condition compares the value of a property to another
                                                                 value,	or	tests	whether	a	condition	is	defined.	The	results	of	
Two	classifications	of	properties	are	public	properties	and	     a condition can be used to determine, at run time, whether
private	properties:	Public	properties	have	all-uppercase	        to install a feature or component, or to perform an action or
names	(USERNAME,	ALLUSERS,	MYCUSTOMPROP),	and	                   display a dialog box.
can be set from the command line; private properties have
names	that	contain	lowercase	letters	(Privileged,	VersionNT,	    Examples of conditions include the following:
MyCustomProp), and cannot be changed from the
command line.                                                    	 •		 ersionNT>=500: Succeeds if the installer is running on
                                                                     V
                                                                     Windows 2000 or later.
Perhaps the most common cause of problems related to             	 •		 ot Installed:	Succeeds	for	a	first-time	installation.
                                                                     N
properties is that only the values of public properties are      	 •		 ATCH: Succeeds if a patch is being applied.
                                                                     P
preserved when installation execution switches from the
User	Interface	sequence	to	the	Execute	sequence.	(Property	      When you attach a condition to an action, the action will
names	are	case-sensitive.)	Therefore,	if	you	need	the	value	     be performed if the condition succeeds, and will be skipped
of	a	custom	property	that	is	defined	in	the	UI	sequence	         if the action fails. If there is no condition attached to an
(such as one set by a custom dialog box) to be available in      action, it will always be performed.
the Execute sequence, you should use a public property.
                                                                 When working with actions, it is important to understand
Saving Properties after the Initial Installation                 that	the	same	list	of	actions	is	called	for	first-time	
In general, Windows Installer discards the values of             installations, maintenance operations, and uninstallation.
properties when an installation completes.                       By attaching the appropriate condition to an action, you
                                                                 can	specify	that	the	action	should	run	only	during	a	specific	
Some exceptions are that many values exposed in                  type of installation.
the Add or Remove Programs panel are automatically
saved by an installation, and are then readable                  To limit actions to a particular type of installation, you can
using the MsiGetProductInfo function or ProductInfo              use one of the following conditions:
method. These properties have names that begin with
“ARP”,	as	in	ARPHELPLINK,	ARPURLINFOABOUT,	and	                  	 •		 ot Installed:	First-time	installation.
                                                                     N
ARPHELPTELEPHONE.	Similarly,	the	product	version,	               	 •	Installed: Any maintenance operation.
installation date, and original installation source are stored   	 •		 EMOVE=”ALL”:	Uninstallation	(valid	after	
                                                                     R
on the target system to be read back from                            InstallValidate action).
an external program or custom action using
MsiGetProductInfo or ProductInfo.                                Therefore, if you have a custom action that makes system
                                                                 changes during installation, and you want the effects of the
A common requirement during a maintenance installation           action to be removed during uninstallation, you can give
or uninstallation is to know the directory in which the          the	initial	action	the	condition	Not	Installed,	and	give	the	
application was installed during the initial installation. The   uninstallation	action	the	condition	REMOVE=”ALL”.
value	of	the	predefined	property	ARPINSTALLLOCATION	
will be saved to the target system’s registry, but a custom      In addition, it is sometimes desirable to tie an action to a
action	is	required	to	set	ARPINSTALLLOCATION	to	                 feature or component, for example performing the action
[INSTALLDIR].	InstallShield	automatically	includes	such	         only when a particular feature is installed. If you want an
a	custom	action:	a	set-a-property	custom	action	called	          action to run only when a feature called MainProgram is
SetARPINSTALLLOCATION.	In	a	VBScript	custom	action,	for	         installed, and it was not already installed, you can use the
example, the following expression returns the saved value        following condition:
of	INSTALLDIR:
                                                                   &MainProgram=3
  Installer.ProductInfo(Property(“ProductCode”),
  “InstallLocation”)                                             A	condition	of	the	form	&FeatureName=n	is	called	a	feature	
                                                                 action condition, where the condition succeeds only if the
For other properties, common practice is to save the             feature is changing to a particular state. The number used
property value to the registry during the initial installation   in the condition indicates the target state of the feature:
(by	including	the	form	[PROPNAME]	in	a	registry	key	             The	value	3	represents	“installed	locally”,	and	the	value	2	
created by the installation), and then read it back during       represents	“absent”	or	“not	installed”.
maintenance. To read the property back, you can set up a


Flexera Software: InstallShield White Paper Series                                                                                          7
MSI Installat ion Design Issues and Best Pract ices




    Similarly, you can use component action conditions of the       Properties and Deferred Execution
    form	$ComponentName=n	to	determine	if	a	component’s	            To get the value of a Windows Installer property in
    installation	is	changing	to	a	specific	state.	In	addition,	     a deferred script custom action, you must populate
    Windows	Installer	supports	feature-state	and	component-         the CustomActionData property. To populate the
    state	conditions	of	the	following	forms:	!FeatureName=n	        CustomActionData property for a deferred action, you
    and	?ComponentName=n.	Feature-state	and	component-              perform the following steps:
    state conditions test the state of a feature or component
    (installed, absent, and so forth) without consideration of        1. Create an immediate custom action that sets a
    whether the state is changing. Feature and component                 property (called, for example, ReadPropDeferred) to
    actions are valid only after the CostFinalize action.                the value you want to retrieve. In the Custom Actions
                                                                         and	Sequences	view,	for	example,	create	a	set-a-
    For more information, see the Windows Installer Help                 property custom action that sets ReadPropDeferred to
    Library	topic	“Conditional	Statement	Syntax”.                        [INSTALLDIR].	The	main	idea	is	that	the	property	name	
                                                                         here is the same as the deferred action’s name.
    Using the Formatted Data Type                                   	 2.		 ext,	create	a	deferred	custom	action,	the	name	of	
                                                                         N
    As described previously, in some parts of your project you           which is the same as the property you created in the
    can	use	expressions	similar	to	[PropertyName]	to	expand	             previous step (for this example, ReadPropDeferred).
    the value of a property at run time. Taking advantage of             In the deferred action’s code, the expression
    the Formatted data type can help you avoid having to                 Property(“CustomActionData”)	will	return	the	value	you	
    write custom actions to write certain types of data to the           set during the immediate action.
    target system.
                                                                    This technique is required only for deferred script custom
    The	Formatted	data	type	is	supported	by	many	fields	of	MSI	     actions that need to read the value of a property using
    database	tables.	For	example,	the	Name	and	Value	fields	        Session.Property. (This is also required for deferred DLL
    in the Registry table support the Formatted data type, which    and InstallScript custom actions that call MsiGetProperty.)
    is	why	you	can	enter	[PROPNAME]	in	a	registry	key	and	          Properties will be expanded automatically when used as
    have the value written to the registry at installation time.    an argument to a deferred action or in a condition on a
    Similarly, the values in the IniFile and Environment tables     deferred	action,	since	these	are	filled	in	during	immediate	
    support Formatted expressions.                                  mode.

    Not	every	table	uses	the	Formatted	data	type.	For	              Summary
    example, the name and description of a shortcut do not          This white paper discusses some techniques and design
    use the Formatted data type, and therefore one cannot           issues that you should be aware of when working with
    automatically	expand	[PropertyName]	expressions	in	these	       different parts of the Windows Installer (MSI) technology,
    shortcut properties. (The target of a shortcut does use the     and how InstallShield can help. The overall goal is to
    Formatted data type, however.)                                  help you avoid certain types of problems at build and
                                                                    deployment time by providing an overview of certain
    To	determine	if	a	database	field	uses	the	Formatted	data	       Windows Installer concepts.
    type, you can consult the Windows Installer Help Library.
                                                                       Begin a Free Evaluation of InstallShield
                                                                       You can download a free trial version of InstallShield
                                                                       from the Flexera Software Web site at:
                                                                       www.flexerasoftware.com/installshield/eval

                                                                       Want to learn more best practices for building quality
                                                                       installations? Join an InstallShield training class – visit
                                                                       www.flexerasoftware.com/training for available classes.


                                                                    How Flexera Software Professional Services Can Help
                                                                    Flexera Software has been designing and deploying
    Another	common	data	type	is	the	Identifier	type,	which	         successful installations for nearly 20 years. With a global
    accepts	only	a	record	identifier.	Common	uses	of	the	           team of consultants working in many diverse markets, we
    Identifier	data	type	are	references	to	components,	features,	   can share our experience with you from installation design
    Directory-table	properties,	and	Property-table	properties.      right through to training. Find out more at
                                                                    www.flexerasoftware.com/services/consulting/software-
    An example is the RemoveFile table, which uses the              installations.htm.
    Identifier	data	type	to	store	the	directory	containing	the	
    file	to	be	deleted.	Because	the	DirProperty	field	uses	the	
    Identifier	data	type,	INSTALLDIR	is	a	valid	value	for	that	
    field,	but	[INSTALLDIR]	is	not.

8                                                                                Flexera Software: InstallShield White Paper Series
Flexera Software LLC                      Schaumburg                                United Kingdom (Europe,                   Japan (Asia,                              For more office locations visit:
1000 East Woodfield Road,                 (Global Headquarters):                    Middle East Headquarters):                Pacific Headquarters):                    www.flexerasoftware.com
Suite 400                                 +1 800-809-5659                           +44 870-871-1111                          +81 3-4360-8291
Schaumburg, IL 60173 USA                                                            +44 870-873-6300

Copyright © 2011 Flexera Software LLC. All other brand and product names mentioned herein may be the trademarks and registered trademarks of their respective owners.
                                                                                                                                                                             IA_WP_MSI_Design_Oct11

Mais conteúdo relacionado

Destaque

Listados de Notas Certificadas
Listados de Notas CertificadasListados de Notas Certificadas
Listados de Notas CertificadasDavid Leon Sicilia
 
In fin-nitie-vol-2-issue-1
In fin-nitie-vol-2-issue-1In fin-nitie-vol-2-issue-1
In fin-nitie-vol-2-issue-1Shashank .
 
Agua%20luis%20l%c3%b3pez
Agua%20luis%20l%c3%b3pezAgua%20luis%20l%c3%b3pez
Agua%20luis%20l%c3%b3pezcamarografo
 
Software Monetization KickStart
Software Monetization KickStartSoftware Monetization KickStart
Software Monetization KickStartFlexera
 
Common Licensing Following Mergers and Acquisitions
Common Licensing Following Mergers and AcquisitionsCommon Licensing Following Mergers and Acquisitions
Common Licensing Following Mergers and AcquisitionsFlexera
 
Ten Things To Conserve Energy At School
Ten Things To Conserve Energy At SchoolTen Things To Conserve Energy At School
Ten Things To Conserve Energy At SchoolDANIEL MARTÍNEZ
 
Senior analyst jan 11(1)
Senior analyst jan 11(1)Senior analyst jan 11(1)
Senior analyst jan 11(1)Shashank .
 
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOS
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOSCertificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOS
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOSDavid Leon Sicilia
 
Side View Mirror Project - IgniteCbus4
Side View Mirror Project - IgniteCbus4Side View Mirror Project - IgniteCbus4
Side View Mirror Project - IgniteCbus4Erik Dahl
 
Next Level Crm
Next Level CrmNext Level Crm
Next Level CrmNext Level
 
Portfolio For Beth Pikelny
Portfolio For Beth PikelnyPortfolio For Beth Pikelny
Portfolio For Beth Pikelnybethpikelny
 

Destaque (13)

Korelasi Posting ^^
Korelasi Posting ^^Korelasi Posting ^^
Korelasi Posting ^^
 
Listados de Notas Certificadas
Listados de Notas CertificadasListados de Notas Certificadas
Listados de Notas Certificadas
 
In fin-nitie-vol-2-issue-1
In fin-nitie-vol-2-issue-1In fin-nitie-vol-2-issue-1
In fin-nitie-vol-2-issue-1
 
Agua%20luis%20l%c3%b3pez
Agua%20luis%20l%c3%b3pezAgua%20luis%20l%c3%b3pez
Agua%20luis%20l%c3%b3pez
 
Software Monetization KickStart
Software Monetization KickStartSoftware Monetization KickStart
Software Monetization KickStart
 
Integracion de las metricas
Integracion de las metricasIntegracion de las metricas
Integracion de las metricas
 
Common Licensing Following Mergers and Acquisitions
Common Licensing Following Mergers and AcquisitionsCommon Licensing Following Mergers and Acquisitions
Common Licensing Following Mergers and Acquisitions
 
Ten Things To Conserve Energy At School
Ten Things To Conserve Energy At SchoolTen Things To Conserve Energy At School
Ten Things To Conserve Energy At School
 
Senior analyst jan 11(1)
Senior analyst jan 11(1)Senior analyst jan 11(1)
Senior analyst jan 11(1)
 
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOS
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOSCertificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOS
Certificacion a grado 2012 II 08-11-13 ESTUDIOS JURIDICOS
 
Side View Mirror Project - IgniteCbus4
Side View Mirror Project - IgniteCbus4Side View Mirror Project - IgniteCbus4
Side View Mirror Project - IgniteCbus4
 
Next Level Crm
Next Level CrmNext Level Crm
Next Level Crm
 
Portfolio For Beth Pikelny
Portfolio For Beth PikelnyPortfolio For Beth Pikelny
Portfolio For Beth Pikelny
 

Mais de Flexera

Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Flexera
 
Make Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyMake Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyFlexera
 
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT EnvironmentFlexera
 
Using Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceUsing Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceFlexera
 
The Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementThe Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementFlexera
 
7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First StrategyFlexera
 
The Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareThe Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareFlexera
 
Addressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewAddressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewFlexera
 
Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Flexera
 
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityWebinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityFlexera
 
Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Flexera
 
Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Flexera
 
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Flexera
 
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Flexera
 
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2Flexera
 
BDNA joins Flexera
BDNA joins FlexeraBDNA joins Flexera
BDNA joins FlexeraFlexera
 
Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera
 
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Flexera
 
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsKeeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsFlexera
 
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseDo You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseFlexera
 

Mais de Flexera (20)

Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
Get a Complete View of Your Business Services and IT Estate in ServiceNow wit...
 
Make Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your JourneyMake Smarter Cloud Decisions at Every Step of Your Journey
Make Smarter Cloud Decisions at Every Step of Your Journey
 
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
10 Tips to Optimize, Automate, and Govern your Hybrid IT Environment
 
Using Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and ComplianceUsing Automated Policies for SaaS Governance and Compliance
Using Automated Policies for SaaS Governance and Compliance
 
The Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS ManagementThe Practical Approach for End-to-End SaaS Management
The Practical Approach for End-to-End SaaS Management
 
7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy7 Things You Need to Know for Your Cloud-First Strategy
7 Things You Need to Know for Your Cloud-First Strategy
 
The Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source SoftwareThe Role of In-House & External Counsel in Managing Open Source Software
The Role of In-House & External Counsel in Managing Open Source Software
 
Addressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal ViewAddressing Open Source Risks During M&A: A Legal View
Addressing Open Source Risks During M&A: A Legal View
 
Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!Having Trouble Managing All Your Cloud Services? We Know!
Having Trouble Managing All Your Cloud Services? We Know!
 
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology ComplexityWebinar: Maximizing the ROI of IT by Simplifying Technology Complexity
Webinar: Maximizing the ROI of IT by Simplifying Technology Complexity
 
Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1Webinar: What's New In FlexNet Manager Suite 2018 R1
Webinar: What's New In FlexNet Manager Suite 2018 R1
 
Open Source Security - It can be done easily.
Open Source Security - It can be done easily.Open Source Security - It can be done easily.
Open Source Security - It can be done easily.
 
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
Software Distribution, Customer Experience and the IoT: Get Ready for Fast, S...
 
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
Windows 10 webinar: What’s new for IT pros Windows 10 v 1709
 
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2Don’t Let Hackers Breach Your Data:  Shutting Your Risk Window on Apache Struts2
Don’t Let Hackers Breach Your Data: Shutting Your Risk Window on Apache Struts2
 
BDNA joins Flexera
BDNA joins FlexeraBDNA joins Flexera
BDNA joins Flexera
 
Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?Flexera Event - The Game Has Changed - Are You Ready?
Flexera Event - The Game Has Changed - Are You Ready?
 
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
Webinar: Take Proactive Control of Your SAP Licensing, Indirect Usage and Ven...
 
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS ApplicationsKeeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
Keeping a Lid on Costs for Cloud Infrastructure and SaaS Applications
 
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity DefenseDo You Manage Software? Understanding Your Role in Cybersecurity Defense
Do You Manage Software? Understanding Your Role in Cybersecurity Defense
 

Último

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Último (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

MSI Installation Design Issues and Best Practices

  • 1. W H I T E PA P E R MSI Installation Design Issues and Best Practices by Robert Dickau Principal Technical Training Writer, Flexera Software
  • 2. MSI Installation Design Issues and Best Practices Introduction view enables you to edit the features, components, and To avoid common errors, there are some techniques component data used by your project; the Registry view and design issues that you should be aware of when enables you to modify the registry data installed by your working with different parts of the Windows Installer (MSI) installation program; and the Direct Editor view gives you technology. This white paper provides an overview of the access to the raw MSI database tables. following Windows Installer concepts related to the design of your installation project, which should help you avoid It is also assumed you are familiar with some of the wizards certain types of problems at build and deployment time: available with InstallShield, such as the Release Wizard and Component Wizard. • Working with features and components • Working with files • he Release Wizard, available under the Build menu T • Working with custom actions and also from the Releases view, lets you describe the • Working with properties properties—media type, compression settings, and so forth—of a release, and then builds the specified It also highlights how InstallShield® from Flexera Software release image. assists you in avoiding these problems. • he Component Wizard, available by right-clicking a T feature in the Setup Design view, lets you create special Using the InstallShield Environment types of components, such as components for COM This white paper frequently refers to the InstallShield servers, fonts, and Windows services. development environment. It is assumed you are familiar with the general layout of the InstallShield interface, which The InstallShield Help Library contains information contains a list of views with which you can modify different about using every view and wizard in the InstallShield portions of your installation project. environment. The InstallShield Help Library is available when you press F1 with any view selected; you can also select Contents from the Help menu to view the help library. In addition to the graphical environment, InstallShield provides several tools for modifying and building projects from the command line or an external script. For example, to build a project from the command line, batch file, or other automated process, you can use the executable IsCmdBld. exe. The IsCmdBld executable is located in the System subdirectory of the InstallShield distribution directory. To rebuild a project, you pass IsCmdBld the project file path, the product configuration name, and the release name that you want to rebuild. A sample command appears as follows: For example, the General Information view is where you set general product and project properties; the Setup Design scmdbld -p C:ProductName.ism -a BuildConfig -r i 2
  • 3. MSI Installat ion Design Issues and Best Pract ices ReleaseName component’s Destination property is the one actually In addition, InstallShield provides an Automation interface, used. In the common special case of the values being with which you can modify the contents of a project file the same public property (as in INSTALLDIR), the without using the graphical environment. destination selected in the Custom Setup dialog box is passed along to the component. Learn More about InstallShield If you wish to learn more about the capabilities of Working with Files InstallShield, please visit the Flexera Software Web In order to avoid or troubleshoot unexpected file installation site at http://www.flexerasoftware.com/installshield. and uninstallation behavior, it is important to understand the file-overwrite rules that Windows Installer uses, along with the standard uninstallation behavior. Working with Features and Components Features represent the end user’s view of your installation File-Overwrite Rules program, and components represent your view of the When deciding whether to install a component, Windows installation. Part of your responsibility as the installation Installer checks only the key path of the component. If the designer is to decide how many separately installable pieces key path does not need to be replaced, the component of the installation should be presented to the user. Each of will not be installed. For this reason, Windows Installer these pieces should be a feature or subfeature. best practices strongly suggest that the key path of each component be a versioned file, and that each EXE, DLL, and When designing features and components, you should help file be placed in its own component and be marked as consider the following points: the key file. • ll of the file contents of a component must be installed A When testing if one file is “newer” than another—by to the same directory. If application files need to be default, a newer file overwrites an older file—Windows installed in multiple directories, you must create at least Installer uses the following rules: one component for each destination. • component is the lowest level to which a condition A • f both files have version resources, the file with the I can be attached. There is no method for installing higher version will be installed. Note that if the two files only some of the files in a component, or for installing have equal versions, Windows Installer does not check the files but not registry data for a component. If you the file dates. have data that need to be installed under different • f one file has a version resource and the other does I conditions—such as different target operating systems not, the versioned file will be installed. or languages—the data must be separated into • f neither file has a version, if the file on the system has I different components. identical creation and modification dates, the file in • o resource—file, registry key, shortcut, and so N the installer will overwrite it. Otherwise, the file is forth—should be placed in more than one component, assumed to contain user data and settings, and will even across different products and organizations. not be overwritten. (Placing the same resource in multiple components breaks Windows Installer reference counting.) Instead, Modifying File-Transfer Behavior if a resource is required by multiple pieces of the Some of the techniques that exist for modifying the default application, you can share entire components among Windows Installer file-transfer behavior for installation and multiple features, or use merge modules to share uninstallation are the following: components among multiple products. • s described in the following section, for the most A • sing the Never Overwrite component setting. U effective file transfer, a component should contain at • hanging the REINSTALLMODE property. C most one executable or DLL—ideally, a versioned file— • pecifying companion-file relationships. S and this file should be marked as the key file of • sing the Permanent component setting. U its component. • sing the RemoveFile table to delete files created by U • ecause component and feature names can B your application. occasionally be returned in Windows Installer log files, for the sake of maintainability you should give You can modify the Never Overwrite setting in the components and features descriptive internal names. Components view or the Setup Design view of the In the case of components, one common practice is to InstallShield environment. If you set the Never Overwrite name the component after its key path (usually its component property to Yes, Windows Installer will skip key file). installing the component if its key file is already present on • hen there are identical properties for both W the target system. If the component’s key file is not present components and features, the component property is on the target system, Windows Installer will follow the the setting used. For example, both components and normal file-overwrite behavior. features have a Destination property. The feature’s Destination property is the one displayed to the You can use the REINSTALLMODE property to modify end user in the Custom Setup dialog box, while the the default file-overwrite behavior. The REINSTALLMODE Flexera Software: InstallShield White Paper Series 3
  • 4. MSI Installat ion Design Issues and Best Pract ices property contains a string made of a collection of letters Equivalently, you can enter the desired key in the Version indicating how files should be overwritten. The default field of the File-table record using the Direct Editor view. value is “omus”, where o indicates that older files should be overwritten with new files, m and u indicate that machine Another aspect of file-transfer behavior is the product’s and user registry data should be reinstalled, and s indicates uninstaller. The following techniques enable you to modify that shortcuts should be reinstalled. your project’s uninstall behavior. To modify file-overwrite behavior, you can replace the o If you set the Permanent property to Yes for a component, the in the REINSTALLMODE value with another letter component’s data will not be removed when the component indicating the desired behavior. Some of the possible is uninstalled. By default, when a product is uninstalled, any values are e, to overwrite a file with an older or equal data installed by the installation will be removed. version, or a, to overwrite existing files without checking their version information. By default, a product’s uninstallation will remove only files installed by the original installation. Files created by an NOTE: The REINSTALLMODE value cannot be limited to a application after the installation is complete will not be component or feature, but instead applies to all features that removed automatically. If you want to remove files created will be installed. by your application, you can add records to the RemoveFile table of your project. The RemoveFile table is where you To modify the value of REINSTALLMODE, you typically specify extra files to be removed when a given component is set the value at the command line when deploying the installed or removed. installation. Because REINSTALLMODE is a public property, you can modify its value at the command line as follows: To add a record to the RemoveFile table, you can use the Direct Editor view. If you select the RemoveFile table icon in msiexec /i product.msi REINSTALLMODE=amus the Direct Editor view and press F1, InstallShield opens the REINSTALL=ALL Windows Installer Help Library topic that describes the data to enter in a RemoveFile record. (The REINSTALL property contains either a comma-separated list of features to reinstall, or the special value ALL to reinstall A record in the RemoveFile table appears similar to every feature already installed on the system.) the following. Another technique for adjusting file-overwrite behavior is to use companion files, which associate one file’s overwrite behavior to another file’s behavior. At run time, if the “parent” of the companion file relationship is installed, the “child” will be installed without regard for its version relationship with an existing file. To set up a companion file relationship, for the child’s Version data, enter the File-table key of the parent file. By default, the File-table key of a file There are five fields in a RemoveFile record: is displayed in the rightmost (Key) column of the properties in a component’s file list. • ileKey: An arbitrary primary key F (“removeCustomSettings”, in the figure above) that uniquely identifies this record. • omponent_: The component to associate with C this record. To enter the parent file’s File-table key in the child’s version • FileName: The name of the file to remove, as in information, you can use the file’s Properties panel, “settings.tmp”. You can use wildcard characters in this available when you right-click the file icon and select field to remove multiple files. Properties. In the Properties panel, select the “Override • irProperty: The Directory-table property describing the D system version” check box, and then enter the desired Key location of the file to delete. In this example, the file is in the version field. assumed to be in the directory represented by the main installation directory INSTALLDIR. The directory you enter here must be represented by a Directory property, and cannot be a hard-coded path. • nstallMode: A number indicating when to remove the I file. The value 1 removes the file when the associated component is installed; 2 removes the file when the component is uninstalled; and 3 removes the file when the component is either installed or uninstalled. 4 Flexera Software: InstallShield White Paper Series
  • 5. MSI Installat ion Design Issues and Best Pract ices After adding such a record to your project, the installer will as launching executables, calling DLL functions, or running delete the file “settings.tmp” from INSTALLDIR when the VBScript or InstallScript code. When working with custom associated component is installed or removed. actions, there are two steps to perform: Working with Sequences and Actions 1. efine the custom action: Specify what it does, D A Windows Installer installation program does not contain whether to check the return value, and so forth. an explicit script, but instead the installation behavior is 2. Schedule the action in the installation sequences, defined by the ordering of standard and custom actions into relative to other actions in the project. installation sequences. The order of actions appearing in the sequences determines the order in which your installer In the InstallShield environment, you can perform both of performs changes on the target system. An understanding these steps in the Custom Actions and Sequences view. To of sequences and actions will help you avoid common perform the first step, defining the action, right-click the problems with the behavior of your installation project. Custom Actions icon, select the desired type of action, and then rename the action. The name you use is the action’s An installation sequence is divided into two sub-sequences, internal name, stored in the CustomAction table of called the User Interface (UI) sequence and the Execute your project. sequence. The UI sequence displays dialog boxes to the user and queries the target system, and the Execute sequence makes changes to the target system. During a silent or reduced-UI installation, only the Execute sequence is performed; during a test-mode installation, only the UI sequence is performed. (The UI sequence is sometimes called the client process, and the Execute sequence is sometimes called the server process.) Next, you set the action’s properties. (You can also right- NOTE: Because the User Interface sequence and Execute click the Custom Actions icon and launch the Custom Action sequence are two different processes, it is expected that two Wizard, in which you enter your action’s settings in a series msiexec.exe processes are visible in the Task Manager. of panels.) For a launch-an-executable custom action, for example, you specify the action’s source—whether the Standard actions define the built-in Windows Installer executable is already on the target system or bundled within functionality. Some of the standard actions the MSI database—and command-line arguments. Windows Installer uses are: The second step when working with custom actions is to • nstallFiles I determine where the action runs, relative to other actions in • reateShortcuts C the installation. The following sections describe the various • riteRegistryValues W sequencing options available for custom actions. • riteIniValues W Sequencing Actions The action names suggest the changes they make to the As described above, a typical installation is controlled by target system during installation. For details about any sequences, which are ordered lists of actions the installation specific action, see the Windows Installer Help Library topic performs. The overall flow of an installation is as follows: describing the action. • irst, Windows Installer starts the installation with F To view the order in which actions are performed, you the first action in the User Interface sequence with a can use the Custom Actions and Sequences view, nonnegative sequence number. found in the “Behavior and Logic” view group of the • ctions and dialog boxes in the UI sequence are A InstallShield environment. executed in ascending sequence number until the modeless SetupProgress dialog box is displayed, followed by the ExecuteAction action, which begins the Execute sequence. • ext, the actions in the Execute sequence are N performed in order of ascending sequence number. (As described in the following section, there are two passes through part of the Execute sequence, called immediate mode and deferred mode.) • hen the Execute sequence is complete, control returns W Introduction to Custom Actions to the UI sequence: the SetupProgress dialog box is If you need to perform tasks not handled by the standard closed, then the appropriate “setup complete” dialog Windows Installer service actions, you can define many box (with a negative sequence number) is displayed. types of custom actions. Custom actions perform tasks such Flexera Software: InstallShield White Paper Series 5
  • 6. MSI Installat ion Design Issues and Best Pract ices For a custom action, then, you must determine where it Deferred execution is valid only between InstallInitialize should be executed relative to other actions. In the Custom and InstallFinalize. Windows Installer will report error 2762 Actions and Sequences view, you can specify where the if you try to place a deferred custom action in the UI action should be placed using the Install UI Sequence action sequence, or in the Execute sequence before InstallInitialize setting if you want the action to run during the UI sequence, or after InstallFinalize. or the Install Exec Sequence setting if you want the action to run during the Execute sequence. (Alternatively, you can You can perform ICE validation on your MSI database to right-click an action icon in the Sequences list and select detect some types of problems with the placement and Insert, and then select the desired custom action. The action scheduling of custom actions. you select will be scheduled immediately after the action you right-clicked. You also can right-click a custom action Rollback Execution and select Move Up or Move Down to move the action up As Windows Installer performs system changes using or down.) standard actions, it simultaneously creates a rollback script and backs up any data the installer replaces or deletes. If the A single action can be executed only once in a given user cancels the installation during deferred execution, or subsequence, but you can schedule an action in both the if the installation fails during deferred execution, Windows UI and Execute subsequences, if necessary. Many built- Installer consults the rollback script to roll back the system to in actions can be found in both sequences, to ensure the the state it was in before the installation program ran. action runs at the beginning of either a full-UI installation or a silent installation. You can control the behavior of Changes made to the system by custom actions, however, a custom action that occurs in both the UI and Execute are not logged for uninstallation. Instead, for each deferred sequences using the Execution Scheduling setting: If you action that modifies the target system, you should create select Always Execute, the action is executed every time it a corresponding rollback action to undo the system is encountered; the option Execute Only Once executes the changes if the installation fails or the user cancels it during action only in the UI sequence for a full-UI installation, and deferred execution. (You will typically also need to create only in the Execute sequence for a silent installation. a corresponding uninstallation action to undo the system changes when the user uninstalls your application.) Immediate vs. Deferred Execution Windows Installer makes two passes through the Execute To create a rollback action, you set an action’s In-Script sequence, called immediate mode and deferred mode. Execution setting to Rollback Execution. Note that the Immediate mode is Windows Installer generating its internal rollback action must be placed in your sequences before script, and deferred mode is Windows Installer performing the action it rolls back. In addition, rollback execution is a its internal script. type of deferred execution, and therefore must be scheduled between InstallInitialize and InstallFinalize. The internal script is generated during the first pass from the InstallInitialize action through to the InstallFinalize action, and the internal script is carried out during the second pass from InstallInitialize through InstallFinalize. For example, the standard InstallFiles action appears between InstallInitialize and InstallFinalize; during immediate mode, Windows Installer determines which files it will install, and during One additional action-scheduling option is called commit deferred mode, Windows Installer actually installs the files. execution, which executes only when the Execute sequence completes successfully. Rollback actions and commit actions Some guidelines related to determining whether to schedule are complementary, in the sense that either the rollback an action for immediate mode or deferred mode include action will run or the commit action will run, but not both. the following: To flag an action as a commit action, set its In-Script Execution setting to Commit Execution. • he UI sequence runs only in immediate mode. T • roperty values can be set only during immediate P Working with Properties mode. To store settings and data that are usable throughout an • n action that makes system changes should be A installation, MSI uses properties. A property is similar to scheduled for deferred execution, often in the system a variable in a programming language. Some properties context. This is especially important for Windows Vista describe the target operating environment (VersionNT, target systems. WindowsBuild, PhysicalMemory), user information • imilarly, an action that relies on system changes S (LogonUser, AdminUser, USERNAME, COMPANYNAME), having been made (such as an action that launches an locations of special folders (ProgramFilesFolder, installed executable or document) must be scheduled SystemFolder), product information (ProductName, for deferred execution. For example, a custom action ProductVersion, INSTALLDIR), and installation status and that launches an executable you are installing must be configuration settings (ALLUSERS, ARPINSTALLLOCATION, scheduled for deferred execution after InstallFiles. Installed). 6 Flexera Software: InstallShield White Paper Series
  • 7. MSI Installat ion Design Issues and Best Pract ices Some properties are stored in the Property table of an MSI system search for the registry data, or use a custom action database, some are set at the command line by the user (with condition Installed, for example). or by a setup launcher, and some are initialized by the Windows Installer service when an installation program Conditions launches. A property can also be created or set by a custom Properties can also be used in Windows Installer conditions. action, or by a control in a dialog box. A condition compares the value of a property to another value, or tests whether a condition is defined. The results of Two classifications of properties are public properties and a condition can be used to determine, at run time, whether private properties: Public properties have all-uppercase to install a feature or component, or to perform an action or names (USERNAME, ALLUSERS, MYCUSTOMPROP), and display a dialog box. can be set from the command line; private properties have names that contain lowercase letters (Privileged, VersionNT, Examples of conditions include the following: MyCustomProp), and cannot be changed from the command line. • ersionNT>=500: Succeeds if the installer is running on V Windows 2000 or later. Perhaps the most common cause of problems related to • ot Installed: Succeeds for a first-time installation. N properties is that only the values of public properties are • ATCH: Succeeds if a patch is being applied. P preserved when installation execution switches from the User Interface sequence to the Execute sequence. (Property When you attach a condition to an action, the action will names are case-sensitive.) Therefore, if you need the value be performed if the condition succeeds, and will be skipped of a custom property that is defined in the UI sequence if the action fails. If there is no condition attached to an (such as one set by a custom dialog box) to be available in action, it will always be performed. the Execute sequence, you should use a public property. When working with actions, it is important to understand Saving Properties after the Initial Installation that the same list of actions is called for first-time In general, Windows Installer discards the values of installations, maintenance operations, and uninstallation. properties when an installation completes. By attaching the appropriate condition to an action, you can specify that the action should run only during a specific Some exceptions are that many values exposed in type of installation. the Add or Remove Programs panel are automatically saved by an installation, and are then readable To limit actions to a particular type of installation, you can using the MsiGetProductInfo function or ProductInfo use one of the following conditions: method. These properties have names that begin with “ARP”, as in ARPHELPLINK, ARPURLINFOABOUT, and • ot Installed: First-time installation. N ARPHELPTELEPHONE. Similarly, the product version, • Installed: Any maintenance operation. installation date, and original installation source are stored • EMOVE=”ALL”: Uninstallation (valid after R on the target system to be read back from InstallValidate action). an external program or custom action using MsiGetProductInfo or ProductInfo. Therefore, if you have a custom action that makes system changes during installation, and you want the effects of the A common requirement during a maintenance installation action to be removed during uninstallation, you can give or uninstallation is to know the directory in which the the initial action the condition Not Installed, and give the application was installed during the initial installation. The uninstallation action the condition REMOVE=”ALL”. value of the predefined property ARPINSTALLLOCATION will be saved to the target system’s registry, but a custom In addition, it is sometimes desirable to tie an action to a action is required to set ARPINSTALLLOCATION to feature or component, for example performing the action [INSTALLDIR]. InstallShield automatically includes such only when a particular feature is installed. If you want an a custom action: a set-a-property custom action called action to run only when a feature called MainProgram is SetARPINSTALLLOCATION. In a VBScript custom action, for installed, and it was not already installed, you can use the example, the following expression returns the saved value following condition: of INSTALLDIR: &MainProgram=3 Installer.ProductInfo(Property(“ProductCode”), “InstallLocation”) A condition of the form &FeatureName=n is called a feature action condition, where the condition succeeds only if the For other properties, common practice is to save the feature is changing to a particular state. The number used property value to the registry during the initial installation in the condition indicates the target state of the feature: (by including the form [PROPNAME] in a registry key The value 3 represents “installed locally”, and the value 2 created by the installation), and then read it back during represents “absent” or “not installed”. maintenance. To read the property back, you can set up a Flexera Software: InstallShield White Paper Series 7
  • 8. MSI Installat ion Design Issues and Best Pract ices Similarly, you can use component action conditions of the Properties and Deferred Execution form $ComponentName=n to determine if a component’s To get the value of a Windows Installer property in installation is changing to a specific state. In addition, a deferred script custom action, you must populate Windows Installer supports feature-state and component- the CustomActionData property. To populate the state conditions of the following forms: !FeatureName=n CustomActionData property for a deferred action, you and ?ComponentName=n. Feature-state and component- perform the following steps: state conditions test the state of a feature or component (installed, absent, and so forth) without consideration of 1. Create an immediate custom action that sets a whether the state is changing. Feature and component property (called, for example, ReadPropDeferred) to actions are valid only after the CostFinalize action. the value you want to retrieve. In the Custom Actions and Sequences view, for example, create a set-a- For more information, see the Windows Installer Help property custom action that sets ReadPropDeferred to Library topic “Conditional Statement Syntax”. [INSTALLDIR]. The main idea is that the property name here is the same as the deferred action’s name. Using the Formatted Data Type 2. ext, create a deferred custom action, the name of N As described previously, in some parts of your project you which is the same as the property you created in the can use expressions similar to [PropertyName] to expand previous step (for this example, ReadPropDeferred). the value of a property at run time. Taking advantage of In the deferred action’s code, the expression the Formatted data type can help you avoid having to Property(“CustomActionData”) will return the value you write custom actions to write certain types of data to the set during the immediate action. target system. This technique is required only for deferred script custom The Formatted data type is supported by many fields of MSI actions that need to read the value of a property using database tables. For example, the Name and Value fields Session.Property. (This is also required for deferred DLL in the Registry table support the Formatted data type, which and InstallScript custom actions that call MsiGetProperty.) is why you can enter [PROPNAME] in a registry key and Properties will be expanded automatically when used as have the value written to the registry at installation time. an argument to a deferred action or in a condition on a Similarly, the values in the IniFile and Environment tables deferred action, since these are filled in during immediate support Formatted expressions. mode. Not every table uses the Formatted data type. For Summary example, the name and description of a shortcut do not This white paper discusses some techniques and design use the Formatted data type, and therefore one cannot issues that you should be aware of when working with automatically expand [PropertyName] expressions in these different parts of the Windows Installer (MSI) technology, shortcut properties. (The target of a shortcut does use the and how InstallShield can help. The overall goal is to Formatted data type, however.) help you avoid certain types of problems at build and deployment time by providing an overview of certain To determine if a database field uses the Formatted data Windows Installer concepts. type, you can consult the Windows Installer Help Library. Begin a Free Evaluation of InstallShield You can download a free trial version of InstallShield from the Flexera Software Web site at: www.flexerasoftware.com/installshield/eval Want to learn more best practices for building quality installations? Join an InstallShield training class – visit www.flexerasoftware.com/training for available classes. How Flexera Software Professional Services Can Help Flexera Software has been designing and deploying Another common data type is the Identifier type, which successful installations for nearly 20 years. With a global accepts only a record identifier. Common uses of the team of consultants working in many diverse markets, we Identifier data type are references to components, features, can share our experience with you from installation design Directory-table properties, and Property-table properties. right through to training. Find out more at www.flexerasoftware.com/services/consulting/software- An example is the RemoveFile table, which uses the installations.htm. Identifier data type to store the directory containing the file to be deleted. Because the DirProperty field uses the Identifier data type, INSTALLDIR is a valid value for that field, but [INSTALLDIR] is not. 8 Flexera Software: InstallShield White Paper Series
  • 9. Flexera Software LLC Schaumburg United Kingdom (Europe, Japan (Asia, For more office locations visit: 1000 East Woodfield Road, (Global Headquarters): Middle East Headquarters): Pacific Headquarters): www.flexerasoftware.com Suite 400 +1 800-809-5659 +44 870-871-1111 +81 3-4360-8291 Schaumburg, IL 60173 USA +44 870-873-6300 Copyright © 2011 Flexera Software LLC. All other brand and product names mentioned herein may be the trademarks and registered trademarks of their respective owners. IA_WP_MSI_Design_Oct11