<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Installation Developer &#187; What is a Custom Action?</title>
	<atom:link href="http://www.installationdeveloper.com/261/what-is-a-custom-action/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.installationdeveloper.com</link>
	<description>InstallShield Training - InstallShield Tutorials</description>
	<lastBuildDate>Thu, 26 Jan 2012 22:12:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What is a Custom Action?</title>
		<link>http://www.installationdeveloper.com/261/what-is-a-custom-action/</link>
		<comments>http://www.installationdeveloper.com/261/what-is-a-custom-action/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 05:29:16 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[installshield class]]></category>
		<category><![CDATA[installshield classes]]></category>
		<category><![CDATA[installshield course]]></category>
		<category><![CDATA[installshield courses]]></category>
		<category><![CDATA[installshield programmer]]></category>
		<category><![CDATA[Installshield Tutorial]]></category>
		<category><![CDATA[installshield tutorials]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=261</guid>
		<description><![CDATA[People moving from the InstallScript world to the Basic MSI world often have confusion about custom actions.&#160; So, here is a synopsis. To understand custom actions, you have to also understand sequences.&#160; An installation starts with a User Interface sequence where data is collected from the user, but nothing is changed on the target system.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>
People moving from the InstallScript world to the Basic MSI world often have confusion about custom actions.&nbsp; So, here is a synopsis.
</p>
<p>
To understand custom actions, you have to also understand sequences.&nbsp; An installation starts with a User Interface sequence where data is collected from the user, but nothing is changed on the target system.&nbsp; It then moves to the Execute sequence where there are no UI elements, but changes are made to the target system through various types of actions.&nbsp; So, what is an action?
</p>
<p>
Since&nbsp;Windows Installer installations are not controlled by a script (like InstallScript installations), there needed to be a way for developers to control the logic of an installation.&nbsp; This is facilitated by providing a set of standard and custom actions.&nbsp; An action in a Windows Installer installation is like a function in a program.
</p>
<p>
Now, actions are arranged in sequences, and sequences tell the Windows Installer the order to which actions are to be executed.&nbsp; The Custom Actions and Sequences view shows the sequences in an installation project.&nbsp; Next, we have to understand the types of Windows Installer installations.
</p>
<p>
There are three types of Windows Installer installations.&nbsp; There is Installation, Advertisement, and Administrative.&nbsp; In an Installation installation, the sequence is executed during a normal installation.&nbsp; In an Advertisement installation, the availability of an application is advertised, but not installed until requested.&nbsp; In an Administrative installation, an uncompressed source image of an application is created on a network.&nbsp; It&#39;s similar to the source image on a CD-ROM.&nbsp; Users can then install the product from this source.
</p>
<p>
The Installation and Administration installations both have User Interface and Execute sequences, but the Advertisement installation only has an execute sequence.&nbsp; But, let&#39;s get back to actions.
</p>
<p>
There are several types of actions.&nbsp; There is the Immediate action, Deferred action, Rollback action, and Commit action.&nbsp; Here are the differences.
</p>
<p>
An Immediate action is executed immediately and does not odify the target system, because there would be no rollback operations that can undo the changes.
</p>
<p>
A Deferred action will not be executed immediately when encountered but deferred to the installation script.&nbsp; Typical Deferred actions install files, modify the registry, etc.
</p>
<p>
A Rollback action is a special type of Deferred action.&nbsp; When the Windows Installer generates is script, it simultaneously generates a rollback script.&nbsp; The rollback script contains operations to be performed when the installation is rolled back.&nbsp; With custom actions, it is the developer&#39;s responsibility to provide a method to rollback system changes, since the Windows Installer would know nothing about the custom action.
</p>
<p>
A Commit action is a type of deferred action which is a complement to a rollback action.&nbsp; Commit actions are only executed at the end of a successful installation.&nbsp; There are placed in the installation script, but not executed until the end.
</p>
<p>
There is a lot more to all of this, but you have enough information to understand about custom actions.&nbsp; Custom Actions are simply a way to integrate custom code and data into a Windows Installer installation.&nbsp; Because after all, the Windows Installer&nbsp;is not all things to all people.&nbsp; It will&nbsp;probably not provide everything you need to do your installation.&nbsp; So, custom actions are a way to customize the installation for your own needs.
</p>
<p>
What&#39;s nice is that there are many types of custom actions.&nbsp; For example, you can create a custom action that just sets a property.&nbsp; Other types of custom actions are similar to functions, and&nbsp;can be&nbsp;written in VBScript or InstallScript.&nbsp; Also, new to InstallShield 2009 is the ability to write Managed Code Custom Actions.&nbsp; You can now write&nbsp;custom actions in your favorite language, C#, VB.NET, or something else.&nbsp; Very convenient.
</p>
<p>
To view free InstallShield tutorial movies, visit <a href="http://www.wavepointstudios.net/Free-InstallShield-Tutorials.aspx">http://www.wavepointstudios.net/Free-InstallShield-Tutorials.aspx</a></p>
<!-- Start Sociable --><div class="sociable"><div class="sociable_tagline"><a class='sociable_tagline' target='_blank' href='http://blogplay.com' style='color:#333333;text-decoration:none'>Be Sociable, Share!</a></div><ul class='clearfix'><li><a title="Twitter" class="option1_32" style="background-position:-288px -32px" rel="nofollow" target="_blank" href="http://twitter.com/intent/tweet?text=What%20is%20a%20Custom%20Action%3F%20-%20http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F%20(via%20@sociablesite)"></a></li><li><a title="Facebook" class="option1_32" style="background-position:-96px 0px" rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;t=What%20is%20a%20Custom%20Action%3F"></a></li><li><a title="email" class="option1_32" style="background-position:-160px 0px" rel="nofollow" target="_blank" href="https://mail.google.com/mail/?view=cm&fs=1&to&su=What%20is%20a%20Custom%20Action%3F&body=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&ui=2&tf=1&shva=1"></a></li><li><a class="option1_32" style="cursor:pointer;background-position:-128px 0px" rel="nofollow" title="Add to favorites - doesn't work in Chrome"  onClick="javascript:AddToFavorites();"></a></li><li><a title="StumbleUpon" class="option1_32" style="background-position:-224px -32px" rel="nofollow" target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&title=What%20is%20a%20Custom%20Action%3F"></a></li><li><a title="Delicious" class="option1_32" style="background-position:-32px 0px" rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;notes=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li><a title="Google Reader" class="option1_32" style="background-position:-224px 0px" rel="nofollow" target="_blank" href="http://www.google.com/reader/link?url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;srcURL=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;srcTitle=Installation+Developer+InstallShield+Training+-+InstallShield+Tutorials"></a></li><li><a title="LinkedIn" class="option1_32" style="background-position:-288px 0px" rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;source=Installation+Developer+InstallShield+Training+-+InstallShield+Tutorials&amp;summary=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li><a title="BlinkList" class="option1_32" style="background-position:0px 0px" rel="nofollow" target="_blank" href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;Title=What%20is%20a%20Custom%20Action%3F"></a></li><li><a style="cursor:pointer" rel="nofollow" onMouseOut="fixOnMouseOut(document.getElementById('sociable-post-261'), event, 'post-261')" onMouseOver="more(this,'post-261')"><img style='margin-top:9px' src='http://www.installationdeveloper.com/wp-content/plugins/sociable/images/more.png'></a></li></ul><div onMouseout="fixOnMouseOut(this,event,'post-261')" id="sociable-post-261" style="display:none;">   

    <div style="top: auto; left: auto; display: block;" id="sociable">



		<div class="popup">

			<div class="content">

				<ul><li style="heigth:32px;width:32px"><a title="Myspace" class="option1_32" style="background-position:0px -32px" rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;t=What%20is%20a%20Custom%20Action%3F"></a></li><li style="heigth:32px;width:32px"><a title="Digg" class="option1_32" style="background-position:-64px 0px" rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;bodytext=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li style="heigth:32px;width:32px"><a title="Reddit" class="option1_32" style="background-position:-128px -32px" rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F"></a></li><li style="heigth:32px;width:32px"><a title="Google Bookmarks" class="option1_32" style="background-position:-192px 0px" rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;annotation=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li style="heigth:32px;width:32px"><a title="HackerNews" class="option1_32" style="background-position:-256px 0px" rel="nofollow" target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;t=What%20is%20a%20Custom%20Action%3F"></a></li><li style="heigth:32px;width:32px"><a title="MSNReporter" class="option1_32" style="background-position:-352px 0px" rel="nofollow" target="_blank" href="http://reporter.es.msn.com/?fn=contribute&amp;Title=What%20is%20a%20Custom%20Action%3F&amp;URL=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li style="heigth:32px;width:32px"><a title="Sphinn" class="option1_32" style="background-position:-192px -32px" rel="nofollow" target="_blank" href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F"></a></li><li style="heigth:32px;width:32px"><a title="Posterous" class="option1_32" style="background-position:-64px -32px" rel="nofollow" target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;title=What%20is%20a%20Custom%20Action%3F&amp;selection=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li><li style="heigth:32px;width:32px"><a title="Tumblr" class="option1_32" style="background-position:-256px -32px" rel="nofollow" target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.installationdeveloper.com%2F261%2Fwhat-is-a-custom-action%2F&amp;t=What%20is%20a%20Custom%20Action%3F&amp;s=%0D%0APeople%20moving%20from%20the%20InstallScript%20world%20to%20the%20Basic%20MSI%20world%20often%20have%20confusion%20about%20custom%20actions.%26nbsp%3B%20So%2C%20here%20is%20a%20synopsis.%20%0D%0A%0D%0A%0D%0ATo%20understand%20custom%20actions%2C%20you%20have%20to%20also%20understand%20sequences.%26nbsp%3B%20An%20installation%20starts%20with%20"></a></li></ul>			

			</div>        

		  <a style="cursor:pointer" onclick="hide_sociable('post-261',true)" class="close">



		  <img onclick="hide_sociable('post-261',true)" title="close" src="http://www.installationdeveloper.com/wp-content/plugins/sociable/images/closelabel.png">

		  </a>

		</div>

	</div> 

  </div></div><div class='sociable' style='float:none'><ul class='clearfix'><li id="Twitter_Counter"><a href="https://twitter.com/share" data-text="What is a Custom Action? - http://www.installationdeveloper.com/261/what-is-a-custom-action/ (via #sociablesite)" data-url="http://www.installationdeveloper.com/261/what-is-a-custom-action/" class="twitter-share-button" data-count="horizontal">Tweet</a><script type="text/javascript" src="//platform.twitter.com/widgets.js"></script></li><li id="Facebook_Counter"><iframe src="//www.facebook.com/plugins/like.php?href=http://www.installationdeveloper.com/261/what-is-a-custom-action/&send=false&layout=button_count&show_faces=false&action=like&colorscheme=light&font" scrolling="no" frameborder="0" style="border:none; overflow:hidden;height:32px;width:100px" allowTransparency="true"></iframe></li><li id="Google_+"><g:plusone annotation="bubble" href="http://www.installationdeveloper.com/261/what-is-a-custom-action/" size="medium"></g:plusone></li><li id="LinkedIn_Counter"><script src="http://platform.linkedin.com/in.js" type="text/javascript"></script><script type="IN/Share" data-url="http://www.installationdeveloper.com/261/what-is-a-custom-action/" data-counter="right"></script></li><li id="StumbleUpon_Counter"><script src="http://www.stumbleupon.com/hostedbadge.php?s=2&r=http://www.installationdeveloper.com/261/what-is-a-custom-action/"></script></li></ul></div><!-- End Sociable -->]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/261/what-is-a-custom-action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

