<?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>Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx</link><description>Sticking strictly to the "approximately weekly" schedule, here we have, nearly two weeks later, the somewhat more substantial second part in this series. Thanks for the comments on Part 1 - even though I briefly answered some at the time, I'll be using</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#596196</link><pubDate>Fri, 12 May 2006 18:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596196</guid><dc:creator>Rick</dc:creator><description>In regard to Rule 14, Use Consistent Package Naming Conventions, can you elaborate on what constitutes a &amp;quot;base package name&amp;quot;? That phrase doesn't appear anywhere in the Windows Installer 3.1 Help file. For example, does MyApp_v1.00.MSI have the same base package name as MyApp_v1.01.MSI? How much latitude is there in the naming convention without breaking this rule?</description></item><item><title>Base Package Name</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#596895</link><pubDate>Sat, 13 May 2006 16:24:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596895</guid><dc:creator>Troy Phillips</dc:creator><description>Hi Rick&lt;br&gt;I would suggest that base package name refers to the actual msi file (I think the SDK actual refers to it as the package database from memory?). &lt;br&gt;&lt;br&gt;What you can't do is name the MSI file Blah_v1.msi then patch the install point, rename it to Blah_v1a.msi and expect clients to be able to redeploy/install updated features only.&lt;br&gt;&lt;br&gt;Personally, we use the folder name to identify the package and name all our base package files &amp;quot;setup.msi&amp;quot; (we agree with all the other points though!)&lt;br&gt;&lt;br&gt;Hadn't yet considered point 18 (turning off system restore) - although given the environment we work in I have already emailed a link to my colleagues.</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#597456</link><pubDate>Sun, 14 May 2006 18:57:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:597456</guid><dc:creator>Stefan Krueger</dc:creator><description>I think that &amp;quot;base package name&amp;quot; means the name of the .msi file that was used for the original/initial install (the &amp;quot;base package&amp;quot;). Small and Minor updates (&amp;quot;update packages&amp;quot;) must use the same .msi file name as the base package.</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#597979</link><pubDate>Mon, 15 May 2006 16:54:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:597979</guid><dc:creator>Windows Installer Team</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;"what constitutes a 'base package name'?" &lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;Yes, it's not the clearest explanation mankind has ever seen! &amp;nbsp;What it's referring to is the point made in bullet 4 here: &lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/changing_the_product_code.asp"&gt;Changing the Product Code&lt;/A&gt; &lt;BR&gt;&lt;EM&gt;"The update must not change the name of the .msi file of the installation package. Instead, because it modifies the package, it should change the package code. Note that this means that the update can change the tables, custom actions, and dialogs in the .msi file without changing the file's name."&lt;/BLOCKQUOTE&gt;&lt;/EM&gt;&lt;EM&gt;&lt;/EM&gt;For example, let's say I install an application using a package called "MNP2000.msi". &amp;nbsp;I then decide to update the application by applying a new version of the .msi - I simply make a copy of the package and change the contents as appropriate. &amp;nbsp;Then I call this "MNP2001.msi" and &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/applying_small_updates_by_reinstalling_the_product.asp"&gt;patch by re-installing&lt;/A&gt;:&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;msiexec /fvomus C:\Red_Park_Small\MNP2001.msi /l*vx c:\MNP2001.log&lt;/EM&gt; &lt;BR&gt;&lt;BR&gt;This will fail, and looking at the log we see why: &lt;BR&gt;&lt;BR&gt;&lt;EM&gt;MSI (s) (F8:D0) [14:11:57:711]: Resolving source. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Using cached product context: User non-assigned for product: C3329A8143B072149A662C75832607CB &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Using cached product context: User non-assigned for product: C3329A8143B072149A662C75832607CB &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Resolving source to launched-from source. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Setting launched-from source as last-used. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: PROPERTY CHANGE: Adding SourceDir property. Its value is 'C:\Red_Park_Small\'. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: PROPERTY CHANGE: Adding SOURCEDIR property. Its value is 'C:\Red_Park_Small\'. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: PROPERTY CHANGE: Adding SourcedirProduct property. Its value is '{18A9233C-0B34-4127-A966-C257386270BC}'. &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: SOURCEDIR ==&amp;gt; C:\Red_Park_Small\ &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: SOURCEDIR product ==&amp;gt; {18A9233C-0B34-4127-A966-C257386270BC} &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Determining source type &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Note: 1: 2203 2: C:\Red_Park_Small\MNP2000.msi 3: -2147287038 &lt;BR&gt;MSI (s) (F8:D0) [14:11:57:711]: Note: 1: 1316 2: C:\Red_Park_Small\MNP2000.msi &lt;BR&gt;&lt;STRONG&gt;MSI (s) (F8:D0) [14:11:59:037]: Product: MNP2000 -- Error 1316. A network error occurred while attempting to read from the file: &lt;FONT color=#ff0000&gt;C:\Red_Park_Small\MNP2000.msi&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;MSI (c) (14:F4) [14:11:57:711]: Font created. &amp;nbsp;Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg &lt;BR&gt;Error 1316. A network error occurred while attempting to read from the file: C:\Red_Park_Small\MNP2000.msi &lt;BR&gt;MSI (s) (F8:D0) [14:11:59:047]: Machine policy value 'DisableRollback' is 0 &lt;BR&gt;MSI (s) (F8:D0) [14:11:59:047]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 &lt;BR&gt;Action ended 14:11:59: ProcessComponents. Return value 3. &lt;BR&gt;MSI (s) (F8:D0) [14:11:59:047]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 &lt;BR&gt;MSI (s) (F8:D0) [14:11:59:047]: No System Restore sequence number for this installation. &lt;BR&gt;MSI (s) (F8:D0) [14:11:59:047]: Unlocking Server &lt;BR&gt;Action ended 14:11:59: INSTALL. Return value 3. &lt;BR&gt;&lt;/EM&gt;&lt;BR&gt;The Installer is looking for the original package name "MNP2000.msi", which it obviously doesn't find. &amp;nbsp;To get around this I would need to rename the updated package back to its original name. &amp;nbsp; &lt;BR&gt;&lt;BR&gt;So, to answer the original question, this means that there is no latitude in naming the package in this scenario as "MyApp_v1.00.MSI" and "MyApp_v1.01.MSI" would be treated as completely different packages. &lt;BR&gt;&lt;BR&gt;&lt;EM&gt;[If you've worked through the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/windows_installer_examples.asp"&gt;SDK examples&lt;/A&gt;, you might recognise "MNP2000.msi" and "Red Park" ...]&lt;/EM&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;FONT color=#969696 size=1&gt;[Author: Richard Macdonald]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=1&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt; &lt;/DIV&gt;</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#599245</link><pubDate>Tue, 16 May 2006 22:55:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599245</guid><dc:creator>Phil Wilson </dc:creator><description>I have a suggestion for a new rule:&lt;br&gt;&lt;br&gt;&amp;quot;Design and test your servicing strategy *before* you ship the initial product. You must know in advance how you'll be updating your product, and once it's shipped it's too late to change its design. So build and install your product, then create an update (a patch, a minor update, a major upgrade, whatever you'll be using) and make sure that it actually works.&amp;quot;&lt;br&gt;&lt;br&gt;I've lost track of the number of times I've seen people ship the product then run into a servicing issue because the product has been shipped and it's too late to change that original design. &lt;br&gt;</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#599344</link><pubDate>Wed, 17 May 2006 01:07:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599344</guid><dc:creator>Mark Rovetta</dc:creator><description>The term ‘base package name’ is not used in the SDK documentation and notice that a definition of ‘base package’ does not appear in the glossary. &amp;nbsp;The phrase ‘base package’ appears in various parts of the documentation describing customization and instance transforms. It has been used to mean the target or unmodified version for a transform.&lt;br&gt;&lt;br&gt;As general advice to users of the documentation – If a term is not in the glossary, or does not appear in a SDK topic title, it has not been defined precisely. &amp;nbsp;So expect the words were used in their ordinary sense. &lt;br&gt;&lt;br&gt;My understanding of Rule 13 and Rule 14 is that these could be combined:&lt;br&gt;&lt;br&gt;Rule 13.5 – Keep application identifiers consistent &lt;br&gt;&lt;br&gt;The product code GUID is the principal identification of an application and must change whenever there is a comprehensive update to the application. &amp;nbsp;Changing the name of the application’s .msi file is considered a comprehensive change and always requires a corresponding change of the product code to maintain consistency. &amp;nbsp;The .msi file can be given any name that helps users identify the package, but the name should not be changed without also changing the product code. &amp;nbsp;&lt;br&gt;&lt;br&gt;</description></item><item><title>"Design and test your servicing strategy *before* you ship the initial product"</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#599746</link><pubDate>Wed, 17 May 2006 12:40:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599746</guid><dc:creator>Stefan Krueger</dc:creator><description>I second that! In general I recommend that you use your msi installer during the beta phase of the product, and ship (at least some) beta updates as msi updates/patches.</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#599830</link><pubDate>Wed, 17 May 2006 14:53:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599830</guid><dc:creator>Windows Installer Team</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;"Design and test your servicing strategy *before* you ship the initial product"&lt;/EM&gt;&lt;/STRONG&gt; &lt;BR&gt;Agreed. &amp;nbsp;I think this is fairly prevelant and relates a little to Rule 5 - developers are often too focussed on just getting an application working, so never think of setup, let alone servicing. &lt;BR&gt;&lt;BR&gt;I'll add this to the up-coming "Patching" blog.&amp;nbsp;&lt;/P&gt;
&lt;DIV id=CSBloggerSig&gt;
&lt;DIV&gt;&lt;FONT color=#969696 size=1&gt;[Author: Richard Macdonald]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=1&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt; &lt;/DIV&gt;&lt;/DIV&gt;</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#604987</link><pubDate>Tue, 23 May 2006 20:48:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:604987</guid><dc:creator>Phil Wilson </dc:creator><description>Rule 25: Should there be a custom action rule about not showing UI in a custom action in the execute sequence?</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#605046</link><pubDate>Tue, 23 May 2006 21:34:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:605046</guid><dc:creator>Doug Glenn</dc:creator><description>The link &lt;a rel="nofollow" target="_new" href="http://support.microsoft.com/?id=264478"&gt;http://support.microsoft.com/?id=264478&lt;/a&gt; on disadvantages of repackaging installations is quite old and now contains a number of errors despite being reviewed recently. &amp;nbsp;It also only covers up to v1.2 of the Installer technology.&lt;br&gt;&lt;br&gt;Isn't it about time you all brought it up to date? &amp;nbsp;There are dozens of repackagers now that support isolated components and other high end features that were not available at the time that was written, so it is somewhat misleading to be used on this blog :)&lt;br&gt;&lt;br&gt;Just my two cent.</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#605196</link><pubDate>Tue, 23 May 2006 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:605196</guid><dc:creator>Mark Rovetta</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;[Edited for reading clarity - Richard Macdonald]&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Although repackaging tools are always improving, I still think a list of Windows Installer ‘good practices’ should recommend designing for the Windows Installer early in the development process over running a legacy setup through a repackaging. &amp;nbsp;A legacy setup that has been repackaged won’t be capable of taking full advantage of all Windows Installer features. &lt;BR&gt;&lt;BR&gt;I think the following revised repackaging rules should hold for the most current Windows Installer versions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;BR&gt;Design for good installation and servicing rather than repackaging &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Installation and servicing should not be an afterthought of the development process. Applications that have been designed from the start to take advantage of Windows Installer features can be easier for users to install and service. Repackaging tools convert legacy installations into a Windows Installer package by taking a picture of the system before and after installation. Any registry changes, file changes, or system setting that occurs during the capture process will be included in the installation. Repackaging an existing setup application is not the best development practice. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;The following guidelines can help mitigate some of the common problems associated with using a repackaging tool.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;BR&gt;• Configure the hardware and software of the computer used to repackage the installation as close as possible to the intended user's system. Create a separate package for each different hardware configuration. Repackage using a clean computer. Remove any unnecessary applications. Stop all unnecessary processes. Close all non-essential system services. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;• Always make a copy of the original installation before starting to work on it. Always work on the copy. Never stop a repackager before it finishes building the package. If the repackager damages the package you will still have the original. &lt;BR&gt;Do not repackage Microsoft software updates &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Microsoft releases software updates, such as service packs, as self-extracting files that automatically runs installation. These updates use different installers than the Windows Installer to replace protected Windows resources and cannot be converted into a Windows Installer package. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;• Do not attempt to repackage Microsoft software updates into a Windows Installer package. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;• For information about how to deploy Windows service packs, see the appropriate Service Pack Deployment Guide on Microsoft TechNet. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Customize, rather than repackage, existing Window Installer packages &lt;BR&gt;The Windows Installer adds configuration information to the system as well as application resources. When a repackaging tool compares the system before and after the installation, the repackager misinterprets the configuration information as part of the application. This usually damages the repackaged application. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;• Do not use a repackaging tool to convert a Windows Installer package into a new package. Instead use customization transforms to modify an existing Windows Installer package, or develop an new package. You can create customization transforms using the MsiTrans.exe tool. This tool is only available in the Platform SDK Components for Windows Installer Developers. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;• Do not use a repackaging tool to consolidate several Windows Installer packages into a single package. Instead you can use the Msistuff.exe tool to configure the Setup.exe bootstrap executable to install the packages one after another. &lt;BR&gt;&lt;/P&gt;</description></item><item><title>re: Tao of the Windows Installer, Part 2</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#605348</link><pubDate>Wed, 24 May 2006 01:47:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:605348</guid><dc:creator>Windows Installer Team</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;"Although repackaging tools are always improving, I still think a list of Windows Installer ‘good practices’ should recommend designing for the Windows Installer early in the development process over running a legacy setup through a repackaging"&lt;/EM&gt; &lt;BR&gt;&lt;/STRONG&gt;Yep, I agree. &amp;nbsp;If you look Rule 5 from Part 1 of this series, that's exactly what is recommended. &amp;nbsp;However, re-packaging is unavoidable in some cases, such as when dealing with legacy applications. &amp;nbsp; &lt;BR&gt;&lt;BR&gt;And, yes, you could re-write the rules in a more compact form, but the thing I like about the current format is that the rule headings serve as nice, easy-to-remember bullet points. &amp;nbsp;Having multiple ideas in each would make them less memorable - the short "body" text is there for further explanation. &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;EM&gt;"Rule 25: Should there be a custom action rule about not showing UI in a custom action in the execute sequence?" &lt;BR&gt;&lt;/EM&gt;&lt;/STRONG&gt;There is a point in there that does say generally not to show dialogues from custom actions and recommends MsiProcessMessage for reporting errors. &amp;nbsp;Does this cover what you mean? &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;EM&gt;"The link &lt;/EM&gt;&lt;/STRONG&gt;&lt;A href="http://support.microsoft.com/?id=264478" target=_new rel=nofollow&gt;&lt;STRONG&gt;&lt;EM&gt;http://support.microsoft.com/?id=264478&lt;/EM&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;EM&gt; on disadvantages of repackaging installations is quite old"&lt;/EM&gt;&lt;/STRONG&gt; &lt;BR&gt;Yes, that's one of those references I've been using for so long I slipped it in there almost on auto-pilot. &amp;nbsp;I'm looking into having it reviewed and updated. &lt;/P&gt;
&lt;DIV id=CSBloggerSig&gt;
&lt;DIV&gt;&lt;FONT color=#969696 size=1&gt;[Author: Richard Macdonald]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=1&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt; &lt;/DIV&gt;&lt;/DIV&gt;</description></item><item><title>Windows Installer best practices</title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#660298</link><pubDate>Sun, 09 Jul 2006 03:29:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:660298</guid><dc:creator>Aaron Stebner's WebLog</dc:creator><description>I recently noticed a series of in-depth articles that have been posted on the Windows Installer team...</description></item><item><title>Windows Installer Team Blog : Tao of the Windows Installer, Part 4 </title><link>http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx#761240</link><pubDate>Tue, 19 Sep 2006 00:53:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:761240</guid><dc:creator>Windows Installer Team Blog : Tao of the Windows Installer, Part 4 </dc:creator><description>PingBack from http://blogs.msdn.com/windows_installer_team/archive/2006/06/27/648447.aspx</description></item></channel></rss>