<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: When VBScript and JScript custom actions are even more evil than usual</title>
	<atom:link href="http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/</link>
	<description>Bob Arnson's blog about setup and servicing</description>
	<lastBuildDate>Fri, 23 Jul 2010 01:04:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Joy of Setup &#187; VirtualBox 1.6.0 setup another example of the second law of thermodynamics</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-2397</link>
		<dc:creator>Joy of Setup &#187; VirtualBox 1.6.0 setup another example of the second law of thermodynamics</dc:creator>
		<pubDate>Tue, 06 May 2008 06:20:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-2397</guid>
		<description>[...] It&#8217;s VBScript. Evil. One day after release, a user started a thread on the VirtualBox support forum about getting a 2738 error on Windows Vista. [...]</description>
		<content:encoded><![CDATA[<p>[...] It&#8217;s VBScript. Evil. One day after release, a user started a thread on the VirtualBox support forum about getting a 2738 error on Windows Vista. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Stebner's WebLog : How I resolved Windows Installer error code 2738 on Vista while running light.exe from WiX v3.0</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-963</link>
		<dc:creator>Aaron Stebner's WebLog : How I resolved Windows Installer error code 2738 on Vista while running light.exe from WiX v3.0</dc:creator>
		<pubDate>Wed, 02 Apr 2008 00:58:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-963</guid>
		<description>[...] hive instead of or in addition to the HKEY_LOCAL_MACHINE hive.&#160; Also, as described in this blog post by Bob Arnson, four of the Windows Installer Internal Consistency Evaluators (ICEs) are implemented in [...]</description>
		<content:encoded><![CDATA[<p>[...] hive instead of or in addition to the HKEY_LOCAL_MACHINE hive.&nbsp; Also, as described in this blog post by Bob Arnson, four of the Windows Installer Internal Consistency Evaluators (ICEs) are implemented in [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Arnson</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-273</link>
		<dc:creator>Bob Arnson</dc:creator>
		<pubDate>Mon, 24 Sep 2007 03:18:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-273</guid>
		<description>Sorry, I&#039;m not convinced. What you&#039;ve described isn&#039;t installation -- it&#039;s configuration. &quot;Odd things&quot; like that rarely belong in installation transactions; they&#039;re best done before installation with a wrapper that passes data to the installer or with a configuration program that the installer kicks off afterward. 

Even if MSI had bullet-proof support for script or managed-code CAs, it wouldn&#039;t change the fact that if reliability is important, transactions should be as simple as possible. That&#039;s true in databases as well as MSI.</description>
		<content:encoded><![CDATA[<p>Sorry, I&#8217;m not convinced. What you&#8217;ve described isn&#8217;t installation &#8212; it&#8217;s configuration. &#8220;Odd things&#8221; like that rarely belong in installation transactions; they&#8217;re best done before installation with a wrapper that passes data to the installer or with a configuration program that the installer kicks off afterward. </p>
<p>Even if MSI had bullet-proof support for script or managed-code CAs, it wouldn&#8217;t change the fact that if reliability is important, transactions should be as simple as possible. That&#8217;s true in databases as well as MSI.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Wone</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-247</link>
		<dc:creator>Peter Wone</dc:creator>
		<pubDate>Fri, 21 Sep 2007 09:18:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-247</guid>
		<description>Bob I can&#039;t say I totally agree with you. It doesn&#039;t matter how good the efforts of the MSI team, they will never meet everyone&#039;s needs. Script, on the other hand, is a general solution. 

I&#039;ve built several setup kits that needed CAs to do odd things like rummage around inside an OLEDB database across a network, or probe on an IP address and port to see whether our discovery service is on the network, and if so ask it rather than the user for configuration info. This stuff would have been a walk in the park with script making use of C# assemblies. In C++ it was... educational. Which is similar to diabolical if you&#039;ve never used C++ before.

Ed may have a slightly whiny tone but he also presents quite good answers to the major objections. In fact I am right now wondering whether it wouldn&#039;t be interesting to write a CA that direct-hosts a VBScript engine that I keep inside the setupkit, rather than just throwing a VBS file at the shell and hoping it will run.</description>
		<content:encoded><![CDATA[<p>Bob I can&#8217;t say I totally agree with you. It doesn&#8217;t matter how good the efforts of the MSI team, they will never meet everyone&#8217;s needs. Script, on the other hand, is a general solution. </p>
<p>I&#8217;ve built several setup kits that needed CAs to do odd things like rummage around inside an OLEDB database across a network, or probe on an IP address and port to see whether our discovery service is on the network, and if so ask it rather than the user for configuration info. This stuff would have been a walk in the park with script making use of C# assemblies. In C++ it was&#8230; educational. Which is similar to diabolical if you&#8217;ve never used C++ before.</p>
<p>Ed may have a slightly whiny tone but he also presents quite good answers to the major objections. In fact I am right now wondering whether it wouldn&#8217;t be interesting to write a CA that direct-hosts a VBScript engine that I keep inside the setupkit, rather than just throwing a VBS file at the shell and hoping it will run.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Arnson</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-239</link>
		<dc:creator>Bob Arnson</dc:creator>
		<pubDate>Wed, 19 Sep 2007 21:48:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-239</guid>
		<description>You use several &quot;woulds/shoulds/coulds&quot; in there. Today&#039;s reality is that script CAs tend to cause more problems than native-code CAs because script has more dependencies (e.g., FSO, WMI). And I&#039;d much rather the MSI team spend more time on native functionality so there&#039;s less need to write CAs, rather than making them &quot;easy to write.&quot;</description>
		<content:encoded><![CDATA[<p>You use several &#8220;woulds/shoulds/coulds&#8221; in there. Today&#8217;s reality is that script CAs tend to cause more problems than native-code CAs because script has more dependencies (e.g., FSO, WMI). And I&#8217;d much rather the MSI team spend more time on native functionality so there&#8217;s less need to write CAs, rather than making them &#8220;easy to write.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Edison M. Castro</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-236</link>
		<dc:creator>Edison M. Castro</dc:creator>
		<pubDate>Wed, 19 Sep 2007 15:55:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-236</guid>
		<description>I actually posted this to Aaron&#039;s blog, but I am posting it here too

This is one the things that should have been taken care of by the instaler already. The instaler team has enhanced MSI for some while, but has not taken care of fixing some of the basic functionality of the product. I have submitted change request after change request for fixes to this since the beginning. Everytime I see posting referring to &quot;this post by Rob Mensching&quot;, I completly freak out.  

This is total rubbish. All of his assumption are total bull. IMHO

1.- Robust code is difficult write in script.

This is utterly nonsense, bad code can be writing in any language, but specially C. If the developer of the custom action written in script can not do a simple try{}catch() on his code, changing to C would not make it any better.

2.  Debugging script in the Windows Installer is difficult

Another stupid instaler team mistake and another request of mine. Has anyone on that team heard of &quot;Active Scripting Host debug&quot;. Microsoft for some while sold us the idea of scripting debugging, I built several of them. doesn&#039;t that team care what their customer want?

3.  Anti-virus products kill them

My anti-virus kills any new code I put in my machine. Many ways exist of fixing this, but the main one is: Just execute the stupid script, do not put it in the file system, get it directly from the binary table and execute it, simple isn&#039;t it?

4.- Make sure jscript.dll and vbscript.dll are correctly registered. 

So many things that are supposedly part of the base system (ie, media player, etc). Aren&#039;t those part of the system too since they are required by and used by the former apps? Shouldn&#039;t the system (MSI, etc) make sure they are in the correct state before executing an action which requires it?

This is just the tip of the iceberg. I honestly think that script should be the ONLY allowable way of writing custom action, since they provide sort of a sandbox model to protect the end user from ill-intented code from the part of the producer of the MSI and for the most part (i could say allways) they provide all the functionality you may possible need, besides the fact that script is so easy to write and debug (with the right support, of course)

I will send another set of emails to the Windows Installer Wishes mailto:msiwish@microsoft.com asking for some fixes for the upcoming 4.5 release. Let&#039;s hope someone is actually listening............</description>
		<content:encoded><![CDATA[<p>I actually posted this to Aaron&#8217;s blog, but I am posting it here too</p>
<p>This is one the things that should have been taken care of by the instaler already. The instaler team has enhanced MSI for some while, but has not taken care of fixing some of the basic functionality of the product. I have submitted change request after change request for fixes to this since the beginning. Everytime I see posting referring to &#8220;this post by Rob Mensching&#8221;, I completly freak out.  </p>
<p>This is total rubbish. All of his assumption are total bull. IMHO</p>
<p>1.- Robust code is difficult write in script.</p>
<p>This is utterly nonsense, bad code can be writing in any language, but specially C. If the developer of the custom action written in script can not do a simple try{}catch() on his code, changing to C would not make it any better.</p>
<p>2.  Debugging script in the Windows Installer is difficult</p>
<p>Another stupid instaler team mistake and another request of mine. Has anyone on that team heard of &#8220;Active Scripting Host debug&#8221;. Microsoft for some while sold us the idea of scripting debugging, I built several of them. doesn&#8217;t that team care what their customer want?</p>
<p>3.  Anti-virus products kill them</p>
<p>My anti-virus kills any new code I put in my machine. Many ways exist of fixing this, but the main one is: Just execute the stupid script, do not put it in the file system, get it directly from the binary table and execute it, simple isn&#8217;t it?</p>
<p>4.- Make sure jscript.dll and vbscript.dll are correctly registered. </p>
<p>So many things that are supposedly part of the base system (ie, media player, etc). Aren&#8217;t those part of the system too since they are required by and used by the former apps? Shouldn&#8217;t the system (MSI, etc) make sure they are in the correct state before executing an action which requires it?</p>
<p>This is just the tip of the iceberg. I honestly think that script should be the ONLY allowable way of writing custom action, since they provide sort of a sandbox model to protect the end user from ill-intented code from the part of the producer of the MSI and for the most part (i could say allways) they provide all the functionality you may possible need, besides the fact that script is so easy to write and debug (with the right support, of course)</p>
<p>I will send another set of emails to the Windows Installer Wishes mailto:msiwish@microsoft.com asking for some fixes for the upcoming 4.5 release. Let&#8217;s hope someone is actually listening&#8230;&#8230;&#8230;&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joy of Setup &#187; Apple Safari setup built with WiX</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-8</link>
		<dc:creator>Joy of Setup &#187; Apple Safari setup built with WiX</dc:creator>
		<pubDate>Mon, 11 Jun 2007 20:14:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-8</guid>
		<description>[...] Software Updater package (instead of using a chainer). Already there&#8217;s a forum report of a 2738 error with the VBScript CA. And I guess the only way to report bugs is via forum posts&#8230;? It&#8217;s [...]</description>
		<content:encoded><![CDATA[<p>[...] Software Updater package (instead of using a chainer). Already there&#8217;s a forum report of a 2738 error with the VBScript CA. And I guess the only way to report bugs is via forum posts&#8230;? It&#8217;s [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Arnson</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-7</link>
		<dc:creator>Bob Arnson</dc:creator>
		<pubDate>Fri, 08 Jun 2007 15:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-7</guid>
		<description>Good point! In the version of darice.cub that comes with Orca from the Vista SDK, the ICEs that are implemented in VBScript are

ICE08
ICE09
ICE32
ICE61

I found this out by opening Orca&#039;s darice.cub in Orca itself. The CustomAction table&#039;s Source column points to rows in the Binary table. The other 94 ICEs are implemented in three type-1 CA DLLs.</description>
		<content:encoded><![CDATA[<p>Good point! In the version of darice.cub that comes with Orca from the Vista SDK, the ICEs that are implemented in VBScript are</p>
<p>ICE08<br />
ICE09<br />
ICE32<br />
ICE61</p>
<p>I found this out by opening Orca&#8217;s darice.cub in Orca itself. The CustomAction table&#8217;s Source column points to rows in the Binary table. The other 94 ICEs are implemented in three type-1 CA DLLs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Stebner</title>
		<link>http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-are-even-more-evil/comment-page-1/#comment-6</link>
		<dc:creator>Aaron Stebner</dc:creator>
		<pubDate>Fri, 08 Jun 2007 14:51:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.joyofsetup.com/2007/06/07/when-vbscript-and-jscript-custom-actions-arent-utterly-evil/#comment-6</guid>
		<description>Hey Bob - Do you know which 4 ICEs are written in VBScript?  It would help knowing that when trying to narrow down this kind of ICE failure in the future.</description>
		<content:encoded><![CDATA[<p>Hey Bob &#8211; Do you know which 4 ICEs are written in VBScript?  It would help knowing that when trying to narrow down this kind of ICE failure in the future.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
