<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx</link><description>A discussion about the Windows Installer Component Rules.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>RE: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#56498</link><pubDate>Wed, 05 Nov 2003 07:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:56498</guid><dc:creator>Robert</dc:creator><description>Many man month have been lost to the figuring out a) an app did or did not need to break the component rules and b) there is no easy way to message the consequences.  

Darwin's guidance in the SDK is better than it was however in the majority of cases its so easy to break the rules and ship before the rule violations are recognized.  After shipping, the best you can do is yes we sure shot the user on that one, let's try not to do that again.  

The problem boils down to the rigidity of a darwin component is inversly proportional to the transparancy of what should be in a component.  

Should a component contain a single file and it's registration?  that's naieve (please pardon the spelling) best case but it does not allow for the evolution of the file and it's registration.  Version to version files sets morph into different file sets as the engineering evolves.  As a component fragments or grows, how does one continue to share appropriately?

There are other complexities to picking a component composition.  For instance, what if none of the files in a component have a version and there is no registration?  This is a messy one because there is no single behavior that works perfectly for all cases.  Another case is the tiny files of content things like MSDN and data centers proliferate.  For these scenarios, you'd really like to strip the majority of the integrity systems out of Darwin as integrity checking ends up surpassing the value it provides (in the aggrigate).  Another fun case is where there are dependent references between components.  

(ready for a juicy new thread Rob?) one of the things Darwin failed to get was adequate representation of dependencies.  Knowing ones dependencies so that ont can articulate them and validate they are fulfilled is an essential part of engineering.  Darwin missed this entirely but to their defense no one else in the Darwin era really groc-ed the importance of articulating and validating dependencies either.

The problems with componets are vast and deep as well as subtile and sophisticated.  Rob groc this uniquely, in my experiance.  It sure is fun to watch Rob come in to a room of 20 people utterly confused about the state of their world and have Rob summarize their mistakes and the available solutions in less time than it took to complete the introductions.  Good thing for Microsoft that Rob is generous in spirit and committed to making all of Microsoft a better place. </description></item><item><title>RE: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#56499</link><pubDate>Fri, 07 Nov 2003 17:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:56499</guid><dc:creator>David</dc:creator><description>
One component topic I would be interested in is validation. There is an issue in the repackaging industry at the moment with ICE 33 errors. What is your view and experience of ICE 33. Is it possible to solve all ICE 33 errors?</description></item><item><title>RE: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#56500</link><pubDate>Sat, 08 Nov 2003 11:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:56500</guid><dc:creator>robert</dc:creator><description>Office does not run ICE33...  I'd call that a vote of no confidence...

