SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
W H I T E PA P E R




                     Types of MSI Custom Actions

                     by Robert Dickau
                     Principal Technical Training Writer, Flexera Software
Types of MSI Custom Actions
    Introduction                                                     It is also assumed you are familiar with some of the wizards
    This white paper describes some of the types of custom actions   available	with	InstallShield,	such	as	the	Release	Wizard	
    supported by Windows Installer (MSI). These types include:       and Component Wizard.

    	 •		 aunching	executables
        L                                                            	 •		 he	Release	Wizard,	available	under	the	Build	menu	
                                                                         T
    	 •		 alling	DLL	or	script	functions
        C                                                                and	also	from	the	Releases	view,	lets	you	describe	the	
    	 •		 etting	Property-table	properties	and	Directory-
        S                                                                properties—media	type,	compression	settings,	and	so	
        table properties                                                 forth—of	a	release,	and	then	builds	the	specified	
    	 •		 rror	actions
        E                                                                release	image.
                                                                     	 •		 he	Component	Wizard,	available	by	right-clicking	a	
                                                                         T
    It	also	highlights	how	InstallShield®	from	Flexera	Software	         feature	in	the	Setup	Design	view,	lets	you	create	special	
    assists	you	in	working	with	custom	actions.	                         types	of	components,	such	as	components	for	COM	
                                                                         servers,	fonts,	and	Windows	services.
    Using the InstallShield Environment
    This white paper frequently refers to the InstallShield          The	InstallShield	Help	Library	contains	information	
    development environment. It is assumed you are familiar          about	using	every	view	and	wizard	in	the	InstallShield	
    with	the	general	layout	of	the	InstallShield	interface,	which	   environment.	The	InstallShield	Help	Library	is	available	when	
    contains a list of views with which you can modify different     you	press	F1	with	any	view	selected;	you	can	also	select	
    portions of your installation project.                           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	      	 	scmdbld	-p	C:ProductName.ism	-a	BuildConfig	-r	
                                                                       i
    general	product	and	project	properties;	the	Setup	Design	          ReleaseName
    view	enables	you	to	edit	the	features,	components,	and	
    component	data	used	by	your	project;	the	Registry	view	          In	addition,	InstallShield	provides	an	Automation	interface,	
    enables	you	to	modify	the	registry	data	installed	by	your	       with	which	you	can	modify	the	contents	of	a	project	file	
    installation	program;	and	the	Direct	Editor	view	gives	you	      without	using	the	graphical	environment.
    access to the raw MSI database tables.

2
Types of MSI Custom Act ions




                                                                 If	the	executable	being	launched	is	in	a	directory	on	the	
   Learn More about InstallShield                                target	system,	the	custom	action	must	be	placed	after	the	
   If you wish to learn more about the capabilities of           standard CostFinalize action. The CostFinalize action
   InstallShield,	please	visit	the	Flexera	Software	Web	         sets	the	values	of	Directory	properties,	and	an	attempt	to	
   site at www.flexerasoftware.com/installshield.                reference	a	Directory	property	(such	as	WindowsFolder	
                                                                 or	SystemFolder)	will	cause	run-time	error	2732,	which	
                                                                 is	described	in	the	Windows	Installer	Help	Library	as	
Custom Action Basics                                             “Directory	Manager	not	initialized”.
There are two steps involved for each custom action you
want to use:                                                     In	this	case,	because	Notepad.exe	is	present	on	the	target	
                                                                 system,	this	custom	action	can	be	placed	in	either	the	User	
  1. Define the action: Specify what the action does (launch     Interface	sequence	or	Execute	sequence	(or	both),	after	the	
     an	executable,	call	a	DLL	function,	set	a	property,	and	    CostFinalize action. It is not necessary to specify deferred
     so forth) and its other behavior (whether to test the       execution,	or	for	the	InstallFiles	action	to	have	run	first.
     return	value,	and	so	forth).
  2. Schedule the action: Specify where the action runs          An	executable	custom	action	does	not	have	access	
     relative	to	other	actions,	which	installation	phase	        to	installation	properties,	other	than	those	passed	as	
     (immediate	execution,	deferred	execution,	and	so	           command-line	arguments.	A	typical	use	of	a	command-
     forth)	the	action	uses,	and	under	what	conditions	the	      line	argument	is	to	pass	the	path	to	a	document	to	the	
     action runs.                                                executable	being	launched.	For	example,	suppose	you	
                                                                 want	to	launch	a	Readme	file	with	Notepad.exe	after	data	
A	general	principle	is	that	you	should	not	use	a	custom	         transfer	takes	place.	In	this	case,	the	Filename & Command
action when a standard action performs the desired task.         line	setting	for	the	custom	action	might	read:
One	reason	is	that	the	effects	of	custom	actions	are	not	
automatically removed when your application is uninstalled         notepad.exe “[INSTALLDIR]Readme.txt”
or rolled back.
                                                                 The	quotation	marks	around	the	argument	are	required	by	
For	each	custom	action	that	performs	system	changes,	you	        most	executables	in	case	the	file	path	contains	any	spaces.
should	create	corresponding	uninstall	and	rollback	actions.
                                                                 An	action	that	launches	an	executable	being	installed,	
Executable Custom Actions                                        or	one	that	opens	a	document	being	installed,	must	be	
One	of	the	most	commonly	used	types	of	custom	actions	is	        scheduled	for	deferred	execution	after	the	standard	
an	action	that	launches	an	executable.	This	type	of	action	is	   InstallFiles	action.	During	immediate	mode,	data	transfer	
commonly used to open documents installed by the current         has	not	yet	begun;	and	in	deferred	mode	before	InstallFiles,	
installation,	or	to	launch	system	executables	to	perform	        documents	and	executables	will	not	have	been	placed	on	
system	changes	that	Windows	Installer	does	not	directly	         the	target	system.	
support.	The	executable	that	you	launch	with	this	type	of	
custom	action	can	be	installed	by	the	current	installation,	
already	located	on	the	target	system,	or	streamed	into	the	
Binary	table	of	the	MSI	database.

