{"id":2693,"date":"2005-11-10T19:52:00","date_gmt":"2005-11-10T19:52:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/heaths\/2005\/11\/10\/save-time-when-installing-patches\/"},"modified":"2005-11-10T19:52:00","modified_gmt":"2005-11-10T19:52:00","slug":"save-time-when-installing-patches","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/setup\/save-time-when-installing-patches\/","title":{"rendered":"Save Time when Installing Patches"},"content":{"rendered":"<p>Beginning with <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/what_s_new_in_windows_installer_version_3_0.asp\">Windows Installer 3.0<\/a> you can install multiple patches at once, i.e. in a single install transaction. To do this you pass a semicolon-delimited list of fully-qualified paths to patches to the <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/patch.asp\"><code>PATCH<\/code> property<\/a>. Windows Installer 2.0-style patches are sequenced first in the ordered specified, but then 3.0-style patches are sequenced according to information in each of their <a href=\"http:\/\/msdn.microsoft.com\/library\/en-us\/msi\/setup\/msipatchsequence_table.asp\"><code>MsiPatchSequence<\/code> tables<\/a> and superseded accordingly, as documented in <a href=\"http:\/\/blogs.msdn.com\/heaths\/archive\/2005\/09\/12\/464047.aspx\">How Patches Work<\/a>.<\/p>\n<p>This can save a lot of time for many products. The Microsoft .NET Framework 2.0, for example, synchronously generates native images for many assemblies it installs. This can require a lot of time during the initial installation of the .NET Framework 2.0 as well as when patching the Framework. Because patching a feature requires that the feature is installed local and because several actions are conditioned not to run when the <code>PATCH<\/code> property is defined &mdash; along with other patch-specific properties &mdash; the Framework must still be installed first before you can patch it.<\/p>\n<p>Download the appropriate redistributable for the processor architecture of the machines on which the .NET Framework 2.0 will be deployed:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5\">Microsoft .NET Framework Version 2.0 Redistributable Package (x86)<\/a><\/li>\n<li><a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?familyid=53C2548B-BEC7-4AB4-8CBE-33E07CFC83A7\">Microsoft .NET Framework Version 2.0 Redistributable Package (IA64)<\/a><\/li>\n<li><a href=\"http:\/\/www.microsoft.com\/downloads\/details.aspx?familyid=B44A0000-ACF8-4FA1-AFFB-40E78D788B00\">Microsoft .NET Framework Version 2.0 Redistributable Package (x64)<\/a><\/li>\n<\/ul>\n<p>Install the Framework by double-clicking the executable. Network administrators may wish to extract the Windows Installer <em>.msi<\/em> file by running the following command:<\/p>\n<p><font face=\"courier new\">dotnetfx.exe \/c \/t:&#8221;<em>&lt;target path&gt;<\/em>&#8220;<\/font><\/p>\n<p>To deploy the Windows Installer <em>.msi<\/em> package you must pass <code>USING_EXUIH=1<\/code> as a property to the command line. Once the Framework is installed you can configure it and <code>PATCH<\/code> it with multiple patches at once if you have <a href=\"http:\/\/support.microsoft.com\/kb\/893803\">Windows Installer 3.1<\/a> installed on supported platforms.<\/p>\n<p><font face=\"courier new\">msiexec.exe \/i {7131646D-CD3C-40F4-97B9-CD9E4E6262EF} \/l*v netfx.log PATCH=&#8221;\\appserverpatchesNDP20-KB123456-X86.msp;\\appserverpatchesNDP20-KB789012-X86.msp&#8221;<\/font><\/p>\n<p>Windows Installer 3.0 may be suitable for some other applications&#8217; patches, but patches for the .NET Framework 2.0 and Visual Studio 2005 <a href=\"http:\/\/blogs.msdn.com\/heaths\/archive\/2005\/10\/07\/478263.aspx\">do require<\/a> Windows Installer 3.1.<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beginning with Windows Installer 3.0 you can install multiple patches at once, i.e. in a single install transaction. To do this you pass a semicolon-delimited list of fully-qualified paths to patches to the PATCH property. Windows Installer 2.0-style patches are sequenced first in the ordered specified, but then 3.0-style patches are sequenced according to information [&hellip;]<\/p>\n","protected":false},"author":389,"featured_media":3843,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[4,20],"class_list":["post-2693","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-64-bit","tag-installation"],"acf":[],"blog_post_summary":"<p>Beginning with Windows Installer 3.0 you can install multiple patches at once, i.e. in a single install transaction. To do this you pass a semicolon-delimited list of fully-qualified paths to patches to the PATCH property. Windows Installer 2.0-style patches are sequenced first in the ordered specified, but then 3.0-style patches are sequenced according to information [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/users\/389"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/comments?post=2693"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/posts\/2693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media\/3843"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/media?parent=2693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/categories?post=2693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/setup\/wp-json\/wp\/v2\/tags?post=2693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}