...and generally repackagers are bad news...  Repacagers can't know enough about a product to make the right componetization calls.</description></item><item><title>Inside the MSI file format, again.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#70515</link><pubDate>Tue, 10 Feb 2004 12:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:70515</guid><dc:creator>when setup isn't just xcopy</dc:creator><description>Another tour of the MSI file format.</description></item><item><title>re: Windows Installer XML (WiX) toolset has released as Open Source on SourceForge.net</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#108730</link><pubDate>Wed, 07 Apr 2004 03:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:108730</guid><dc:creator>when setup isn't just xcopy</dc:creator><description /></item><item><title>re: Registering an Assembly for COM Interop in a MSI file with the Windows Installer XML toolset.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#123603</link><pubDate>Fri, 30 Apr 2004 08:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:123603</guid><dc:creator>when setup isn't just xcopy</dc:creator><description /></item><item><title>re: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#125436</link><pubDate>Tue, 04 May 2004 03:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:125436</guid><dc:creator>Naren</dc:creator><description>&lt;br&gt;Component management pitfalls pointed out here have dogged our company's installer efforts from the start. We even believe MSMs were the way to share &amp;quot;components&amp;quot; (non-msi definition). &lt;br&gt;&lt;br&gt;But we have learnt our lesson, we don't let MSI manage our shared pieces. We make separate MSIs for each and we manage the dependencies ourselves. WE can now make MSIs with gleeful abandon of component rules. Mind you we don't, but if we break a component rule here or there, we don't end up in a soup.&lt;br&gt;&lt;br&gt;</description></item><item><title>Excellent MSI component tutorial</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#128320</link><pubDate>Sat, 08 May 2004 08:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:128320</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description /></item><item><title>Welcome, Aaron!</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#128340</link><pubDate>Sat, 08 May 2004 09:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:128340</guid><dc:creator>the1's WebLog</dc:creator><description /></item><item><title>O'Reilly Net on Getting Started with WiX.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#131694</link><pubDate>Fri, 14 May 2004 09:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:131694</guid><dc:creator>when setup isn't just xcopy</dc:creator><description>Imagine a blog entry where I discuss a couple issues in an introduction article to the WiX toolset I found online.</description></item><item><title>re: My philsophical musings about building setup for software.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#133282</link><pubDate>Mon, 17 May 2004 19:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:133282</guid><dc:creator>when setup isn't just xcopy</dc:creator><description /></item><item><title>Excellent MSI component tutorial</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#135067</link><pubDate>Wed, 19 May 2004 19:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:135067</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description /></item><item><title>re: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#142891</link><pubDate>Thu, 27 May 2004 05:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:142891</guid><dc:creator>Dan</dc:creator><description>Um, maybe everyobody else knows the answer, but I've got what seems to me like an obvious question:&lt;br&gt;&lt;br&gt;Why doesn't Microsoft fix this design flaw?</description></item><item><title>re: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#143035</link><pubDate>Thu, 27 May 2004 13:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:143035</guid><dc:creator>Rob Mensching</dc:creator><description>Dan,&lt;br&gt;&lt;br&gt;How do you &amp;quot;fix&amp;quot; something that is fundamental to the architecture of the system that hundreds to thousands of applications have come to depend on for their installation?  You can't just completely change the rules and expect those applications to keep installing.  And you certainly can't just break all those applications.&lt;br&gt;&lt;br&gt;Instead, you find yourself in a very difficult situation.  Trust me, if it was easy, they would have fixed this a long time ago.</description></item><item><title>Well, not 'fix', but 'extend'</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#144327</link><pubDate>Sat, 29 May 2004 07:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:144327</guid><dc:creator>Dan</dc:creator><description>Well, you're right--can't just go ripping the carpet out from under everybody.&lt;br&gt;&lt;br&gt;However, they _could_ come up with something new, something very similar to the original (probably forked off v1) (not like win32 and .NET), but that had the correct mechanism. It uses a separate database or registry or whatever so you can use the two versions side by side (SxS!). They maintain both versions (like win32 and .NET); v1 is frozen, and left around for whoever wants/needs to use it, and everybody doing new work uses v2.&lt;br&gt;&lt;br&gt;Perhaps the problem isn't causing people enough headaches for them to justify the cost (monetary and otherwise) to do this, but I think it's reasonably possible to do. (Although, why do you think people roll their own install? They must think that what's available isn't cutting it...) Just my $0.02.</description></item><item><title>What I would do if I didn't continue to </title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#166575</link><pubDate>Sat, 26 Jun 2004 09:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:166575</guid><dc:creator>when setup isn't just xcopy</dc:creator><description>Imagine a blog entry where I ramble along after having my wisdom teeth pulled and come up with something of a vision statement.</description></item><item><title>Creating localized MSI files using WiX toolset and .wxl files.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#272144</link><pubDate>Tue, 30 Nov 2004 11:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:272144</guid><dc:creator>when setup isn't just xcopy</dc:creator><description>Imagine a blog entry where I discuss the WiX toolset localization features and .wxl files in detail.</description></item><item><title>Learning WiX: Part One</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#370003</link><pubDate>Wed, 09 Feb 2005 23:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:370003</guid><dc:creator>Ryan Lowe's Blog</dc:creator><description>Learning WiX is not just about learning the WiX toolset. It appears that in order to use the toolset properly you need to know quite a bit of background of setup on Microsoft Windows in general including the structure of...</description></item><item><title>Learning WiX: Part Two</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#371148</link><pubDate>Fri, 11 Feb 2005 20:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:371148</guid><dc:creator>Ryan Lowe's Blog</dc:creator><description>After more learning I think I need to backtrack even further with the WiX toolset and Windows Installer SDK. There are some fundamental decisions my team needs to make about how the product installation will work and it's something that...</description></item><item><title>Component rules vs. file versions</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#406845</link><pubDate>Sat, 09 Apr 2005 22:38:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:406845</guid><dc:creator>Hackward and Foreword</dc:creator><description /></item><item><title>Using MsiInv to gather information about what is installed on a computer</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#434822</link><pubDate>Sat, 02 Jul 2005 04:11:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:434822</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>As I was reading one of the posts on Quan To's new blog, I noticed that someone posted a link to a tool...</description></item><item><title>Creating localized MSI files using WiX toolset and .wxl files.</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#438049</link><pubDate>Tue, 12 Jul 2005 20:51:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:438049</guid><dc:creator>when setup isn't just xcopy</dc:creator><description>Imagine a blog entry where I discuss the WiX toolset localization features and .wxl files in detail.</description></item><item><title>How Windows Installer handles file replacement logic for versioned and unversioned files</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#458296</link><pubDate>Wed, 31 Aug 2005 07:29:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:458296</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>I ran into an interesting problem yesterday where a team had built an MSI-based setup package, and they...</description></item><item><title>How Windows Installer handles file replacement logic for versioned and unversioned files</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#461776</link><pubDate>Wed, 07 Sep 2005 08:20:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:461776</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>I ran into an interesting problem yesterday where a team had built an MSI-based setup package, and they...</description></item><item><title>re: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#558055</link><pubDate>Wed, 22 Mar 2006 18:38:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:558055</guid><dc:creator>Christopher Painter</dc:creator><description>How does this effect merge module retargeting? If you have a MM that has a component which allows retargeting, aren't you effectively doing the same thing of having 2 components with different resources ( dir1\f1 and dir2\f1 ) associated to the same c1 guid?&lt;br&gt;</description></item><item><title>re: Component Rules 101</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#746693</link><pubDate>Fri, 08 Sep 2006 22:09:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:746693</guid><dc:creator>Blog Police</dc:creator><description>Christopher Painter is a blog hog</description></item><item><title>Building setup packages for Visual Studio project templates and starter kits</title><link>http://blogs.msdn.com/robmen/archive/2003/10/18/component-rules-101.aspx#780152</link><pubDate>Mon, 02 Oct 2006 04:00:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:780152</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>This article describes&amp;amp;amp;nbsp;how to create an MSI-based setup package to install project templates, item...</description></item></channel></rss>