For	example,	suppose	you	want	to	launch	the	copy	of	
Notepad	from	the	target	system’s	Windows	directory.	You	
begin	by	opening	the	Custom	Actions	and	Sequences	view,	
right-clicking	the	Custom	Actions	icon,	and	selecting	
New EXE > Path referencing a directory.
                                                                 The condition Not Installed ensures the action runs—that
In the Working Directory	setting,	enter	WindowsFolder,	          is,	the	Readme	file	is	displayed—only	during	a	first-
the	Directory	property	representing	the	location	of	the	         time	installation,	and	not	during	maintenance	mode	or	
executable.	In	the	Filename & Command line	setting,	enter	       uninstallation.
the	executable	name	notepad.exe.
                                                                 To	ensure	the	action	runs	only	during	a	first-time,	full-UI	
                                                                 installation,	you	could	use	the	condition	(Not Installed) and
                                                                 (UILevel=5).	A	further	possible	refinement	is	to	associate	
                                                                 the	action	with	the	component	containing	the	Readme	file,	
                                                                 using	a	component-action	condition	($ComponentName=3).




Flexera Software: InstallShield White Paper Series                                                                                   3
Types of MSI Custom Act ions




    DLL and Script Custom Actions                                     				return	ERROR_SUCCESS;	// return success to MSI
    In	addition	to	running	executables,	Windows	Installer	enables	    }
    you	to	extend	your	installation	by	calling	code	in	DLLs	and	      Assuming	this	code	has	been	compiled	into	a	DLL	called	
    scripts,	where	the	DLL	or	script	can	be	embedded	in	the	          MsiDllCustomAction.dll,	and	that	the	function	name	
    installation or installed with the other component data. This     CustomActionFunction	is	correctly	exported	from	the	DLL	
    section	introduces	the	concepts	related	to	calling	DLL	and	       (using	a	.def	file,	for	example),	the	properties	of	a	custom	
    script code.                                                      action	that	calls	the	DLL	might	appear	similar	to	the	
                                                                      following	figure.	In	the	Function Name	setting,	you	specify	
    The	Windows	Installer	engine	can	directly	call	functions	         only the function name because the return value and
    from	a	“Windows	Installer	DLL”,	or	“MSI	DLL”.	An	MSI	DLL	         arguments	are	predefined	for	an	MSI	DLL.
    providing	custom	actions	exports	at	least	one	function	with	
    the	following	signature:

      UINT __stdcall FunctionName(MSIHANDLE hInstall) { ... }

    A	function	you	intend	to	call	from	an	MSI	DLL	custom	
    action	must	use	this	signature,	with	the	only	variation	
    allowed	being	the	function	name.	The	return	value	is	used	
    to	determine	if	the	function	succeeds	or	fails,	and	therefore	
    whether	the	installation	should	exit	as	a	result	of	the	custom	
    action;	and	the	MSIHANDLE	argument	passed	to	the	                 Similarly,	a	VBScript	custom	action	typically	defines	a	
    function	is	a	handle	to	the	running	installation,	used	as	an	     function	similar	to	the	following:
    argument	to	MSI	API	functions	such	as	MsiGetProperty	that	
    query	the	running	installation.                                     Function FunctionName( )
                                                                        ‘ do something
    Windows	Installer	requires	that	a	DLL	used	in	this	type	of	         End Function
    custom	action	must	be	a	callable	DLL,	and	not	a	Visual	Basic	
    DLL	or	.NET	DLL.	The	DLL	function	cannot	accept	arguments,	       The	exception	is	the	setting	VBScript > Stored in custom
    but	instead	must	pass	information	back	and	forth	using	           action,	which	can	store	short	scripts	directly	in	the	
    Windows	Installer	properties.	The	MsiSetProperty	function	        CustomAction	table,	and	for	which	you	do	not	specify	a	
    sets	the	value	of	a	property,	and	MsiGetProperty	reads	the	       function name.
    value of a property.
                                                                      Like	MSI	DLL	custom	action	functions,	VBScript	custom	
    NOTE: The InstallShield environment supports a special type       action	functions	do	not	accept	arguments,	but	instead	must	
    of	DLL	custom	action	called	a	“Standard	DLL”	action,	which	       also	communicate	with	the	running	installer	engine	using	
    enables	you	to	call	DLL	functions	with	signatures	different	      properties.	In	VBScript	custom	actions,	the	Session	object	
    from	the	MSI	DLL	function	presented	earlier.	When	you	            represents	the	running	installation,	and	the	expression	
    create	a	Standard	DLL	custom	action,	you	will	be	prompted	        Session.Property(“PROPNAME”)	enables	you	to	get	and	set	
    for	the	DLL	name,	the	function	name,	and	for	constants	           the value of a property.
    or	properties	used	to	provide	the	function	arguments	and	
    return	values.	Recent	InstallShield	versions	also	support	        Setting Properties
    “managed	code”	custom	actions,	such	as	C#	and	VB.NET	             A	set-a-property	custom	action	either	sets	or	creates	a	
    DLL	methods.	                                                     property.	If	the	property	exists	in	the	Property	table,	the	
                                                                      custom	action	will	overwrite	its	value,	and	if	the	property	
    Code	for	a	simple	MSI	DLL	custom	action	might	appear	             does	not	exist	in	the	Property	table,	the	custom	action	will	
    as follows:                                                       create	it.	As	described	previously,	however,	the	values	of	
                                                                      private	properties	are	reset	to	their	defaults	when	execution	
    #pragma	comment(lib,	“msi.lib”)                                   switches	from	the	User	Interface	sequence	to	the	
    #include	<windows.h>                                              Execute	sequence.
    #include	<msi.h>
    #include	<msiquery.h>                                             An	advantage	to	using	set-a-property	custom	actions	
    // an MSI DLL custom action function must use this signature      over	defining	properties	in	the	Property	table	is	that	the	
    UINT	__stdcall	CustomActionFunction(MSIHANDLE	hInstall)           action	can	resolve	Formatted	expressions,	while	entries	in	
    {                                                                 the	Property	table	do	not	resolve	Formatted	expressions.	
    				MessageBox(                                                   For	example,	you	can	create	a	custom	action	that	sets	
    								GetForegroundWindow(	),                                   TIMESTAMP	to	the	value	“[Date]	at	[Time]”,	and	the	
    								TEXT(“Running	MSI	DLL	action...”),                        values	of	the	embedded	properties	Date	and	Time	will	be	
    								TEXT(“MSI	DLL”),                                          expanded	at	run	time.	You	can	then	use	the	Formatted	
    								MB_OK	|	MB_ICONINFORMATION);                              expression	[TIMESTAMP]	in,	for	example,	a	registry	value,	
                                                                      and	the	value	will	be	expanded	at	run	time.


4                                                                                  Flexera Software: InstallShield White Paper Series
Types of MSI Custom Act ions




                                                                 To install this component to the directory located by the
                                                                 custom	action,	create	a	set-a-directory	custom	action	with	
                                                                 source	SETTINGS_DIR	and	target	[FOUND_DIR],	scheduling	
                                                                 the	action	after	the	CostFinalize	action	in	both	the	User	
                                                                 Interface	and	Execute	sequences.




An	example	of	this	type	of	custom	action	that	
exists	in	each	new	InstallShield	project	is	called	
SetARPINSTALLLOCATION,	which	sets	the	predefined	
property	ARPINSTALLLOCATION	to	[INSTALLDIR].	The	value	
of	ARPINSTALLLOCATION	is	automatically	written	to	the	
target	system’s	registry	by	the	Windows	Installer	engine,	
enabling	a	custom	action	or	external	program	to	read	the	        (Note	that	the	action	uses	the	condition	FOUND_DIR,	
main	install	directory	for	an	existing	product	using	the	        which	ensures	SETTINGS_DIR	is	changed	from	its	default	
MsiGetProductInfo	function	or	Installer.ProductInfo	method.	     value only if custom action found the desired directory.)
Because	properties	cannot	be	set	during	deferred	execution,	
the	In-Script	Execution	setting	for	a	set-a-property	custom	     At	installation	time,	the	component’s	files	will	be	installed	to	
action	cannot	be	changed	from	Immediate	Execution.               the directory discovered by the custom action.

Setting Directory Properties                                     Error Custom Actions
You	can	also	use	set-a-directory	custom	actions	to	set	          Error	custom	actions	display	an	error	message	to	the	end	
the	values	of	Directory	properties.	Directory	properties	        user,	and	then	exit	the	installation	when	the	user	dismisses	
are those that refer to the locations of directories on the      the	error	dialog.	Because	an	error	custom	action	always	
target	system;	built-in	examples	are	ProgramFilesFolder,	        exits	the	installation,	you	should	attach	a	condition	to	an	
DesktopFolder,	and	SystemFolder.	If	you	want	to	modify	the	      error action to ensure it runs only when appropriate.
location	that	a	Directory	property	points	to,	you	can	use	a	
set-a-directory	action.                                          When you create an error action in the Custom Actions
                                                                 and	Sequences	view,	you	can	use	the	Error	Message	setting	
Directory	properties	are	set	by	the	disk-costing	process,	and	   to	specify	the	error	message	that	should	be	displayed	
therefore	set-a-directory	custom	actions	must	be	scheduled	      when	the	action’s	conditions	are	met	at	run	time.	Suppose	
after the standard CostFinalize action.                          that you schedule the action immediately after the
                                                                 LaunchConditions	action	in	the	Execute	sequence.	When	
NOTE: Windows Installer ensures that the value of each           you	rebuild	and	run	the	project,	the	effect	of	the	custom	
Directory	property	ends	with	a	backslash.	If	your	installer	     action	is	to	display	an	error	dialog	box	similar	to	the	
writes	a	Directory	property	to	the	registry	using	the	format	    following:
[INSTALLDIR],	for	example,	a	typical	value	is	C:Program
FilesOur CompanyOur Application. If the value is to be
read	later	from	within	your	application,	your	application	
code	must	account	for	the	trailing	backslash.

For	example,	suppose	you	have	a	component	that	you	want	
to install to a directory located by a custom action. In this
case,	assume	the	custom	action	populates	a	property	called	
FOUND_DIR.	One	option	is	to	define	the	component	to	use	
a	custom	property	with	an	arbitrary	initial	value,	and	then	
use	a	set-a-directory	custom	action	to	set	the	placeholder	
property	value	to	[FOUND_DIR].
                                                                 After	the	end	user	dismisses	the	error	dialog	box,	the	
In	the	following	figure,	a	component	has	been	given	             installation	exits.	(For	a	silent	installation,	the	error	message	
a	destination	directory	represented	by	the	Directory	            is	by	default	written	to	an	MSI	log	file,	and	also	to	the	
property	name	SETTINGS_DIR,	with	a	default	value	of	             system’s	application	event	log.)
[ProgramFilesFolder]Settings.
                                                                 The	Error	Message	setting	for	an	error	custom	action	uses	
                                                                 the	Formatted	data	type,	so	you	can	expand	the	values	of	
                                                                 properties	using	the	syntax	[PropertyName].



Flexera Software: InstallShield White Paper Series                                                                                     5
Types of MSI Custom Act ions




    In	addition,	the	Error	Message	setting	for	an	error	              Next,	use	the	Direct	Editor	view	to	create	the	message	in	
    custom action can contain the number of a record in the           the	Error	table:
    Error	table.	The	Error	table	is	also	exposed	in	the	Direct	
    Editor	view.	As	described	in	the	Windows	Installer	Help	          Error: 29000
    Library	topic	“Error	Table”,	the	error	codes	numbered	            Message: You	must	have	a	previous	version	of	
    from	25000	to	30000	are	reserved	for	custom	actions,	             [ProductName]	installed.	Setup	will	now	exit.
    and	therefore	you	can	use	numbers	in	this	range	for	your	
    custom	messages.	The	advantage	to	using	an	entry	in	the	          When	you	run	the	installation,	because	no	earlier	version	of	
    Error	table,	instead	of	using	a	hard-coded	message	in	the	        the	product	is	detected,	the	following	error	message	
    Error	Message	setting,	is	that	Error-table	messages	are	          is displayed.
    automatically	added	to	the	InstallShield	string	table,	and	
    therefore	you	can	provide	localized	error	messages	for	
    multi-language	installations.

    In	the	Direct	Editor	view,	you	create	a	record	in	the	Error	
    table	the	same	way	you	do	for	any	other	table.	The	fields	
    used	in	the	Error	table	are	the	Error	field,	which	must	be	an	
    integer	error	number,	and	the	Message	field,	containing	the	
    message	to	display.	When	you	add	a	record	to	the	Error	
    table,	the	InstallShield	environment	automatically	adds	an	
    entry	to	the	string	table;	for	each	language	your	project	
    supports,	you	edit	the	string	value	in	the	String	Tables	view,	
    available	inside	your	project’s	General	Information	view.         Summary
                                                                      This white paper discusses some of the types of custom
    For	an	example	of	using	an	error	custom	action,	suppose	          actions supported by Windows Installer (MSI). It also
    you	have	created	a	major	upgrade	of	an	existing	project,	         highlights	how	InstallShield	from	Flexera	Software	assists	
    and want to allow the installation to continue only if an         you	in	working	with	custom	actions.
    earlier	product	version	is	detected.	You	can	detect	if	a	major	
    upgrade	is	taking	place	by	testing	if	the	“action	property”	
    defined	in	an	Upgrade-table	record	contains	any	value.
                                                                         Begin a Free Evaluation of InstallShield
                                                                         You	can	download	a	free	trial	version	of	InstallShield	
                                                                         from	the	Flexera	Software	Web	site	at:	
    First,	you	create	the	error	action	in	the	Custom	Actions	
                                                                         www.flexerasoftware.com/installshield/eval
    and	Sequences	view.	You	can	schedule	the	custom	
    action	in	both	the	User	Interface	and	Execute	sequences	
                                                                         Want to learn more best practices for building quality
    after	the	FindRelatedProducts	action	with	condition	Not	
                                                                         installations?	Join	an	InstallShield	training	class	–	visit	
    ISACTIONPROP1.	The	action’s	properties	might	be
                                                                         www.flexerasoftware.com/training for available classes.
    as follows:

                                                                      How Flexera Software Professional Services Can Help
                                                                      As	the	main	mechanism	for	increasing	functionality	of	your	
                                                                      MSI,	sound	knowledge	of	the	workings	of	MSI	custom	
                                                                      actions	is	crucial.	Let	Flexera	Software’s	experts	guide	you	
                                                                      through	the	various	options.	Find	out	more	at	
                                                                      www.flexerasoftware.com/services/consulting/software-
                                                                      installations.htm.




6                                                                                  Flexera Software: InstallShield White Paper Series
Types of MSI Custom Act ions




About Flexera Software
Flexera	Software	is	the	leading	provider	of	strategic	
solutions	for	Application	Usage	Management;	solutions	
delivering	continuous	compliance,	optimized	usage	and	
maximized	value	to	application	producers	and	their	
customers.	Flexera	Software	is	trusted	by	more	than	80,000	
customers	that	depend	on	our	comprehensive	solutions-	
from installation and licensing,	entitlement	and	compliance	
management to application readiness and enterprise license
optimization	-	to	strategically	manage	application	usage	
and	achieve	breakthrough	results	realized	only	through	the	
systems-level	approach	we	provide.	For	more	information,	
please	go	to:	www.flexerasoftware.com




Flexera Software: InstallShield White Paper Series                                            7
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.
                                                                                                                                                                           IS_WP_MSIActionTypes_Oct11

Contenu connexe

Tendances

Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024casanoteva
 
Using VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and RestoreUsing VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and Restorewebhostingguy
 
Vb.net session 14
Vb.net session 14Vb.net session 14
Vb.net session 14Niit Care
 
VDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationVDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationKingfin Enterprises Limited
 
Cluster aware updating v1.0
Cluster aware updating v1.0Cluster aware updating v1.0
Cluster aware updating v1.0hypervnu
 
system state backup restore
system state backup restoresystem state backup restore
system state backup restoressuser1eca7d
 
Net framework session03
Net framework session03Net framework session03
Net framework session03Niit Care
 
Managing enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingManaging enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingConcentrated Technology
 
Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Harshad Patel
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroductionRohit Kelapure
 
Plesk 8.1 for Windows
Plesk 8.1 for WindowsPlesk 8.1 for Windows
Plesk 8.1 for Windowswebhostingguy
 
DB2 10 Security Enhancements
DB2 10 Security EnhancementsDB2 10 Security Enhancements
DB2 10 Security EnhancementsLaura Hood
 
Java Standard Edition 5 Performance
Java Standard Edition 5 PerformanceJava Standard Edition 5 Performance
Java Standard Edition 5 Performancewhite paper
 
SUSE LINUX Deployment Guide
SUSE LINUX Deployment GuideSUSE LINUX Deployment Guide
SUSE LINUX Deployment GuideAshwin Mane
 

Tendances (18)

SP1_Battlecard
SP1_BattlecardSP1_Battlecard
SP1_Battlecard
 
Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024Eql tr symantec-backup-exec-10d-tr1024
Eql tr symantec-backup-exec-10d-tr1024
 
Using VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and RestoreUsing VMware Infrastructure for Backup and Restore
Using VMware Infrastructure for Backup and Restore
 
Vb.net session 14
Vb.net session 14Vb.net session 14
Vb.net session 14
 
VDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server GenerationVDI Performance of PRIMERGY S7 Server Generation
VDI Performance of PRIMERGY S7 Server Generation
 
Cluster aware updating v1.0
Cluster aware updating v1.0Cluster aware updating v1.0
Cluster aware updating v1.0
 
Packaging Event 2008
Packaging Event 2008Packaging Event 2008
Packaging Event 2008
 
system state backup restore
system state backup restoresystem state backup restore
system state backup restore
 
Net framework session03
Net framework session03Net framework session03
Net framework session03
 
Managing enterprise with PowerShell remoting
Managing enterprise with PowerShell remotingManaging enterprise with PowerShell remoting
Managing enterprise with PowerShell remoting
 
Ms Sql server installation 2008R2
Ms Sql server installation 2008R2Ms Sql server installation 2008R2
Ms Sql server installation 2008R2
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroduction
 
Plesk 8.1 for Windows
Plesk 8.1 for WindowsPlesk 8.1 for Windows
Plesk 8.1 for Windows
 
DB2 LUW Auditing
DB2 LUW AuditingDB2 LUW Auditing
DB2 LUW Auditing
 
DB2 10 Security Enhancements
DB2 10 Security EnhancementsDB2 10 Security Enhancements
DB2 10 Security Enhancements
 
Java Standard Edition 5 Performance
Java Standard Edition 5 PerformanceJava Standard Edition 5 Performance
Java Standard Edition 5 Performance
 
2) security
2) security2) security
2) security
 
