<?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</title>
	<atom:link href="http://www.installationdeveloper.com/comments/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>Get Handle to the MSI Database in An InstallScript MSI Project</title>
		<link>http://www.installationdeveloper.com/2621/get-handle-to-the-msi-database-in-an-installscript-msi-project/</link>
		<comments>http://www.installationdeveloper.com/2621/get-handle-to-the-msi-database-in-an-installscript-msi-project/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 22:12:00 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Code Snippet]]></category>
		<category><![CDATA[custom action]]></category>
		<category><![CDATA[Custom Actions]]></category>
		<category><![CDATA[installscript]]></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>
		<category><![CDATA[Learning Curve]]></category>
		<category><![CDATA[Msi]]></category>
		<category><![CDATA[Parameters]]></category>
		<category><![CDATA[Running]]></category>
		<category><![CDATA[windows installer]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2621</guid>
		<description><![CDATA[If you are working in an InstallScript MSI project, you will sometimes need to call a Windows Installer function. To do this, you will need a handle to the currently-running MSI database. In a Basic MSI project, you have access to this handle from any InstallScript custom action. This is because hMSI is always one [...]]]></description>
			<content:encoded><![CDATA[<p>If you are working in an <strong>InstallScript MSI</strong> project, you will sometimes need to call a <strong>Windows Installer</strong> function.  To do this, you will need a handle to the currently-running <strong>MSI</strong> database.</p>
<p>In a <strong>Basic MSI</strong> project, you have access to this handle from any <strong>InstallScript</strong> custom action.  This is because <strong>hMSI</strong> is always one of the parameters passed to <strong>InstallScript</strong> functions in custom actions.</p>
<p>In <strong>InstallScript MSI</strong> projects, you have to use something different.  Have a look at this code snippet:</p>
<p><img src="http://www.installationdeveloper.com/images/ismsi-handle.png" alt="The handle to the MSI database" title="The handle to the MSI database"/><br />
<br/><br />
<strong>ISMSI_HANDLE</strong> is the system variable you should use to access the currently-running <strong>MSI</strong> database.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2621/get-handle-to-the-msi-database-in-an-installscript-msi-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Get the Actual Return Code From the LaunchApp Functions</title>
		<link>http://www.installationdeveloper.com/2610/how-to-get-the-actual-return-code-from-the-launchapp-functions/</link>
		<comments>http://www.installationdeveloper.com/2610/how-to-get-the-actual-return-code-from-the-launchapp-functions/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:56:12 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Code Snippet]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Return Code]]></category>
		<category><![CDATA[Success]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2610</guid>
		<description><![CDATA[When you use one of the LaunchApp functions (LaunchApp, LaunchAppAndWait, LaunchApplication), you get a return code. However, that return code only shows the result of InstallShield executing the command. If InstallShield was successful, you will get a return code indicating success, which is ISERR_SUCCESS. If it was not successful, you will get a value less [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial; font-size: 14px; font-weight: bold; color: #000000; background-color: #ffff00;"></span></p>
<p><span style="color: #000000; font-weight:bold;"></span></p>
<p>When you use one of the <strong>LaunchApp</strong> functions (LaunchApp, LaunchAppAndWait, LaunchApplication), you get a return code.  However, that return code only shows the result of <strong>InstallShield</strong> executing the command.</p>
<p>If InstallShield was successful, you will get a return code indicating success, which is <strong>ISERR_SUCCESS</strong>.  If it was not successful, you will get a value less than <strong>ISERR_SUCCESS</strong>.</p>
<p>Here is a code snippet showing you how to get the actual return code from the command being executed:<br />
<img src="http://www.installationdeveloper.com/images/return-code-from-launchapp.png" alt="How to Get the Actual Return Code From a LaunchApp Function" title="How to Get the Actual Return Code From a LaunchApp Function"/></p>
<p>See how easy that was.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2610/how-to-get-the-actual-return-code-from-the-launchapp-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Summary Information Table in the Direct Editor</title>
		<link>http://www.installationdeveloper.com/2593/using-the-summary-information-table-in-the-direct-editor/</link>
		<comments>http://www.installationdeveloper.com/2593/using-the-summary-information-table-in-the-direct-editor/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 18:45:03 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Application Field]]></category>
		<category><![CDATA[Different Times]]></category>
		<category><![CDATA[Hadn]]></category>
		<category><![CDATA[Hard Drives]]></category>
		<category><![CDATA[Ide]]></category>
		<category><![CDATA[Information Table]]></category>
		<category><![CDATA[Installation Projects]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Tool]]></category>
		<category><![CDATA[Msi File]]></category>
		<category><![CDATA[Msi Files]]></category>
		<category><![CDATA[Orca]]></category>
		<category><![CDATA[Running]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Setup Toolkit]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[windows installer]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2593</guid>
		<description><![CDATA[One of the tables in the Direct Editor view of the InstallShield IDE is the Summary Information table. The information stored in this table can be useful to you at different times. I&#8217;ll give you an example of one such use. First off, here is a screenshot of the Summary Information table for an installation [...]]]></description>
			<content:encoded><![CDATA[<p>One of the tables in the <strong>Direct Editor</strong> view of the <strong>InstallShield IDE</strong> is the <strong>Summary Information</strong> table.  The information stored in this table can be useful to you at different times.  I&#8217;ll give you an example of one such use.</p>
<p>First off, here is a screenshot of the Summary Information table for an installation that is being built by <strong>InstallShield</strong>:</p>
<p><img src="http://www.installationdeveloper.com/images/summary-information-table-1.png" alt="The Summary Information table in an InstallShield-built installation" title="The Summary Information table in an InstallShield-built installation"/><br/>
<div align="center"><strong>The Summary Information table in an InstallShield-built installation</strong></div>
<p><br/></p>
<p>Notice that the <strong>Creating Application</strong> field shows <strong>InstallShield 2012 &#8211; Premier Edition 18</strong>.<br />
<br/><br />
Now, let&#8217;s take a look at the Summary Information table for an installation that was built with another tool:</p>
<p><img src="http://www.installationdeveloper.com/images/summary-information-table-2.png" alt="The Summary Information table in a Windows Installer-built installation" title="The Summary Information table in a Windows Installer-built installation"/><br/>
<div align="center"><strong>The Summary Information table in a Windows Installer-built installation</strong></div>
<p><br/></p>
<p>Notice that the <strong>Creating Application</strong> for this installation was the <strong>Windows Installer</strong>.  This information was built by a Microsoft tool.  Perhaps <strong>Orca</strong>.  Perhaps the <strong>Setup Toolkit</strong> that used to be included with <strong>Visual Studio</strong>.</p>
<p>Here&#8217;s one of my own uses of this information.</p>
<p>I had a recent client who had purchased the rights to an application and associated installation.  He was given several hard drives worth of information.  I was hired to work on the installation and re-brand it for his company.</p>
<p>The installation was an <strong>InstallScript MSI</strong> project that at the end of the installation was running two separate .msi files.  I needed to find the installation projects that created these .msi files so I could incorporate everything into one installation project, instead of three.</p>
<p>I opened each .msi file in <strong>InstallShield</strong> and went to the <strong>Summary Information</strong> table in the <strong>Direct Editor</strong>.  There I learned that InstallShield hadn&#8217;t built the .msi files.  Something else had.  That was useful information to know.  It told me there weren&#8217;t going to be any InstallShield projects that I could look at.  We had to look elsewhere.</p>
<p>Just remember the <strong>Summary Information</strong> table is there.  You may need to look at it sometime. </p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2593/using-the-summary-information-table-in-the-direct-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prebuild and Postbuild Events in An InstallShield Installation</title>
		<link>http://www.installationdeveloper.com/2572/prebuild-and-postbuild-events-in-an-installshield-installation/</link>
		<comments>http://www.installationdeveloper.com/2572/prebuild-and-postbuild-events-in-an-installshield-installation/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 02:02:01 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Cd Release]]></category>
		<category><![CDATA[Database Files]]></category>
		<category><![CDATA[Directory Structure]]></category>
		<category><![CDATA[Environment Variables]]></category>
		<category><![CDATA[Functionality]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Nbsp]]></category>
		<category><![CDATA[Nbsp Nbsp Nbsp Nbsp Nbsp]]></category>
		<category><![CDATA[Path Variables]]></category>
		<category><![CDATA[Product Configuration]]></category>
		<category><![CDATA[Release Location]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Xxx]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2572</guid>
		<description><![CDATA[InstallShield allows you to specify commands that can be run at various stages of the build process. These commands are called Build Events. This can be very useful, but in order to use this functionality, you must have the InstallShield Premier edition. To define a Build Event, just go to the Releases view, click on [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial; font-size: 14px; font-weight: bold; color: #000000; background-color: #ffff00;"></span></p>
<p><span style="color: #000000; font-weight:bold;"></span></p>
<p><strong>InstallShield</strong> allows you to specify commands that can be run at various stages of the build process.  These commands are called <strong>Build Events</strong>.  This can be very useful, but in order to use this functionality, you must have the <strong>InstallShield Premier</strong> edition.</p>
<p>To define a <strong>Build Event</strong>, just go to the <strong>Releases</strong> view, click on a release, then click the <strong>Events</strong> tab.  There you can define <strong>Prebuild</strong>, <strong>Precompressor</strong> and <strong>Postbuild</strong> events.</p>
<p>When you enter a command in an event, you can use any of the path variables and environment variables that are defined in your project.</p>
<p>Here are the variables you can use for event commands:</p>
<ul>
<li><strong>ISReleaseName</strong> &#8211; name of the release that InstallShield is building.</li>
<li><strong>ISProductConfigName</strong> &#8211; name of the product configuration that contains the release that InstallShield is building.</li>
<li><strong>ISReleasePath</strong> &#8211; the build location of the release that InstallShield is building.  It is set through the Release Location setting on the Build tab for a release in the Releases view.</li>
<li><strong>ISReleaseUsesShallowFolderPath</strong>s &#8211; set to true or false to indicate whether InstallShield uses a shallow folder directory structure when building your release.</li>
</ul>
<p>For an example of a <strong>Prebuild</strong> event, have a look at the screenshot below.<br />
<br/><br />
<img src="http://www.installationdeveloper.com/images/prebuild-postbuild-1.png" alt="The Events tab for a release showing a Prebuild event" title="The Events tab for a release showing a Prebuild event"/><br/>
<div align="center"><strong>The Events tab for a release showing a Prebuild event</strong></div>
<p><br/><br />
Here, I have selected the <strong>Events</strong> tab for the <strong>CD</strong> release.  For the <strong>Prebuild</strong> event, I am running two commands that copy a couple of <strong>SQL database</strong> files from one folder to another.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2572/prebuild-and-postbuild-events-in-an-installshield-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Determine What Kind of InstallShield Project You Have</title>
		<link>http://www.installationdeveloper.com/2564/how-to-determine-what-kind-of-installshield-project-you-have/</link>
		<comments>http://www.installationdeveloper.com/2564/how-to-determine-what-kind-of-installshield-project-you-have/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 03:58:20 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Application Developer]]></category>
		<category><![CDATA[Boss]]></category>
		<category><![CDATA[Functionality]]></category>
		<category><![CDATA[Ide]]></category>
		<category><![CDATA[Installation Project]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Square Brackets]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2564</guid>
		<description><![CDATA[I have noticed that a common scenario among new users of InstallShield is that they do not know what kind of project they have. It generally goes like this. A person is an application developer in a company and their boss gives them an existing InstallShield installation project that was done by someone else. It [...]]]></description>
			<content:encoded><![CDATA[<p>I have noticed that a common scenario among new users of <strong>InstallShield</strong> is that they do not know what kind of project they have.</p>
<p>It generally goes like this.  A person is an application developer in a company and their boss gives them an existing <strong>InstallShield</strong> installation project that was done by someone else.  It is now their job to add new functionality to the installation.  The problem is they don&#8217;t even know what kind of project they have.</p>
<p>The easiest way to determine this is to open the project in the <strong>IDE</strong> and look at the title bar.  The project type will be shown in square brackets.</p>
<p><img src="http://www.installationdeveloper.com/images/title-bar-showing-project-type-1.png" alt="The project type is shown in square brackets on the title bar" title="The project type is shown in square brackets on the title bar"/><br/>
<div align="center"><strong>The project type is shown in square brackets on the title bar</strong></div>
<p><br/></p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2564/how-to-determine-what-kind-of-installshield-project-you-have/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What To Do When You&#8217;re In UseDll() Hell</title>
		<link>http://www.installationdeveloper.com/2550/what-to-do-if-youre-in-usedll-hell/</link>
		<comments>http://www.installationdeveloper.com/2550/what-to-do-if-youre-in-usedll-hell/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 00:52:36 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Class Libraries]]></category>
		<category><![CDATA[Class Library]]></category>
		<category><![CDATA[Custom Actions]]></category>
		<category><![CDATA[Different Ways]]></category>
		<category><![CDATA[Dll]]></category>
		<category><![CDATA[Dll Files]]></category>
		<category><![CDATA[Dll Version]]></category>
		<category><![CDATA[Functionality]]></category>
		<category><![CDATA[Hell]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Msi]]></category>
		<category><![CDATA[Path]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Unload Dll]]></category>
		<category><![CDATA[Windows Dll]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2550</guid>
		<description><![CDATA[InstallShield gives you many ways to provide additional functionality to an installation. Custom Actions are one way. Scripting is another way. While working on a recent client project, I found the need to use a Standard DLL, and it brought back familiar problems that I have had in the past. This arose from my use [...]]]></description>
			<content:encoded><![CDATA[<p><strong>InstallShield</strong> gives you many ways to provide additional functionality to an installation.  Custom Actions are one way.  Scripting is another way.  While working on a recent client project, I found the need to use a <strong>Standard DLL</strong>, and it brought back familiar problems that I have had in the past.  This arose from my use of <strong>UseDll()</strong>.  Let&#8217;s talk about some common problems you can have with this <strong>InstallScript</strong> function.</p>
<p>In a <strong>Basic MSI</strong> project, the main way to provide additional functionality is through custom actions.  Here are different custom action types that can be used with DLLs:</p>
<ul>
<li><strong>Standard DLL</strong> &#8211; custom action calls a standard Windows DLL and places the result in a property.</li>
<li><strong>Managed Code</strong> &#8211; custom action calls a method in a managed code class library and places the result in a property.</li>
<li><strong>InstallScript</strong> &#8211; custom action based on a script that can call a DLL through UseDLL and UnUseDLL.</li>
</ul>
<p>In <strong>InstallScript</strong> and <strong>InstallScript MSI</strong> projects, you just make calls to DLLs or class libraries from your script.</p>
<p>In order to call a method/function in a DLL, you have to first load the DLL.  You do that with a call to <strong>UseDLL()</strong>.  Next, you call the method in the DLL.  Finally, you unload the DLL from memory with a call to <strong>UnUseDLL()</strong>.</p>
<p>Here is a screenshot of typical script that uses a DLL called Utility.dll.<br />
<br/><br />
<img src="http://www.installationdeveloper.com/images/usedll-1.png" alt="Call a method in a DLL, Version 1" title="Call a method in a DLL, Version 1"/><br/>
<div align="center"><strong>Call a method in a DLL, Version 1</strong></div>
<p><br/><br />
The code is very straightforward.  I want to call a method in a Standard DLL named utility.dll.  I have added utility.dll to the <strong>Support Files</strong> view, so in the script, I first make a call to <strong>MsiGetProperty()</strong> (my version has Ws in front of the name) to get <strong>SUPPORTDIR</strong>.  Then, I build the path to the DLL.  Next, I load the DLL into memory.  Next, I call the method in the DLL.  Finally, I unload the DLL from memory.</p>
<p>Generally, if you have a problem, it will be in the call to UseDLL().  In other words, the call will fail, and the DLL won&#8217;t be loaded into memory.</p>
<p>There are two common reasons that <strong>UseDLL()</strong> will fail:</p>
<ol>
<li>The path you pass to <strong>UseDLL</strong> is incorrect.  This could be because the path is not what you think.  Or the path could be correct, but the DLL you are loading is not there.</li>
<li>The DLL you are loading has a dependency which is not present on the target system.</li>
</ol>
<p>Here&#8217;s a another version of the above script.  This time, we are loading a dependency of our DLL, which is <strong>msvcr100.dll</strong>.<br />
<br/><br />
<img src="http://www.installationdeveloper.com/images/usedll-2.png" alt="Call a method in a DLL, Version 2" title="Call a method in a DLL, Version 2"/><br/>
<div align="center"><strong>Call a method in a DLL, Version 2</strong></div>
<p><br/><br />
Notice the script builds the path to the DLLs.  It then changes the current directory to be that directory (something the Help topic for UseDLL suggests).  It then loads <strong>msvcr100.dll</strong>.  Then it loads our DLL, <strong>utility.dll</strong>. It then calls the method and sets a property equal to the return code.  Finally, it unloads <strong>utility.dll</strong> and <strong>msvcr100.dll</strong> from memory.</p>
<p>If you have problems loading your own DLLs into memory and using them, you will now know a couple of things you can look for.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2550/what-to-do-if-youre-in-usedll-hell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mystery Exception in InstallScript MSI in InstallShield 2012</title>
		<link>http://www.installationdeveloper.com/2543/mystery-exception-in-installscript-msi-in-installshield-2012/</link>
		<comments>http://www.installationdeveloper.com/2543/mystery-exception-in-installscript-msi-in-installshield-2012/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 19:31:12 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Attempts]]></category>
		<category><![CDATA[Client Project]]></category>
		<category><![CDATA[Clue]]></category>
		<category><![CDATA[Computer Registry]]></category>
		<category><![CDATA[Dialog Box]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Left Behind]]></category>
		<category><![CDATA[Msi]]></category>
		<category><![CDATA[Mystery]]></category>
		<category><![CDATA[Nbsp]]></category>
		<category><![CDATA[Repair Installation]]></category>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Sessions]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Trash]]></category>
		<category><![CDATA[Xxx]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2543</guid>
		<description><![CDATA[Recently I was working on a client project that was an InstallScript MSI installation. I had walked through the source code and had many several successful debug sessions until one tripped me up. I went to the toolbar, clicked the Debug button, and received an exception. The dialog box that showed the exception had a [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial; font-size: 14px; font-weight: bold; color: #000000; background-color: #ffff00;"></span></p>
<p><span style="color: #000000; font-weight:bold;"></span></p>
<p>Recently I was working on a client project that was an <strong>InstallScript MSI</strong> installation.  I had walked through the source code and had many several successful debug sessions until one tripped me up.  I went to the toolbar, clicked the <strong>Debug</strong> button, and received an exception.  The dialog box that showed the exception had a link I could click.  When I did that, it created an email to send to InstallShield outlining the exception.</p>
<p>Here is a screenshot of that exception:</p>
<p><img src="http://www.installationdeveloper.com/images/installshield-2012-mystery-exception.png" alt="Mystery Exception in InstallScript MSI in InstallShield 2012" title="Mystery Exception in InstallScript MSI in InstallShield 2012"/><br/>
<div align="center"><strong>Unusual Exception in InstallScript MSI Project</strong></div>
<p><br/><br />
Unfortunately, this information did not give me a clue to what was happening.</p>
<p>No matter what I did, I couldn&#8217;t get rid of the exception.  At one time, I thought my installation of <strong>InstallShield 2012</strong> was corrupted, so I did a Repair installation.  That didn&#8217;t help.</p>
<p>Next, I rebooted the machine and tried to debug again.  That didn&#8217;t help either.</p>
<p>After several other failed attempts to resolve the problem, I decided to look in the registry.  It was there that I found the problem.</p>
<p>Earlier, I had installed the client&#8217;s previous installation and then uninstalled it.  I found that during the uninstall, it left a lot of trash on the computer and in the registry.  By trash, I mean that the uninstall was not complete.  A lot of stuff was left behind.  After I cleaned up the trash, I was able to successfully debug my new project.</p>
<p>I am just passing this on in the hopes that it might help someone in the future.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2543/mystery-exception-in-installscript-msi-in-installshield-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What to Do When You Get Build Errors That Make No Sense</title>
		<link>http://www.installationdeveloper.com/2534/what-to-do-when-you-get-build-errors-that-make-no-sense/</link>
		<comments>http://www.installationdeveloper.com/2534/what-to-do-when-you-get-build-errors-that-make-no-sense/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:17:38 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Ide]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Screenshot]]></category>
		<category><![CDATA[Second Time]]></category>
		<category><![CDATA[Small Change]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2534</guid>
		<description><![CDATA[This has happened to me more times than I can count. You build your installation and test some aspect of it. You then go back to the InstallShield IDE and make a small change, then build it again. When you do, you get all kinds of errors that make no sense. Here is a screenshot [...]]]></description>
			<content:encoded><![CDATA[<p>This has happened to me more times than I can count.</p>
<p>You build your installation and test some aspect of it.  You then go back to the <strong>InstallShield IDE</strong> and make a small change, then build it again.  When you do, you get all kinds of errors that make no sense.  Here is a screenshot of what I am talking about:<br />
<br/><br />
<img src="http://www.installationdeveloper.com/images/build-errors-that-make-no-sense-1.jpg" alt="What to do when you get build errors that make no sense in InstallShield" title="What to do when you get build errors that make no sense in InstallShield"/><br/>
<div align="center"><strong>An example of build errors that make no sense</strong></div>
<p><br/><br />
<br/><br />
All I did was make a small change, then rebuilt, and I got all these errors.  So what&#8217;s the solution?</p>
<p>The solution is to just build it again and the errors will generally go away.</p>
<p>I don&#8217;t know why this happens.  Perhaps files are locked the first time you try to build.  Then they aren&#8217;t locked when you build a second time, and it succeeds.  Whatever the case, I&#8217;ve found just build again and the errors usually go away.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2534/what-to-do-when-you-get-build-errors-that-make-no-sense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Exactly is the Key File of a Component?</title>
		<link>http://www.installationdeveloper.com/2529/what-exactly-is-the-key-file-of-a-component/</link>
		<comments>http://www.installationdeveloper.com/2529/what-exactly-is-the-key-file-of-a-component/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 18:44:42 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Component Settings]]></category>
		<category><![CDATA[installshield]]></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>
		<category><![CDATA[Key File]]></category>
		<category><![CDATA[Presence]]></category>
		<category><![CDATA[Target System]]></category>
		<category><![CDATA[windows installer]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2529</guid>
		<description><![CDATA[You probably know that each Component in an InstallShield installation should have one of its files marked as the Key File of the component. But, do you know why that is? A Key File is used by the Windows Installer to detect the component&#8217;s presence on the target system and whether it needs to be [...]]]></description>
			<content:encoded><![CDATA[<p>You probably know that each <strong>Component</strong> in an <strong>InstallShield</strong> installation should have one of its files marked as the <strong>Key File</strong> of the component.  But, do you know why that is?</p>
<p>A <strong>Key File</strong> is used by the <strong>Windows Installer</strong> to detect the component&#8217;s presence on the target system and whether it needs to be updated.</p>
<p>In order to create advanced <strong>Component</strong> settings, you must specify a Key File.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2529/what-exactly-is-the-key-file-of-a-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Info on InstallShield 2012 Upgrade Discounts</title>
		<link>http://www.installationdeveloper.com/2521/more-info-on-installshield-2012-upgrade-discounts/</link>
		<comments>http://www.installationdeveloper.com/2521/more-info-on-installshield-2012-upgrade-discounts/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 17:43:04 +0000</pubDate>
		<dc:creator>Rod_Maupin</dc:creator>
				<category><![CDATA[InstallShield Training]]></category>
		<category><![CDATA[Customer Demand]]></category>
		<category><![CDATA[December 31]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[installshield class]]></category>
		<category><![CDATA[installshield classes]]></category>
		<category><![CDATA[installshield course]]></category>
		<category><![CDATA[installshield courses]]></category>
		<category><![CDATA[Installshield Express]]></category>
		<category><![CDATA[Installshield Professional]]></category>
		<category><![CDATA[installshield programmer]]></category>
		<category><![CDATA[Installshield Tutorial]]></category>
		<category><![CDATA[installshield tutorials]]></category>
		<category><![CDATA[Life Versions]]></category>
		<category><![CDATA[Opportunity]]></category>
		<category><![CDATA[Professional License]]></category>

		<guid isPermaLink="false">http://www.installationdeveloper.com/?p=2521</guid>
		<description><![CDATA[I received some questions regarding my last post on the discounts being offered for those who upgrade to InstallShield 2012 by December 31, 2011. The clearest way I can state it is to just show the email I received from Flexera. Upgrade to InstallShield 2012 NOW &#038; Save 20-40%!* Offer ENDS December 31, 2011 The [...]]]></description>
			<content:encoded><![CDATA[<p>I received some questions regarding my last post on the discounts being offered for those who upgrade to <strong>InstallShield 2012</strong> by December 31, 2011.  The clearest way I can state it is to just show the email I received from <strong>Flexera</strong>.<br />
<br/><br />
<span style="color: #0000ff;"><strong>Upgrade to InstallShield 2012 NOW &#038; Save 20-40%!*</strong><br />
Offer ENDS December 31, 2011 </p>
<p>The customer demand for upgrading to <strong>InstallShield 2012</strong> has been unprecedented. Realizing that many more of our customers would still like the opportunity to upgrade — effective immediately we are re-opening the 20% off upgrade promotion when you upgrade from ANY older version of Express, Professional or Premier.  This includes end-of-life versions.  </p>
<p>We are also introducing a new offer available to all InstallShield Professional and Express customers &#8211; Save 40% when you upgrade your Express or Professional license to the Premier Edition.  This offer is available to Professional and Express customers on ANY version – including end-of-life versions!</span><br />
</br><br />
I hope this information helps clarify your questions.</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.installationdeveloper.com/2521/more-info-on-installshield-2012-upgrade-discounts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

