{"id":139,"date":"2013-01-17T18:33:53","date_gmt":"2013-01-18T01:33:53","guid":{"rendered":"http:\/\/blog.gptnet.net\/?p=139"},"modified":"2013-02-19T22:12:40","modified_gmt":"2013-02-20T05:12:40","slug":"local-update-publisher-adobe-reader-xi-11-0-0","status":"publish","type":"post","link":"https:\/\/blog.gptnet.net\/?p=139","title":{"rendered":"Local Update Publisher &#8211; Adobe Reader XI 11.0.0"},"content":{"rendered":"<p>There are a lot of great articles which demonstrate how to use Local Update Publisher (LUP), yest there is a huge confusion on how to push software and updates. In my\u00a0post I will be using Adobe Reader XI as an example. Adobe distributes it major version upgrades, for example Adobe Reader X 10.0.0 as an msi Windows installer package. Next versions 10.0.1 can be downloaded as msi again or as a Windows installer patch file .mst.<\/p>\n<p>We can always push full .msi files for each subversion upgrade, but this wouldn&#8217;t be efficient. You clients will be forced to download more data, use more processing power&#8230; efficiency is a key.<br \/>\nFirst, we want to create our base product in LUP: msi file for Adobe Reader XI. I am not going to describe it as there are plenty of examples available on how to deploy msi package using LUP. Do not forget to use Adobe Customization wizard to tailor msi for your needs.<br \/>\n<!--more--><br \/>\nLet&#8217;s say your clients have 10.0.4 installed and you created next update for 11.0.0 superseding 10.0.4. Not all your client will have version 11.0.0\u00a0installed when Adobe release the patch: 11.0.01. Here&#8217;s what you do:<\/p>\n<p>Download .msp file from Adobe&#8217;s public ftp server.<\/p>\n<p>Right click to create new update and add msp file, click next:<\/p>\n<p><a href=\"http:\/\/blog.gptnet.net\/?attachment_id=141\" rel=\"attachment wp-att-141\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-141\" alt=\"ss1\" src=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss1-300x277.png\" width=\"300\" height=\"277\" srcset=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss1-300x277.png 300w, https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss1.png 599w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Do not select Adobe Reader 11.0.0 as supersedes package! This is your &#8220;base&#8221; package.<\/strong><\/p>\n<p>Next you will see blank rules, so create the following to accaunt for both x64 and x86 Windows versions. We will need to check the following:<br \/>\n&#8211; check if system is x86 or x64<br \/>\n&#8211; check if Adobe Reader XI installed<br \/>\n&#8211; check what version is present<\/p>\n<p>Here&#8217;s Installed rules for this:<\/p>\n<p><a href=\"http:\/\/blog.gptnet.net\/?attachment_id=143\" rel=\"attachment wp-att-143\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-143\" alt=\"ss2\" src=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss2-300x239.png\" width=\"300\" height=\"239\" srcset=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss2-300x239.png 300w, https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss2.png 533w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nNote: do not forget to save them as you will reuse them for a next patch such as 11.0.02<br \/>\nClick next to get Installable rules:<br \/>\nSame as before with a small adjustment. You can actually load rules created in previous step and slightly modify them to have the following:<\/p>\n<p><a href=\"http:\/\/blog.gptnet.net\/?attachment_id=144\" rel=\"attachment wp-att-144\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-144\" alt=\"ss3\" src=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss3-300x204.png\" width=\"300\" height=\"204\" srcset=\"https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss3-300x204.png 300w, https:\/\/blog.gptnet.net\/wp-content\/uploads\/2013\/01\/ss3.png 561w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>If you notice the only thig was changed is check for file version condition. From <strong>greater or equal<\/strong> to we changed to <strong>less than<\/strong>. I am guessing you&#8217;ve already notice we are checking for file version of the main DLL file, which will change with every patch. To get this file version, simply apply this patch on a test machine manually. I&#8217;ve done that already for you; my screenshots have correct version for 11.0.01.<\/p>\n<p>And this is it, just click keep accepting the default values for the rest and click finish to publish. When client which has older version than our base (in our case 11.0.0) request the update, they will first install msi update and on the next cycle (you can force it via wuauclt \/detectnow) it will install .msp.<\/p>\n<p>That&#8217;s all!<\/p>\n<p>Update Feb 20, 2013:<\/p>\n<p>To add rule above you should:<br \/>\n1. Add all 6 specified before rules.<br \/>\n2. Press \u00abGroup\u00bb button and choose OR.<br \/>\n3. Select 3 rules: processor type x64 detection, check file exist in PROGRAM_FILESX86,  check .dll version in PROGRAM_FILESX86.<br \/>\n4. Press \u00abGroup\u00bb button and choose AND.<br \/>\n5. Select remained 3 rules: processor type x86 detection, check file exist in PROGRAM_FILES,  check .dll version in PROGRAM_FILES.<br \/>\n6. Press \u00abGroup\u00bb button and choose AND.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a lot of great articles which demonstrate how to use Local Update Publisher (LUP), yest there is a huge confusion on how to push software and updates. In my\u00a0post I will be using Adobe Reader XI as an &hellip; <a href=\"https:\/\/blog.gptnet.net\/?p=139\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-139","post","type-post","status-publish","format-standard","hentry","category-random-stuff"],"_links":{"self":[{"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/posts\/139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=139"}],"version-history":[{"count":8,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/posts\/139\/revisions"}],"predecessor-version":[{"id":148,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=\/wp\/v2\/posts\/139\/revisions\/148"}],"wp:attachment":[{"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gptnet.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}