SUSE LINUX Deployment Guide
SUSE LINUX Deployment GuideSUSE LINUX Deployment Guide
SUSE LINUX Deployment Guide
 

En vedette

MSI Sequences and Standard Actions: An Introduction
MSI Sequences and Standard Actions: An IntroductionMSI Sequences and Standard Actions: An Introduction
MSI Sequences and Standard Actions: An IntroductionFlexera
 
Install shield
Install shieldInstall shield
Install shieldSoubow Su
 
Housing Vouchers: What They Are and How To Calculate Them
Housing Vouchers: What They Are and How To Calculate ThemHousing Vouchers: What They Are and How To Calculate Them
Housing Vouchers: What They Are and How To Calculate ThemAndy Carswell
 
Cpd Presentation Learning Walks
Cpd Presentation Learning WalksCpd Presentation Learning Walks
Cpd Presentation Learning Walksguest176a68
 
India 2013 route powerpoint 2
India 2013 route powerpoint 2India 2013 route powerpoint 2
India 2013 route powerpoint 2Gordon KEMP
 
Internet Services Tutorial
Internet Services TutorialInternet Services Tutorial
Internet Services Tutorialgueste468ce6
 
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GA
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GACommunity Land Trusts and Social/Neighborhood Outcomes in Athens, GA
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GAAndy Carswell
 
