<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>InstallSite Blog : Tips</title><link>http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx</link><description>Tags: Tips</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Careful with that Hyperlink (on your MSI dialog)</title><link>http://msmvps.com/blogs/installsite/archive/2009/09/18/careful-with-that-hyperlink-on-your-msi-dialog.aspx</link><pubDate>Fri, 18 Sep 2009 19:51:16 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1724805</guid><dc:creator>stefan</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1724805</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2009/09/18/careful-with-that-hyperlink-on-your-msi-dialog.aspx#comments</comments><description>&lt;p&gt;One of the new features in version 5 of the Windows Installer runtime is support for &lt;a href="http://msdn.microsoft.com/en-us/library/dd407936(VS.85).aspx" target="_blank"&gt;hyperlink controls&lt;/a&gt; on setup dialogs. Remember that MSI 5 is only available on Windows 7 and Windows Server 2008 R2, but there&amp;#39;s no redistributable for down-level platforms.&lt;/p&gt;  &lt;p&gt;In most cases when introducing new features, the MSI team made sure they don&amp;#39;t break your setup on older runtime versions. For instance, older MSI versions simply ignore new tables that they can&amp;#39;t use. This enables developers to create a setup that will run with basic functionality on older platforms but on the latest MSI version the new features would &amp;quot;light up&amp;quot;.&lt;/p&gt;  &lt;p&gt;The hyperlink control is different, maybe because it&amp;#39;s not a table but a new control type in an existing table, the Control table. Thus, it causes your setup to fail on Windows Installer versions prior to MSI 5:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;strong&gt;Dialog with hyperlink control on Windows 7&lt;/strong&gt;           &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/5282.HyperlinkW7_5F00_30AA2DF8.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="HyperlinkW7" border="0" alt="HyperlinkW7" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/4718.HyperlinkW7_5F00_thumb_5F00_05A21A26.png" width="513" height="402" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" align="center"&gt;&lt;strong&gt;Dialog with hyperlink control on Windows Vista&lt;/strong&gt;           &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/2555.HyperlinkVista_5F00_0240827E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="HyperlinkVista" border="0" alt="HyperlinkVista" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/1581.HyperlinkVista_5F00_thumb_5F00_2D387083.png" width="512" height="402" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Error code 2885 means &amp;quot;Failed to create the control [3] on the dialog [2].&amp;quot;&lt;/p&gt;  &lt;h3&gt;Workaround&lt;/h3&gt;  &lt;p&gt;To work around this issue, create two versions of the dialog, one with the hyperlink control, and the other without. Use these condition to display the appropriate dialog:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;VersionMsi &amp;gt;= &amp;quot;5.00&amp;quot; (for the dialog with hyperlink control) &lt;/li&gt;    &lt;li&gt;VersionMsi &amp;lt; &amp;quot;5.00&amp;quot; (for the dialog without hyperlink control) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Note that making the hyperlink control invisible for MSI versions &amp;lt; 5 doesn&amp;#39;t help. You really need a separate dialog.&lt;/p&gt;  &lt;h2&gt;How to create a hyperlink control (if your tool doesn&amp;#39;t support it)&lt;/h2&gt;  &lt;p&gt;I&amp;#39;ve used &lt;a href="http://www.installsite.biz/advancedinstaller" target="_blank"&gt;Advanced Installer&lt;/a&gt; to create the above screen shots, because its dialog editor can create hyperlink controls. If you are using InstallShield or another tool that doesn&amp;#39;t support hyperlink controls (yet) but has a way to modify the msi tables directly, you can create a hyperlink control using these easy steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a static text control &lt;/li&gt;    &lt;li&gt;Set its text in HTML format: like this:      &lt;br /&gt;&amp;lt;a href=http://www.installsite.org&amp;gt;www.InstallSite.org&amp;lt;/a&amp;gt;       &lt;br /&gt;where the href parameter specifies the URL and the text between the opening and the closing tag is what gets displayed. &lt;/li&gt;    &lt;li&gt;Go to Direct Editor and select the table named &lt;strong&gt;Control&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Find your text control and change the &lt;strong&gt;Type&lt;/strong&gt; from &lt;strong&gt;Text&lt;/strong&gt; to &lt;strong&gt;Hyperlink&lt;/strong&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This manual procedure even gives you more flexibility. For instance you could hyperlink only part of the text, while in Advanced Installer the complete text is hyperlinked. The following screen shot was created with InstallShield using this string for the Hyperlink Text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Please visit &amp;lt;a href=&amp;quot;http://www.installsite.org&amp;quot;&amp;gt;InstallSite.org&amp;lt;/a&amp;gt; for more samples&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="center"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/1588.HyperlinkIS_5F00_1551895D.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="HyperlinkIS" border="0" alt="HyperlinkIS" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/5126.HyperlinkIS_5F00_thumb_5F00_202E6AA5.png" width="518" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1724805" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/AdvancedInstaller/default.aspx">AdvancedInstaller</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/InstallShield/default.aspx">InstallShield</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/MSI+5/default.aspx">MSI 5</category></item><item><title>Microsoft's recent Security Updates for Visual Studio break Windows Installer Updates</title><link>http://msmvps.com/blogs/installsite/archive/2009/09/12/microsoft-s-recent-security-updates-for-visual-studio-break-windows-installer-updates.aspx</link><pubDate>Sat, 12 Sep 2009 00:30:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1722683</guid><dc:creator>stefan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1722683</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2009/09/12/microsoft-s-recent-security-updates-for-visual-studio-break-windows-installer-updates.aspx#comments</comments><description>&lt;p&gt;This problem was brought up in a &lt;a href="http://forum.installsite.net/index.php?showtopic=19423" target="_blank"&gt;question on the InstallSite Forum&lt;/a&gt; and is also mentioned in a &lt;a href="http://blogs.msdn.com/msiclickonce/archive/2009/09/09/using-msm-from-security-update-971090-and-973673-as-prerequisite-to-create-msi-minor-update-would-not-work.aspx" target="_blank"&gt;blog post by Gauravb&lt;/a&gt; (who appears to be a Microsoft employee).&lt;/p&gt;  &lt;p&gt;The typical symptom is missing or not updated files after you install a Small or Minor Update to your application (Major Upgrades are not affected). In the installer log file you&amp;#39;ll notice that some features have been switched to &amp;quot;advertised&amp;quot; state and instead of being installed locally. The actual cause is noted in the SELMGR error message in the log similar to this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELMGR: ComponentId &amp;#39;{-GUID-}&amp;#39; is registered to feature &amp;#39;-Feature-Name-&amp;#39;, but is not present in the Component table. Removal of components from a feature is not supported!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This happens if your setup includes a merge module like Microsoft_VC80_CRT_x86.msm and you rebuilt your setup package after installingsecurity updates &lt;a href="http://support.microsoft.com/kb/971090" target="_blank"&gt;971090&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/973673" target="_blank"&gt;973673&lt;/a&gt; for Visual Studio 2005 SP1 or &lt;a href="http://support.microsoft.com/kb/971092" target="_blank"&gt;971092&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/973675" target="_blank"&gt;973675&lt;/a&gt; for Visual Studio 2008 SP1. These security updates install newer versions of merge modules.&lt;/p&gt;  &lt;p&gt;Apparently a component that existed in the original version of the merge module has been removed in the updated msm. Removing a component is a violation of Windows Installer&amp;#39;s rules for Small and Minor Updates.&lt;/p&gt;  &lt;h2&gt;Affected Merge Modules and GUIDs&lt;/h2&gt;  &lt;h3&gt;Visual Studio 2005 SP1&lt;/h3&gt;  &lt;p&gt;I examined to merge modules installed by Visual Studio 2005 SP1 and updated by by security updates &lt;a href="http://support.microsoft.com/kb/971090" target="_blank"&gt;971090&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/973673" target="_blank"&gt;973673&lt;/a&gt;. I found that all of these merge modules are affected by this problem, i.e. they have components removed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft_VC80_ATL_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {9B2CAF3C-B0AB-11EC-B01F-C8B3B9A1E18E} and {9B2CAF3C-B0AB-11EC-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_CRT_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {9BFFB8F8-F55F-10B2-C01F-C8B3B9A1E18E} and {9BFFB8F8-F55F-10B2-B01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_DebugCRT_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {583FF03B-A196-24C8-C01F-C8B3B9A1E18E} and {583FF03B-A196-24C8-B01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_DebugMFC_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {55141F6E-A388-29A8-C01F-C8B3B9A1E18E} and {55141F6E-A388-29A8-B01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_DebugOpenMP_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {8E601675-4F66-A4DE-B01F-C8B3B9A1E18E} and {8E601675-4F66-A4DE-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_MFC_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {9EE2A7ED-8A13-0C17-C01F-C8B3B9A1E18E} and {9EE2A7ED-8A13-0C17-B01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_MFCLOC_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {7831D131-CCF1-43EF-C01F-C8B3B9A1E18E} and {7831D131-CCF1-43EF-B01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;Microsoft_VC80_OpenMP_x86.msm      &lt;br /&gt;Removed 2 components with GUIDs {218504D2-AA7D-7B33-B01F-C8B3B9A1E18E} and {218504D2-AA7D-7B33-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_ATL_x86.msm      &lt;br /&gt;Removed 1 component with GUID {6967BA9D-3E8C-8E05-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_CRT_x86.msm      &lt;br /&gt;Removed 1 component with GUID {671DDE41-A620-9193-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_DebugCRT_x86.msm      &lt;br /&gt;Removed 1 component with GUID {5A7EB616-E2EE-6D78-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_DebugMFC_x86.msm      &lt;br /&gt;Removed 1 component with GUID {5D61A50B-77A2-68DD-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_DebugOpenMP_x86.msm      &lt;br /&gt;Removed 1 component with GUID {8506B23C-BABD-5C8B-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_MFC_x86.msm      &lt;br /&gt;Removed 1 component with GUID {6BEC5B24-C056-8A14-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_MFCLOC_x86.msm      &lt;br /&gt;Removed 1 component with GUID {D5A7A18A-DEA5-8DD7-C01F-C8B3B9A1E18E} &lt;/li&gt;    &lt;li&gt;policy_8_0_Microsoft_VC80_OpenMP_x86.msm      &lt;br /&gt;Removed 1 component with GUID {07EE8801-38A9-ABAC-C01F-C8B3B9A1E18E} &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Visual Studio 2008 SP1&lt;/h3&gt;  &lt;p&gt;I also examined to merge modules installed by Visual Studio 2008 SP1 and updated by by security updates &lt;a href="http://support.microsoft.com/kb/971092" target="_blank"&gt;971092&lt;/a&gt; and &lt;a href="http://support.microsoft.com/kb/973675" target="_blank"&gt;973675&lt;/a&gt;. I found that all of these merge modules are affected by this problem, i.e. they have components removed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft_VC90_ATL_x86.msm      &lt;br /&gt;Removed 4 components with GUIDs {2F605F26-3021-38F6-AC31-175C0DFA59B9}, {76C3F0F6-9B9D-35DA-81C6-CA8A88CC93CA}, {DBD31579-020A-349E-8ED6-D06FEA75AF45}, and {86226397-23DB-3430-8C8A-AEA661B1AE77}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_CRT_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {AEC90EFE-39B8-3978-8A5D-068FEF83D275}, {B708EB72-AA82-3EB7-8BB0-D845BA35C93D}, {1A5C156B-3CC3-36E3-BAD7-9FD0D48156D3}, and {68D7E2DF-5BC5-318C-AF19-19D1D29ED692}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_DebugCRT_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {58425F02-9D68-3D93-85D9-39B29E29BC7B}, {BAD864A4-C2C0-3C54-8964-B268B7016DEC}, {FC82857E-2B1F-3E92-A906-97FD9825D3C7}, and {0BDD8003-3267-389F-813F-AD12EC5DC534}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_DebugMFC_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {F0A00871-E0E2-32B2-A659-FE4DA7002A2D}, {342BA686-A9E6-3FB4-AFC0-7034FF188D52}, {7E7F1AD6-F52E-3AE6-BAA5-32B96EE05F4E}, and {B833CE77-211C-355F-9DBB-294FD746EF17}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_DebugOpenMP_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {5586775C-EA44-30E2-A3E2-5C50F4EA39A0}, {B0C784B6-DDCC-3D69-A33A-5DE42951883C}, {E59B8FDA-55AE-3049-96FC-606E8C5BF2BE}, and {8FD717AF-E0E2-365E-8445-AECD9A21E5A0}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_MFC_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {D01CBF08-20B4-30C8-AF5A-96F9847E82A3}, {C6357C55-7461-3D51-9AE5-FD71CA24027A}, {611881C8-BE2F-393E-A04F-81C63DF00851}, and {15F67BFD-D6AA-3C8B-A1BB-C33E17E925C6}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_MFCLOC_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {5A06E1CC-89C9-3DB9-9BC8-5BFA56B58BFB}, {FF2F571A-6C54-31E3-B23E-2A60283B08A8}, {C9F2C40F-28CD-392C-A0C3-3AADEC130C0A}, and {4D8012CE-B2CE-3493-91B8-B8A9B982F6B8}&lt;/li&gt;    &lt;li&gt;Microsoft_VC90_OpenMP_x86.msm     &lt;br /&gt;Removed 4 components with GUIDs {A85D53AA-906D-31C5-96E3-E21BB9154E2C}, {D511F4F3-A911-32CF-AC11-9C97EF948BFC}, {B16F86FC-BD94-30FA-98AA-17ABE54F0478}, and {28B6B10C-E41F-302B-A673-01F436427522}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_ATL_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {A62CCE52-C380-3111-BA7D-3D0EDFA31213} and {C2FCD113-35CA-3027-92CD-F2D646277CA1}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_CRT_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {14F2B62D-DF5F-335F-A517-0991F44CB087} and {0355F5D0-467C-30E9-894C-C2FAEF522A11}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_DebugCRT_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {C990308F-4696-3069-B753-AB178CE2007B} and {FBB763D7-1B85-36C2-B127-4577B3FC45A1}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_DebugMFC_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {9B8A0715-C004-3493-8350-A387E1163D46} and {9EC89F44-FA15-308D-8582-22744424F0CF}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_DebugOpenMP_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {A134D5FD-99B1-3230-89AC-C4F81B697BFC} and {19185A82-2047-34BF-BBE1-5E64579BE356}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_MFC_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {6BFBB2DC-4F78-3217-ACCF-CD2838A84621} and {12EA53B4-340A-3F5D-B1BC-4A3BEC4A89A7}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_MFCLOC_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {0FEBA8D0-5D22-3D3A-947D-559E29BF07DF} and {6F026C46-D6BC-3805-A3B0-117AF8473928}&lt;/li&gt;    &lt;li&gt;policy_9_0_Microsoft_VC90_OpenMP_x86.msm     &lt;br /&gt;Removed 2 components with GUIDs {8D71CE57-BDC3-34B0-ADAD-EA4C5AFC9664} and {649A198A-C19D-325F-BF3A-C7EAE62F5EF6}&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Workarounds&lt;/h2&gt;  &lt;p&gt;This means that if your setup includes any of these merge modules, the security update prevents you from shipping Small or Minor Updates.The workaround I&amp;#39;d recommend is using a Major Upgrade (i.e. change the ProductCode and add an entry in the Upgrade table) to update your application.&lt;/p&gt;  &lt;p&gt;Gauravb&amp;#39;s blog lists some other workarounds which I don&amp;#39;t think are feasible:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use the VC Redistributable Installer EXE package to install the runtime instead of the merge modules. - Good advice for new packages or Major Upgrades, but you can&amp;#39;t remove the merge modules from your package in a Small or Minor Update. &lt;/li&gt;    &lt;li&gt;Use the old verion of the merge modules, - This means you would knowingly be installing a vulnerable file on your customer&amp;#39;s computer. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Another potential workaround would be to add dummy components to your msi setup with the same GUIDs as the components that were removed from the merge modules. But that could cause conflicts with other msi files that include the original version of the module.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1722683" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>DON'T Clean up your PC with Windows Installer Clean Up Utility</title><link>http://msmvps.com/blogs/installsite/archive/2009/07/25/don-t-clean-up-your-pc-with-windows-installer-clean-up-utility.aspx</link><pubDate>Sat, 25 Jul 2009 10:18:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1709765</guid><dc:creator>stefan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1709765</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2009/07/25/don-t-clean-up-your-pc-with-windows-installer-clean-up-utility.aspx#comments</comments><description>&lt;p&gt;Currently there are many Twitter posts suggesting the Windows Installer Clean Up Utility. This concerns me and I want to clarify some things about it.&lt;/p&gt;
&lt;p&gt;I think these tweets might have been triggered by a blog article that Karl L. Gechlik posted recently: &lt;a target="_blank" href="http://www.makeuseof.com/tag/microsoft-offers-up-a-windows-installer-clean-up-utility-windows/"&gt;Clean up your PC with Windows Installer Clean Up Utility&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a target="_blank" href="http://support.microsoft.com/?kbid=290301"&gt;Windows Installer CleanUp Utility&lt;/a&gt; (MSICU) is a last resort to work around problems with broken or partially installed Windows Installer (MSI) packages if the regular measures like uninstalling from Add/Remove Programs control panel have failed. However it is not intended for routine maintenance of your computer.&lt;/p&gt;
&lt;p&gt;When you install a program with a setup that is based on Windows Installer technology, information about that program is registered in the Windows Installer database. If this information or the setup program itself gets corrupted you may not be able to uninstall or re-install this program, and you might even be unable to install other programs. MSICU can delete such corrupted information in the Windows Installer database.&lt;/p&gt;
&lt;p&gt;The first caveat is that it can also remove this information for setup packages that are not corrupted. If you delete such information you will no longer be able to uninstall or maintain the respective program. Using MSICU you can severely damage your system configuration. If it ain&amp;rsquo;t broke, don&amp;rsquo;t fix it!&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also a misconception about MSICU and this is reflected in the following statement in &lt;a target="_blank" href="http://www.makeuseof.com/tag/microsoft-offers-up-a-windows-installer-clean-up-utility-windows/"&gt;Karl Gechlik&amp;rsquo;s blog&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It runs through the registry using command line options to search and remove registry items associated with your application and then it grabs and deletes shared dll&amp;rsquo;s and other files.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is not quite correct. MSICU only removes information from the Windows Installer database. It does not remove registry items like COM registration, nor does it delete any program files (including shared DLLs). &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/6787.msizap_5F00_60E4F8A4.gif"&gt;&lt;img height="284" width="569" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/installsite.metablogapi/2642.msizap_5F00_thumb_5F00_364917C7.gif" alt="msizap" border="0" title="msizap" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you look carefully at the lines I highlighted in the above screenshot (which I borrowed from Karl&amp;rsquo;s blog) you&amp;rsquo;ll notice that they say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Removed shared DLL &lt;strong&gt;entry&lt;/strong&gt;: &amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Windows keeps a reference count for DLL files that are shared between multiple applications in the registry. This count is used to determine when no application needs the file anymore so that it can savely be deleted. MSICU decrements this counter, but it doesn&amp;rsquo;t delete the file itself.&lt;/p&gt;
&lt;p&gt;The documentation on the &lt;a target="_blank" href="http://support.microsoft.com/?kbid=290301"&gt;MSICU download page&lt;/a&gt; also makes this clear:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Be aware that Windows Installer CleanUp Utility will not remove the actual program from your computer. However, it will remove the installation files so that you can start the installation, upgrade, or uninstall over. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So the second caveat: MSICU will not delete files (except the cached .msi file), it will not regain &amp;ldquo;wasted&amp;rdquo; disk space, it will not clean your registry, it will not make your computer faster. Quite the opposite: it will leave all installed files on your hard disk as orphans. &lt;/p&gt;
&lt;p&gt;To summarize: MSCU is a useful tool if you face a problem with a corrupted Windows Installer package, but most Windows users should never need to use it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1709765" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer+CleanUp/default.aspx">Windows Installer CleanUp</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/MSICU/default.aspx">MSICU</category></item><item><title>Windows Installer Version Matrix</title><link>http://msmvps.com/blogs/installsite/archive/2008/07/26/windows-installer-version-matrix.aspx</link><pubDate>Sat, 26 Jul 2008 20:08:13 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1642253</guid><dc:creator>stefan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1642253</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2008/07/26/windows-installer-version-matrix.aspx#comments</comments><description>&lt;p&gt;This table shows released Windows Installer versions that are included or available as redistributables for the different versions of Windows. Pre-release or beta versions are not listed.&lt;/p&gt; &lt;p&gt;The data have been collected from various sources. If you find any inaccuracies or have additional information that should be added, please let me know: skrueger (at) installsite.org&lt;/p&gt; &lt;p&gt;This table is also available in my MSI FAQ (&lt;a href="http://www.msifaq.com/a/1001.htm"&gt;English&lt;/a&gt; / &lt;a href="http://www.msifaq.de/a/1001.htm"&gt;German&lt;/a&gt;) where you can always get the latest version.&lt;/p&gt; &lt;table cellpadding="2"&gt;  &lt;tr&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;version&lt;/td&gt; &lt;td&gt;Windows Installer version that is included in this Windows version&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;version&lt;/td&gt; &lt;td&gt;Windows Installer version that can be installed on this Windows version, link points to download location&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td&gt;Windows Installer version is not supported on this Windows version&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td&gt;not applicable, i.e. newer version is already included with this Windows version&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;table cellpadding="2"&gt;  &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows Server 2008&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Server 2008&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22162&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;4.0.6001.18000&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows Vista&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Vista SP1&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22162&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;4.0.6001.18000&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Vista&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6000.20817&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;4.0.6000.16386&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows Server 2003&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Server 2003 SP2&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22159&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4042&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.1.4000.3959&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Server 2003 SP1&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22159&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4042&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=898715" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.1.4000.1830&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Server 2003 (64 bit)&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt; 3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.3790.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Server 2003 (32 bit)&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4042&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt; 3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.3790.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows XP&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows XP SP3&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22159&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.1.4001.5512&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.1.4001.5512&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows XP x64 RTM&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4042&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=898715" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.1.4000.1830&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows XP SP2&lt;/td&gt; &lt;td style="width:111px;background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=120486" target="_blank"&gt;4.5.6001.22159&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4039&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows XP SP1&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4039&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.2600.1106&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows XP&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4039&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt; 3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows 2000&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 2000 SP4 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://support.microsoft.com/?kbid=927891" target="_blank"&gt;3.1.4000.4033&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.2600.1183&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 2000 SP3 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&amp;nbsp;&lt;a href="http://support.microsoft.com/?kbid=893803" target="_blank"&gt;3.1.4000.2435&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;3.1.4000.1823&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt; 3.0.3790.2180&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;2.0.2600.1&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 2000 SP2 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&amp;amp;displaylang=en" target="_blank"&gt;2.0.2600.2&lt;/a&gt;&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;1.11.2405.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 2000 SP1 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&amp;amp;displaylang=en" target="_blank"&gt;2.0.2600.2&lt;/a&gt;&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;1.11.1314.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 2000 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&amp;amp;displaylang=en" target="_blank"&gt;2.0.2600.2&lt;/a&gt;&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;1.10.1029.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows 9x&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows Me &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;2.0.2600.2&lt;br /&gt;2.0.2600.1&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#ccff99;" align="middle"&gt;1.20.1410.0&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt; &lt;td style="background-color:#eeeeee;" align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 98 SE &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;2.0.2600.2&lt;br /&gt;2.0.2600.1&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f1b7a5b0-611b-45a7-a06d-cadff33e64da" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 98 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;2.0.2600.2&lt;br /&gt;2.0.2600.1&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f1b7a5b0-611b-45a7-a06d-cadff33e64da" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows 95 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;2.0.2600.2&lt;br /&gt;2.0.2600.1&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f1b7a5b0-611b-45a7-a06d-cadff33e64da" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#c0c0c0;"&gt;&lt;strong&gt;Windows NT 4&lt;/strong&gt;&lt;/td&gt; &lt;td style="width:111px;background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;4.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 Security Update&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1 (v2)&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;3.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;2.0&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.1&lt;/strong&gt;&lt;/td&gt; &lt;td style="background-color:#c0c0c0;" align="middle"&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows NT 4.0 SP6&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&amp;amp;displaylang=en" target="_blank"&gt;2.0.2600.2&lt;/a&gt;&lt;br /&gt;2.0.2600.0&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f8ca7781-41dc-4a53-a574-82eb9cd85bbb" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows NT 4.0 SP5&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f8ca7781-41dc-4a53-a574-82eb9cd85bbb" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows NT 4.0 SP4 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f8ca7781-41dc-4a53-a574-82eb9cd85bbb" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows NT 4.0 SP3 &lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.20.1827.1&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f8ca7781-41dc-4a53-a574-82eb9cd85bbb" target="_blank"&gt;1.10.1029.1&lt;/a&gt;&lt;/td&gt; &lt;td style="background-color:#c1e0ff;" align="middle"&gt;1.0.5104.0&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="width:404px;background-color:#eeeeee;"&gt;Windows NT 4.0 &amp;lt; SP3&lt;/td&gt; &lt;td style="width:111px;background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt; &lt;td style="background-color:#ff9999;" align="middle"&gt;--&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1642253" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item><item><title>The good, the bad, and the ugly - custom action types</title><link>http://msmvps.com/blogs/installsite/archive/2007/11/21/the-good-the-bad-and-the-ugly-custom-action-types.aspx</link><pubDate>Wed, 21 Nov 2007 15:15:41 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1344946</guid><dc:creator>stefan</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1344946</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2007/11/21/the-good-the-bad-and-the-ugly-custom-action-types.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;d like to add my thoughts to the recent discussion about how bad custom actions are, and which types are better or worse than others.&lt;/p&gt; &lt;p&gt;First of all, I believe there&amp;#39;s a general consent that custom actions shouldn&amp;#39;t be used for tasks that Windows Installer supports natively. Or, as Rob Mensching puts it: &amp;quot;&lt;a href="http://robmensching.com/blog/archive/2007/08/17/Zataoca-Custom-actions-are-generally-an-admission-of-failure.aspx" target="_blank"&gt;Custom actions are (generally) an admission of failure&lt;/a&gt;&amp;quot; - either by the setup developer, or in the application, or by Windows Installer itself, because it&amp;#39;s lacking some commonly required functionality. &lt;/p&gt; &lt;p&gt;Rob is the project leader of the open source &lt;a href="http://wix.sourceforge.net/" target="_blank"&gt;WiX Toolset&lt;/a&gt; for creating Windows Installer setups. Part of the WiX project is a set of custom actions for common tasks such as interacting with IIS and SQL Server. Some people wish that such functionality would be added to Windows Installer itself, but I believe that won&amp;#39;t happen. Alternatively the SQL, IIS, etc. teams could provide custom actions for their respective platforms, like the DIFx people did, but in most cases this hasn&amp;#39;t happened either.&lt;/p&gt; &lt;p&gt;So we&amp;#39;ll have to use custom actions, to retrieve information and set properties in the install, and to modify the target system. In general, &lt;a href="http://robmensching.com/blog/archive/2007/08/10/Zataoca-Classes-of-Custom-Actions.aspx" target="_blank"&gt;the latter is more dangerous than the first&lt;/a&gt;, and requires additional effort such as creating a corresponding roll-back action. &lt;/p&gt; &lt;p&gt;There are even harmless types of so-called &amp;quot;custom actions&amp;quot; which are actually more like standard action: &lt;a href="http://msdn2.microsoft.com/en-us/library/aa368237.aspx" target="_blank"&gt;type 51&lt;/a&gt; (set a property), &lt;a href="http://msdn2.microsoft.com/en-us/library/aa368093.aspx" target="_blank"&gt;type 35&lt;/a&gt; (set a directory) and &lt;a href="http://msdn2.microsoft.com/en-us/library/aa368078.aspx" target="_blank"&gt;type 19&lt;/a&gt; (exit with an error message).&lt;/p&gt; &lt;p&gt;But the discussion really is about whether EXE is worse than DLL and which programming language should be used to create custom actions. Windows Installer natively supports the following types of custom actions:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;VBScript, JScript - These don&amp;#39;t work on some machines, if scripting is disabled. They can also make your setup look very evil if a virus scanner flags it as potential malware (think of Office macro viruses). If the script becomes complex, it&amp;#39;s also hard to debug.  &lt;li&gt;EXE - Works, but doesn&amp;#39;t have a way to communicate back to the install. So you can&amp;#39;t return information in properties, you can&amp;#39;t increment the progress bar and the only return values recognized by Windows Installer are success or failure. Robert Flaming of the Windows Installer team at Microsoft lists some &lt;a href="http://blogs.msdn.com/windows_installer_team/archive/2007/10/20/integration-hurdles-for-exe-custom-actions.aspx" target="_blank"&gt;caveats for EXE custom actions&lt;/a&gt;. Note that some of the problems he lists apply to &amp;quot;bad EXEs&amp;quot;, so there is a chance to make it better. Also there are valid reasons to use EXE custom actions, e.g. you may already have a working and tested configuration tool which you want to re-use instead of rewriting it as DLL.  &lt;li&gt;DLL - Typically a very robust and versatile way to create a custom action. However you should avoid runtime dependencies.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;There are third party extensions that enable you to use other types of custom actions. Christopher Painter argues that &amp;quot;&lt;a href="http://blog.deploymentengineering.com/2007/10/installscript-custom-actions-are-good.html" target="_blank"&gt;InstallScript Custom Actions are GOOD&lt;/a&gt;&amp;quot;. To the Windows Installer engine they appear as DLL (the InstallScript engine) and InstallScript is a language particularly for setup related tasks. However I believe that the tasks of a custom action often aren&amp;#39;t typical installation tasks (copying files, accessing the registry) but require calling some APIs to interact with other applications. On the other hand, it&amp;#39;s tempting to use InstallScript to perform tasks that actually should be left to Windows Installer&amp;#39;s standard actions. So InstallScript custom actions, while they may be useful, should be used with care. And they add the overhead, in package size and runtime, of the InstallScript engine. In general, I think it&amp;#39;s useful to write custom actions in the programming language you know best.&lt;/p&gt; &lt;p&gt;As mentioned in the beginning of this article, a custom action should never be used for tasks that Windows Installer supports natively. Unfortunately this still happens. Sometimes because the setup developer is lacking knowledge about the functionality included in the MSI engine, but probably more often because the authoring tool he&amp;#39;s using doesn&amp;#39;t expose the full Windows Installer functionality. This leads the developer to re-invent the hidden functionality using custom actions. Namely Setup &amp;amp; Deployment projects in Visual Studio suffer from this problem.&lt;/p&gt; &lt;p&gt;The ultimate form of such a custom action is a &amp;quot;wrapper msi&amp;quot;: a msi setup that mainly consist of one custom action that runs an existing setup program. Instead of re-building the setup as true Windows Installer setup, the legacy install package is just wrapped in a msi. While this enables you to deploy the wrapped setup using corporate deployment tools, you don&amp;#39;t get the benefits of a real Windows Installer setup, such as a transacted install with rollback, customizability with transforms, robustness by auto-repair, etc. A recent example is the &lt;a href="http://blog.deploymentengineering.com/2007/10/ieak-7-another-fake-msi-using-wix.html" target="_blank"&gt;MSI package created by the Internet Explorer Administration Kit&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Here are some pointers to built-in Windows Installer functionality which can help you to avoid unnecessary custom actions:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa371564.aspx" target="_blank"&gt;Searching for Existing Applications, Files, Registry Entries or .ini File Entries&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa370055.aspx" target="_blank"&gt;MoveFile&lt;/a&gt; to copy or move files before the installation starts  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa368335.aspx" target="_blank"&gt;DuplicateFile&lt;/a&gt; to create copies of the files your setup installs, and to remove them on uninstall  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa371201.aspx" target="_blank"&gt;RemoveFile&lt;/a&gt; to delete files that are not included in your setup, during install or uninstall  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa371208.aspx" target="_blank"&gt;RemoveRegistry&lt;/a&gt; to delete registry information during installation  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa371637.aspx" target="_blank"&gt;ServiceInstall&lt;/a&gt; to create services and specify their start type and error handling  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa371634.aspx" target="_blank"&gt;ServiceControl&lt;/a&gt; to start, stop, or delete services&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;[Edit 2007-11-25:] Additional information and mitigation tips for EXE custom actions can be found in &lt;a href="http://blogs.msdn.com/heaths/archive/2007/10/24/exe-custom-actions-are-bad.aspx" target="_blank"&gt;Heath Stewart&amp;#39;s blog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1344946" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Prepare for MSI 4.5</title><link>http://msmvps.com/blogs/installsite/archive/2007/08/29/1145681.aspx</link><pubDate>Wed, 29 Aug 2007 10:58:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1145681</guid><dc:creator>stefan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=1145681</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2007/08/29/1145681.aspx#comments</comments><description>&lt;p&gt;The first public beta version of the Windows Installer (MSI) 4.5 runtime, SDK and documentation has just &lt;a href="http://blogs.msdn.com/windows_installer_team/archive/2007/08/25/windows-installer-4-5-beta-is-now-posted.aspx" target="_blank"&gt;been posted&lt;/a&gt; by Microsoft. It&amp;#39;s mainly targeted at tools vendors so they can update their authoring and packaging&amp;nbsp;tools to support the new version. But as a setup developer you should also&amp;nbsp;prepare for&amp;nbsp;MSI 4.5, and below are some&amp;nbsp;suggestions how yu can do this. Before you can download the beta files and documentaton, you must register at the Microsoft Connect site, where you can also report bugs and problems - see the &lt;a href="http://blogs.msdn.com/windows_installer_team/archive/2007/08/21/walkthrough-for-signing-up-for-windows-installer-4-5-beta.aspx" target="_blank"&gt;Walkthrough for Signing up for Windows Installer 4.5 Beta&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Note: if you are an end user (not developing msi packages) I don&amp;#39;t recommend installing MSI 4.5 at this point.&lt;/p&gt; &lt;h3&gt;Read the documentation&lt;/h3&gt; &lt;p&gt;White papers explaining the goals and changes in MSI 4.5 as well as SDK documentation (msi.chm) are available on the Connect site. Read them to see if MSI 4.5 can help you&amp;nbsp;solving issues you are facing in your install project. But be aware that MSI 4.5 only supports Windows XP SP2,Windows Server 2003&amp;nbsp;SP1,&amp;nbsp;and higher. Also watch out for the&amp;nbsp;&lt;a href="http://blogs.msdn.com/windows_installer_team/archive/2007/08/25/is-it-possible-to-silently-run-the-vista-installation-package-for-msi-4-5.aspx" target="_blank"&gt;reboot requirements and silent install problems&lt;/a&gt; for the MSI 4.5 engine on Windows Vista.&lt;/p&gt; &lt;h3&gt;Install and test the beta runtime&lt;/h3&gt; &lt;p&gt;First a note fo caution: You should not install the SDK and runtime files on your production or develoment machine! In previous betas this happened to beak the build system. But when testing your msi setup&amp;nbsp;- typically in a &lt;a href="http://msmvps.com/blogs/installsite/archive/2007/08/28/1143558.aspx" target="_blank"&gt;virtual machine&lt;/a&gt; - you could also use the MSI 4.5 engine. Once MSI 4.5 is released this is a must, because your msi file may be launched on a machine with MSI 4.5 installed, even if you don&amp;#39;t redistribute this version with your setup. But it&amp;#39;s also useful to test the beta version of the MSI 4.5&amp;nbsp;engine and report any issues to Microsoft (via the Connect site) so they may be fixed in the release version.&lt;/p&gt; &lt;h3&gt;Add flags to your pre-4.5&amp;nbsp;packages&lt;/h3&gt; &lt;p&gt;Windows Installer ignores&amp;nbsp;tables, columns, flags and properties it doesn&amp;#39;t know. Therefore MSI 4 packages today work with the MSI 2.x or 3.x runtime - of course without the new functionality. Similarly you can add flags that are new in MSI 4.5 ahead of time, to leverage the new functionality once MSI 4.5 is released. While in many cases this may not make much sense,&amp;nbsp;there&amp;#39;s one flag that I think should be set by default in all new msi setups: the msidbComponentAttributesShared attribute in the Component table. It prevents the downgrade of files that are shared across products. Without this flag, uninstalling a patch could&amp;nbsp;downgrade such a file, thus breaking the other product. Read more about &lt;a href="http://blogs.msdn.com/heaths/archive/2007/08/27/what-s-new-in-windows-installer-4-5-overview.aspx" target="_blank"&gt;Shared Components Robustness&lt;/a&gt; in Heath Stewart&amp;#39;s blog.&lt;/p&gt; &lt;p&gt;Note that adding not-yet-supported flags to your msi file will result in validation errors, so you should not do this if you plan to submit your product for logo certification before the release of MSI 4.5.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1145681" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/MSI+4.5/default.aspx">MSI 4.5</category></item><item><title>Think ahead when creating operating system conditions</title><link>http://msmvps.com/blogs/installsite/archive/2007/05/26/926403.aspx</link><pubDate>Sat, 26 May 2007 09:33:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:926403</guid><dc:creator>stefan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=926403</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2007/05/26/926403.aspx#comments</comments><description>&lt;p&gt;There&amp;#39;s a pitfall that I see people falling into from time to time: operating system conditions. Such conditions can be useful as launch conditions to enforce system requirements or used with features, components or custom actions to install different versions of files or run actions depending on the Windows version.&lt;/p&gt;
&lt;p&gt;If the developer tells you that the application will run on Windows XP SP2, Windows Server 2003 and Windows Vista, you could create a launch condition like this:&lt;/p&gt;
&lt;p&gt;(VersionNT=501 And ServicePackLevel=2) Or (VersionNT=502) Or (VersionNT=600)&lt;/p&gt;
&lt;p&gt;But that’s probably not what you really want, because your setup would be blocked on XP SP3 (which is expected to be released later this year), on Windows Server 2008, and in general on any future version of Windows.&amp;nbsp;In my opinion you should only block if you are sure that your application &lt;em&gt;will not&lt;/em&gt; work on these Windows versions (unless of course you have a business model of charging your customs again for the same piece of software with the condition removed&amp;nbsp;&amp;lt;wink&amp;gt;).&lt;/p&gt;
&lt;p&gt;In general I guess your system requirements actually are: Runs on Windows XP but requires at least SP2; runs on Windows Server 2003 or Vista or any future version of Windows. That results in the following condition:&lt;/p&gt;
&lt;p&gt;(VersionNT=501 And ServicePackLevel&amp;gt;=2) Or (VersionNT&amp;gt;=502)&lt;/p&gt;
&lt;p&gt;Note that VersionNT is 501 for XP, 502 for Server 2003, and 600 for Vista. On Windows Server 2008 it might also be 600 but I wouldn’t count on that. If necessary you can differentiate client and server versions using the MsiNTProductType property.&lt;/p&gt;
&lt;p&gt;The Windows SDK lists all the predefined &lt;a class="" href="http://msdn2.microsoft.com/en-us/library/aa370554.aspx" target="_blank"&gt;operating system properties&lt;/a&gt;&amp;nbsp;and also has a &lt;a class="" href="http://msdn2.microsoft.com/en-us/library/aa370556.aspx" target="_blank"&gt;reference table of OS versions and property values&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here’s a trick if your conditions tend to become complex, unreadable and hard to manage, for instance if they additionally involve the operating system language. Use custom actions of type 51 (“set a property”) to set properties with intermediate results and use those to build your final condition.&lt;/p&gt;
&lt;p&gt;A reminder in case you’re using operating system conditions on components: make sure to set the msidbComponentAttributesTransitive flag in the Component table, in case users update their operating system; in InstallShield this means switching the Reevaluate Condition setting of the component to yes.&lt;/p&gt;
&lt;p&gt;I’ll close with a general recommendation for launch conditions (not for component conditions!): Either condition the LaunchConditions action with “Not Installed” in all sequences (InstallShield does this for you by default), or append “Or Installed” to your conditional expression. This ensures that your setup can be uninstalled even if the machine no longer meets the system requirements, maybe because a prerequisite software has been removed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=926403" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Beware of the UAC Prompt Timeout</title><link>http://msmvps.com/blogs/installsite/archive/2007/04/18/830140.aspx</link><pubDate>Wed, 18 Apr 2007 17:01:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:830140</guid><dc:creator>stefan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=830140</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2007/04/18/830140.aspx#comments</comments><description>&lt;p&gt;Recently I encountered a strange problem when I tried to install an MSI based setup on Windows Vista. I ran through the dialog sequence and clicked the “Install Now” button. The progress bar dialog was displayed as usual, and I left the computer to get a cup of coffee, expecting that the software would be successfully installed when I return.&lt;/p&gt;
&lt;p&gt;But to my surprise on my return I was greeted with the “Setup was interrupted before the software was installed” dialog. In the log I found the following entries:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MSI (s) (00:B8) [15:02:24:944]: MSI_LUA: Elevation required to install product, will prompt for credentials&lt;br /&gt;MSI (s) (00:B8) [15:04:59:002]: MSI_LUA: Credential Request return = 0x800704C7&lt;br /&gt;The operation was canceled by the user.&lt;br /&gt;MSI (s) (00:B8) [15:04:59:052]: MainEngineThread is returning 1602&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;MSI error 1602 means “User cancelled installation” and error code 0x800704C7 translates to “The operation was canceled by the user”. But of course I did not cancel the installation. Michael Urman of Macrovision helped me to understand what was going on, and I was able to reproduce the problem - without coffee ;-)&lt;/p&gt;
&lt;p&gt;Some time after the progress bar dialog was displayed, the UAC consent dialog came up and asked me if I wanted to proceed. After two minutes of waiting, the UAC dialog disappeared automatically and the setup was cancelled.&lt;/p&gt;
&lt;p&gt;So the UAC Prompt has a 2 minute timeout after which the operation is cancelled automatically without user interaction. This timeout, which I didn’t find documented anywhere, applies to other UAC prompts as well, like control panel actions that require elevation etc.&lt;/p&gt;
&lt;p&gt;Unfortunately the return code 0x800704C7 doesn’t indicate whether the operation was cancelled by the user or by the timeout.&lt;/p&gt;
&lt;p&gt;Note that there actually was that UAC shield icon on the “Install Now” button, but it was too subtle to make me wait for the UAC dialog. In my tests I have seen delays of more than one minute after the Install Now button was pressed until the UAC dialog came up.&lt;/p&gt;
&lt;p&gt;I contacted the Windows Installer team at Microsoft about this problem. Tyler Robinson, the Lead Program Manager, told me that both the MSI team and the UAC team are aware of the issue, but they don’t have a solution at this time. He identified two main factors that are causing the delay:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;System Restore. For compatibility reasons the restore point for the setup is created before the UAC prompt is displayed. Turning off system restore can speed things up.&lt;/li&gt;
&lt;li&gt;Digital signature verification. UAC has to verify the digital signature of the msi package because the UAC dialog has a different banner color and text for setups that have a valid digital signature, as described &lt;a class="" href="http://windowsvistablog.com/blogs/windowsvista/archive/2007/01/25/accessible-uac-prompts.aspx" target="_blank"&gt;here&lt;/a&gt;. Depending on the size of the .msi file this verification can take a while.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;So if you have users complaining that the setup failed unexpectedly on Vista, ask them whether they saw the UAC dialog.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=830140" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/UAC/default.aspx">UAC</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Vista/default.aspx">Vista</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item><item><title>7 Reasons Why your Installations May Fail on Windows Vista (And How You Can Fix Them)</title><link>http://msmvps.com/blogs/installsite/archive/2007/02/07/7-reasons-why-your-installations-may-fail-on-windows-vista-and-how-you-can-fix-them.aspx</link><pubDate>Wed, 07 Feb 2007 13:34:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:551337</guid><dc:creator>stefan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=551337</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2007/02/07/7-reasons-why-your-installations-may-fail-on-windows-vista-and-how-you-can-fix-them.aspx#comments</comments><description>&lt;p&gt;An article that I&amp;#39;ve written for the December 2006 issue of the Macrovision DevLetter.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;7 Reasons Why your Installations May Fail on Windows Vista (And How You Can Fix Them)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows Installer is not just a technology but also a set of rules and best practices. While these rules have been specified in the SDK for several years, many of them haven&amp;#39;t been enforced. While ignoring these rules didn&amp;#39;t break your setups in the past, installations that don&amp;#39;t follow best practices may eventually fail on Windows Vista&amp;trade;. This article alerts you to the most common pitfalls in setup authoring and helps you troubleshoot your installations to be compatible with Windows Vista.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="text-decoration:line-through;"&gt;http://www.macrovision.com/company/news/newsletter/tips/is_vista.shtml&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Updated link to the Flexera Software web site:&lt;br /&gt;&lt;a href="http://www.flexerasoftware.com/webdocuments/PDF/is_vista.pdf"&gt;http://www.flexerasoftware.com/webdocuments/PDF/is_vista.pdf&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=551337" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Web+Resources/default.aspx">Web Resources</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/UAC/default.aspx">UAC</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Vista/default.aspx">Vista</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Launching a program when setup is completed may be a security issue</title><link>http://msmvps.com/blogs/installsite/archive/2006/12/22/441991.aspx</link><pubDate>Fri, 22 Dec 2006 07:53:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:441991</guid><dc:creator>stefan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/installsite/rsscomments.aspx?PostID=441991</wfw:commentRss><comments>http://msmvps.com/blogs/installsite/archive/2006/12/22/441991.aspx#comments</comments><description>&lt;p&gt;An &lt;a class="" href="http://www.jrsoftware.org/iskb.php?vista" target="_blank"&gt;article in the InnoSetup knowledge base&lt;/a&gt; points out that launching your application or&amp;nbsp;displaying a readme file (using notepad for instance) at the end of your installation may cause a security issue on Windows Vista. The problem arises if the installation runs with elevated privileges because the child process (your application or notepad) inherits these privileges. This means that now your application runs with full administrator rights, which defeats the purpose of UAC.&lt;/p&gt;
&lt;p&gt;This is a problem for all setups that don&amp;#39;t use Windows Installer technology, like InnoSetup or InstallScript projects in InstallShield. But MSI based setups can also be affected. &lt;/p&gt;
&lt;p&gt;If you launch an .msi file (by double clicking or via msiexec.exe)&amp;nbsp;on Windows Vista, only custom actions that are scheduled for deferred execution in system contect (i.e. with the NoImpersonate flag set) will run with elevated privileges. Ususally you wouldn&amp;#39;t launch your application with such an action, but instead use a DoAction event on the Finish button on the &amp;quot;setup complete&amp;quot; dialog. In this case you&amp;#39;re fine.&lt;/p&gt;
&lt;p&gt;However if you launch your MSI install using a setup.exe which is not explicitly manifested to indicate that it doesn&amp;#39;t need elevated rights, the UAC prompt will be displayed right at the start, and your whole user interface sequence will run with elevated permissions. In this case the launched application will inherit these permissions.&lt;/p&gt;
&lt;p&gt;In general it may be best not&amp;nbsp;to launch the application at the end of the installation. Note that similar security problems can also happen on Windows versions before Vista, for instance if the setup was launched using RunAs with administrator privilges. And if a reboot is required to complete the installation, your application may not run properly when launched from the Finish dialog anyway.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=441991" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/installsite/archive/tags/Windows+Installer/default.aspx">Windows Installer</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/UAC/default.aspx">UAC</category><category domain="http://msmvps.com/blogs/installsite/archive/tags/Tips/default.aspx">Tips</category></item></channel></rss>