2017ryan Cheale
2017ryan Cheale2017ryan Cheale
2017ryan Chealeryanch
 
Rent vs. Own Slide Show
Rent vs. Own Slide ShowRent vs. Own Slide Show
Rent vs. Own Slide ShowAndy Carswell
 
Workflow Manager Datasheet
Workflow Manager DatasheetWorkflow Manager Datasheet
Workflow Manager DatasheetFlexera
 
Getting smarter about discovery streaming
Getting smarter about discovery streamingGetting smarter about discovery streaming
Getting smarter about discovery streamingMatt Strine
 
Voz insesamista 4
Voz insesamista 4Voz insesamista 4
Voz insesamista 4mrmaldana
 
Strat Mgt Part Ii
Strat Mgt Part IiStrat Mgt Part Ii
Strat Mgt Part IiSandeep Rai
 

En vedette (20)

MSI Sequences and Standard Actions: An Introduction
MSI Sequences and Standard Actions: An IntroductionMSI Sequences and Standard Actions: An Introduction
MSI Sequences and Standard Actions: An Introduction
 
Install shield
Install shieldInstall shield
Install shield
 
Housing Vouchers: What They Are and How To Calculate Them
Housing Vouchers: What They Are and How To Calculate ThemHousing Vouchers: What They Are and How To Calculate Them
Housing Vouchers: What They Are and How To Calculate Them
 
Slave Narratives
Slave NarrativesSlave Narratives
Slave Narratives
 
melnic
melnicmelnic
melnic
 
Cpd Presentation Learning Walks
Cpd Presentation Learning WalksCpd Presentation Learning Walks
Cpd Presentation Learning Walks
 
India 2013 route powerpoint 2
India 2013 route powerpoint 2India 2013 route powerpoint 2
India 2013 route powerpoint 2
 
Internet Services Tutorial
Internet Services TutorialInternet Services Tutorial
Internet Services Tutorial
 
Wordpress prez 2011
Wordpress prez 2011Wordpress prez 2011
Wordpress prez 2011
 
Wintereinbruch
WintereinbruchWintereinbruch
Wintereinbruch
 
melnic
melnicmelnic
melnic
 
TIENDA VIRTUAL
TIENDA VIRTUALTIENDA VIRTUAL
TIENDA VIRTUAL
 
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GA
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GACommunity Land Trusts and Social/Neighborhood Outcomes in Athens, GA
Community Land Trusts and Social/Neighborhood Outcomes in Athens, GA
 
2017ryan Cheale
2017ryan Cheale2017ryan Cheale
2017ryan Cheale
 
Rent vs. Own Slide Show
Rent vs. Own Slide ShowRent vs. Own Slide Show
Rent vs. Own Slide Show
 
Workflow Manager Datasheet
Workflow Manager DatasheetWorkflow Manager Datasheet
Workflow Manager Datasheet
 
Getting smarter about discovery streaming
Getting smarter about discovery streamingGetting smarter about discovery streaming
Getting smarter about discovery streaming
 
Voz insesamista 4
Voz insesamista 4Voz insesamista 4
Voz insesamista 4
 
Strat Mgt Part Ii
Strat Mgt Part IiStrat Mgt Part Ii
Strat Mgt Part Ii
 
Maths Project
Maths ProjectMaths Project
Maths Project
 

Similaire à Types of MSI Custom Actions

Setup deployment in vs
Setup deployment in vsSetup deployment in vs
Setup deployment in vsnikhil sreeni
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsDragos_Mihailescu
 
Improving Your Admin Image
Improving Your Admin ImageImproving Your Admin Image
Improving Your Admin Imageelisemoss
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasicsseethalux
 
Talk on .NET assemblies
Talk on .NET assembliesTalk on .NET assemblies
Talk on .NET assembliesVidya Agarwal
 
Visual Studio commands
Visual Studio commandsVisual Studio commands
Visual Studio commandsPVS-Studio
 
Drupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployDrupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployJohn Smith
 
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...Concentrated Technology
 
Enterprise Library 2.0 Core Architecture
Enterprise Library 2.0 Core ArchitectureEnterprise Library 2.0 Core Architecture
Enterprise Library 2.0 Core Architecturemcgurk
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2Pascal Rapicault
 
OFM SOA Suite 11gR1 – Installation Demonstration
OFM SOA Suite 11gR1 – Installation DemonstrationOFM SOA Suite 11gR1 – Installation Demonstration
OFM SOA Suite 11gR1 – Installation DemonstrationSreenivasa Setty
 
Enterprise Library 3.0 Overview
Enterprise Library 3.0 OverviewEnterprise Library 3.0 Overview
Enterprise Library 3.0 Overviewmcgurk
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and GitAlec Clews
 
Free tools for rapidly deploying software
Free tools for rapidly deploying softwareFree tools for rapidly deploying software
Free tools for rapidly deploying softwareConcentrated Technology
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptxLadduAnanu
 

Similaire à Types of MSI Custom Actions (20)

Setup deployment in vs
Setup deployment in vsSetup deployment in vs
Setup deployment in vs
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
 
Rapidly deploying software
Rapidly deploying softwareRapidly deploying software
Rapidly deploying software
 
Improving Your Admin Image
Improving Your Admin ImageImproving Your Admin Image
Improving Your Admin Image
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasics
 
Windows installerbasics
Windows installerbasicsWindows installerbasics
Windows installerbasics
 
Readme
ReadmeReadme
Readme
 
IDAPRO
IDAPROIDAPRO
IDAPRO
 
Talk on .NET assemblies
Talk on .NET assembliesTalk on .NET assemblies
Talk on .NET assemblies
 
Visual Studio commands
Visual Studio commandsVisual Studio commands
Visual Studio commands
 
Drupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployDrupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - Deploy
 
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
TechMentor Fall, 2011 - Packaging Software for Automated Deployment with Wind...
 
Enterprise Library 2.0 Core Architecture
Enterprise Library 2.0 Core ArchitectureEnterprise Library 2.0 Core Architecture
Enterprise Library 2.0 Core Architecture
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
Prepping software for w7 deployment
Prepping software for w7 deploymentPrepping software for w7 deployment
Prepping software for w7 deployment
 
OFM SOA Suite 11gR1 – Installation Demonstration
OFM SOA Suite 11gR1 – Installation DemonstrationOFM SOA Suite 11gR1 – Installation Demonstration
OFM SOA Suite 11gR1 – Installation Demonstration
 
Enterprise Library 3.0 Overview
Enterprise Library 3.0 OverviewEnterprise Library 3.0 Overview
Enterprise Library 3.0 Overview
 
Software Build processes and Git
Software Build processes and GitSoftware Build processes and Git
Software Build processes and Git
 
Free tools for rapidly deploying software
Free tools for rapidly deploying softwareFree tools for rapidly deploying software
Free tools for rapidly deploying software
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptx
 

Plus 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
 

Plus 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
 

Dernier

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Dernier (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Types of MSI Custom Actions

  • 1. W H I T E PA P E R Types of MSI Custom Actions by Robert Dickau Principal Technical Training Writer, Flexera Software
  • 2. Types of MSI Custom Actions Introduction It is also assumed you are familiar with some of the wizards This white paper describes some of the types of custom actions available with InstallShield, such as the Release Wizard supported by Windows Installer (MSI). These types include: and Component Wizard. • aunching executables L • he Release Wizard, available under the Build menu T • alling DLL or script functions C and also from the Releases view, lets you describe the • etting Property-table properties and Directory- S properties—media type, compression settings, and so table properties forth—of a release, and then builds the specified • rror actions E release image. • he Component Wizard, available by right-clicking a T It also highlights how InstallShield® from Flexera Software feature in the Setup Design view, lets you create special assists you in working with custom actions. types of components, such as components for COM servers, fonts, and Windows services. Using the InstallShield Environment This white paper frequently refers to the InstallShield The InstallShield Help Library contains information development environment. It is assumed you are familiar about using every view and wizard in the InstallShield with the general layout of the InstallShield interface, which environment. The InstallShield Help Library is available when contains a list of views with which you can modify different you press F1 with any view selected; you can also select portions of your installation project. 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 scmdbld -p C:ProductName.ism -a BuildConfig -r i general product and project properties; the Setup Design ReleaseName view enables you to edit the features, components, and component data used by your project; the Registry view In addition, InstallShield provides an Automation interface, enables you to modify the registry data installed by your with which you can modify the contents of a project file installation program; and the Direct Editor view gives you without using the graphical environment. access to the raw MSI database tables. 2
  • 3. Types of MSI Custom Act ions If the executable being launched is in a directory on the Learn More about InstallShield target system, the custom action must be placed after the If you wish to learn more about the capabilities of standard CostFinalize action. The CostFinalize action InstallShield, please visit the Flexera Software Web sets the values of Directory properties, and an attempt to site at www.flexerasoftware.com/installshield. reference a Directory property (such as WindowsFolder or SystemFolder) will cause run-time error 2732, which is described in the Windows Installer Help Library as Custom Action Basics “Directory Manager not initialized”. There are two steps involved for each custom action you want to use: In this case, because Notepad.exe is present on the target system, this custom action can be placed in either the User 1. Define the action: Specify what the action does (launch Interface sequence or Execute sequence (or both), after the an executable, call a DLL function, set a property, and CostFinalize action. It is not necessary to specify deferred so forth) and its other behavior (whether to test the execution, or for the InstallFiles action to have run first. return value, and so forth). 2. Schedule the action: Specify where the action runs An executable custom action does not have access relative to other actions, which installation phase to installation properties, other than those passed as (immediate execution, deferred execution, and so command-line arguments. A typical use of a command- forth) the action uses, and under what conditions the line argument is to pass the path to a document to the action runs. executable being launched. For example, suppose you want to launch a Readme file with Notepad.exe after data A general principle is that you should not use a custom transfer takes place. In this case, the Filename & Command action when a standard action performs the desired task. line setting for the custom action might read: One reason is that the effects of custom actions are not automatically removed when your application is uninstalled notepad.exe “[INSTALLDIR]Readme.txt” or rolled back. The quotation marks around the argument are required by For each custom action that performs system changes, you most executables in case the file path contains any spaces. should create corresponding uninstall and rollback actions. An action that launches an executable being installed, Executable Custom Actions or one that opens a document being installed, must be One of the most commonly used types of custom actions is scheduled for deferred execution after the standard an action that launches an executable. This type of action is InstallFiles action. During immediate mode, data transfer commonly used to open documents installed by the current has not yet begun; and in deferred mode before InstallFiles, installation, or to launch system executables to perform documents and executables will not have been placed on system changes that Windows Installer does not directly the target system. support. The executable that you launch with this type of custom action can be installed by the current installation, already located on the target system, or streamed into the Binary table of the MSI database. For example, suppose you want to launch the copy of Notepad from the target system’s Windows directory. You begin by opening the Custom Actions and Sequences view, right-clicking the Custom Actions icon, and selecting New EXE > Path referencing a directory. The condition Not Installed ensures the action runs—that In the Working Directory setting, enter WindowsFolder, is, the Readme file is displayed—only during a first- the Directory property representing the location of the time installation, and not during maintenance mode or executable. In the Filename & Command line setting, enter uninstallation. the executable name notepad.exe. To ensure the action runs only during a first-time, full-UI installation, you could use the condition (Not Installed) and (UILevel=5). A further possible refinement is to associate the action with the component containing the Readme file, using a component-action condition ($ComponentName=3). Flexera Software: InstallShield White Paper Series 3
  • 4. Types of MSI Custom Act ions DLL and Script Custom Actions return ERROR_SUCCESS; // return success to MSI In addition to running executables, Windows Installer enables } you to extend your installation by calling code in DLLs and Assuming this code has been compiled into a DLL called scripts, where the DLL or script can be embedded in the MsiDllCustomAction.dll, and that the function name installation or installed with the other component data. This CustomActionFunction is correctly exported from the DLL section introduces the concepts related to calling DLL and (using a .def file, for example), the properties of a custom script code. action that calls the DLL might appear similar to the following figure. In the Function Name setting, you specify The Windows Installer engine can directly call functions only the function name because the return value and from a “Windows Installer DLL”, or “MSI DLL”. An MSI DLL arguments are predefined for an MSI DLL. providing custom actions exports at least one function with the following signature: UINT __stdcall FunctionName(MSIHANDLE hInstall) { ... } A function you intend to call from an MSI DLL custom action must use this signature, with the only variation allowed being the function name. The return value is used to determine if the function succeeds or fails, and therefore whether the installation should exit as a result of the custom action; and the MSIHANDLE argument passed to the Similarly, a VBScript custom action typically defines a function is a handle to the running installation, used as an function similar to the following: argument to MSI API functions such as MsiGetProperty that query the running installation. Function FunctionName( ) ‘ do something Windows Installer requires that a DLL used in this type of End Function custom action must be a callable DLL, and not a Visual Basic DLL or .NET DLL. The DLL function cannot accept arguments, The exception is the setting VBScript > Stored in custom but instead must pass information back and forth using action, which can store short scripts directly in the Windows Installer properties. The MsiSetProperty function CustomAction table, and for which you do not specify a sets the value of a property, and MsiGetProperty reads the function name. value of a property. Like MSI DLL custom action functions, VBScript custom NOTE: The InstallShield environment supports a special type action functions do not accept arguments, but instead must of DLL custom action called a “Standard DLL” action, which also communicate with the running installer engine using enables you to call DLL functions with signatures different properties. In VBScript custom actions, the Session object from the MSI DLL function presented earlier. When you represents the running installation, and the expression create a Standard DLL custom action, you will be prompted Session.Property(“PROPNAME”) enables you to get and set for the DLL name, the function name, and for constants the value of a property. or properties used to provide the function arguments and return values. Recent InstallShield versions also support Setting Properties “managed code” custom actions, such as C# and VB.NET A set-a-property custom action either sets or creates a DLL methods. property. If the property exists in the Property table, the custom action will overwrite its value, and if the property Code for a simple MSI DLL custom action might appear does not exist in the Property table, the custom action will as follows: create it. As described previously, however, the values of private properties are reset to their defaults when execution #pragma comment(lib, “msi.lib”) switches from the User Interface sequence to the #include <windows.h> Execute sequence. #include <msi.h> #include <msiquery.h> An advantage to using set-a-property custom actions // an MSI DLL custom action function must use this signature over defining properties in the Property table is that the UINT __stdcall CustomActionFunction(MSIHANDLE hInstall) action can resolve Formatted expressions, while entries in { the Property table do not resolve Formatted expressions. MessageBox( For example, you can create a custom action that sets GetForegroundWindow( ), TIMESTAMP to the value “[Date] at [Time]”, and the TEXT(“Running MSI DLL action...”), values of the embedded properties Date and Time will be TEXT(“MSI DLL”), expanded at run time. You can then use the Formatted MB_OK | MB_ICONINFORMATION); expression [TIMESTAMP] in, for example, a registry value, and the value will be expanded at run time. 4 Flexera Software: InstallShield White Paper Series
  • 5. Types of MSI Custom Act ions To install this component to the directory located by the custom action, create a set-a-directory custom action with source SETTINGS_DIR and target [FOUND_DIR], scheduling the action after the CostFinalize action in both the User Interface and Execute sequences. An example of this type of custom action that exists in each new InstallShield project is called SetARPINSTALLLOCATION, which sets the predefined property ARPINSTALLLOCATION to [INSTALLDIR]. The value of ARPINSTALLLOCATION is automatically written to the target system’s registry by the Windows Installer engine, enabling a custom action or external program to read the (Note that the action uses the condition FOUND_DIR, main install directory for an existing product using the which ensures SETTINGS_DIR is changed from its default MsiGetProductInfo function or Installer.ProductInfo method. value only if custom action found the desired directory.) Because properties cannot be set during deferred execution, the In-Script Execution setting for a set-a-property custom At installation time, the component’s files will be installed to action cannot be changed from Immediate Execution. the directory discovered by the custom action. Setting Directory Properties Error Custom Actions You can also use set-a-directory custom actions to set Error custom actions display an error message to the end the values of Directory properties. Directory properties user, and then exit the installation when the user dismisses are those that refer to the locations of directories on the the error dialog. Because an error custom action always target system; built-in examples are ProgramFilesFolder, exits the installation, you should attach a condition to an DesktopFolder, and SystemFolder. If you want to modify the error action to ensure it runs only when appropriate. location that a Directory property points to, you can use a set-a-directory action. When you create an error action in the Custom Actions and Sequences view, you can use the Error Message setting Directory properties are set by the disk-costing process, and to specify the error message that should be displayed therefore set-a-directory custom actions must be scheduled when the action’s conditions are met at run time. Suppose after the standard CostFinalize action. that you schedule the action immediately after the LaunchConditions action in the Execute sequence. When NOTE: Windows Installer ensures that the value of each you rebuild and run the project, the effect of the custom Directory property ends with a backslash. If your installer action is to display an error dialog box similar to the writes a Directory property to the registry using the format following: [INSTALLDIR], for example, a typical value is C:Program FilesOur CompanyOur Application. If the value is to be read later from within your application, your application code must account for the trailing backslash. For example, suppose you have a component that you want to install to a directory located by a custom action. In this case, assume the custom action populates a property called FOUND_DIR. One option is to define the component to use a custom property with an arbitrary initial value, and then use a set-a-directory custom action to set the placeholder property value to [FOUND_DIR]. After the end user dismisses the error dialog box, the In the following figure, a component has been given installation exits. (For a silent installation, the error message a destination directory represented by the Directory is by default written to an MSI log file, and also to the property name SETTINGS_DIR, with a default value of system’s application event log.) [ProgramFilesFolder]Settings. The Error Message setting for an error custom action uses the Formatted data type, so you can expand the values of properties using the syntax [PropertyName]. Flexera Software: InstallShield White Paper Series 5
  • 6. Types of MSI Custom Act ions In addition, the Error Message setting for an error Next, use the Direct Editor view to create the message in custom action can contain the number of a record in the the Error table: Error table. The Error table is also exposed in the Direct Editor view. As described in the Windows Installer Help Error: 29000 Library topic “Error Table”, the error codes numbered Message: You must have a previous version of from 25000 to 30000 are reserved for custom actions, [ProductName] installed. Setup will now exit. and therefore you can use numbers in this range for your custom messages. The advantage to using an entry in the When you run the installation, because no earlier version of Error table, instead of using a hard-coded message in the the product is detected, the following error message Error Message setting, is that Error-table messages are is displayed. automatically added to the InstallShield string table, and therefore you can provide localized error messages for multi-language installations. In the Direct Editor view, you create a record in the Error table the same way you do for any other table. The fields used in the Error table are the Error field, which must be an integer error number, and the Message field, containing the message to display. When you add a record to the Error table, the InstallShield environment automatically adds an entry to the string table; for each language your project supports, you edit the string value in the String Tables view, available inside your project’s General Information view. Summary This white paper discusses some of the types of custom For an example of using an error custom action, suppose actions supported by Windows Installer (MSI). It also you have created a major upgrade of an existing project, highlights how InstallShield from Flexera Software assists and want to allow the installation to continue only if an you in working with custom actions. earlier product version is detected. You can detect if a major upgrade is taking place by testing if the “action property” defined in an Upgrade-table record contains any value. Begin a Free Evaluation of InstallShield You can download a free trial version of InstallShield from the Flexera Software Web site at: First, you create the error action in the Custom Actions www.flexerasoftware.com/installshield/eval and Sequences view. You can schedule the custom action in both the User Interface and Execute sequences Want to learn more best practices for building quality after the FindRelatedProducts action with condition Not installations? Join an InstallShield training class – visit ISACTIONPROP1. The action’s properties might be www.flexerasoftware.com/training for available classes. as follows: How Flexera Software Professional Services Can Help As the main mechanism for increasing functionality of your MSI, sound knowledge of the workings of MSI custom actions is crucial. Let Flexera Software’s experts guide you through the various options. Find out more at www.flexerasoftware.com/services/consulting/software- installations.htm. 6 Flexera Software: InstallShield White Paper Series
  • 7. Types of MSI Custom Act ions About Flexera Software Flexera Software is the leading provider of strategic solutions for Application Usage Management; solutions delivering continuous compliance, optimized usage and maximized value to application producers and their customers. Flexera Software is trusted by more than 80,000 customers that depend on our comprehensive solutions- from installation and licensing, entitlement and compliance management to application readiness and enterprise license optimization - to strategically manage application usage and achieve breakthrough results realized only through the systems-level approach we provide. For more information, please go to: www.flexerasoftware.com Flexera Software: InstallShield White Paper Series 7
  • 8. 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. IS_WP_MSIActionTypes_Oct11