{"id":1539,"date":"2008-04-03T11:00:59","date_gmt":"2008-04-03T14:00:59","guid":{"rendered":"http:\/\/brockerhoff.net\/bb\/viewtopic.php?p=2456"},"modified":"2010-05-08T16:43:49","modified_gmt":"2010-05-08T19:43:49","slug":"to-install-or-not-to-install","status":"publish","type":"post","link":"https:\/\/brockerhoff.net\/blog\/2008\/04\/03\/to-install-or-not-to-install\/","title":{"rendered":"To install, or not to install?"},"content":{"rendered":"<p>Via <a href=\"http:\/\/twitter.com\/siracusa\/statuses\/782085622\">John Siracusa<\/a>, I just read <a href=\"http:\/\/mooseyard.com\/Jens\/2008\/04\/on-first-installing-adobes-photoshop-elements-6\/\">this great rant from Jens Alfke<\/a> about Adobe&#8217;s Photoshop Elements 6 Installer. Money quotes:<\/p>\n<blockquote><p>First things first: After inserting the disc, I had <em>no idea<\/em> how to start the installation. I can&#8217;t remember the last time that&#8217;s happened.<\/p>\n<p>&#8230;<\/p>\n<p>It&#8217;s hard to get too worked up about an installer, one way or the other, but it&#8217;s annoying when it insists on installing over 2 gigabytes of stuff on my disk (most of which seems to be clip-art) without any choice to skip the inessentials. Nor would it even tell me ahead of time what it was installing, besides the ominously-named &#8220;system components&#8221;.<\/p>\n<p>&#8230;<\/p>\n<p>Is there an Adobe Updater Updater that puts up that alert and updates the updater? And what if the Updater Updater needs an update? (I can start to see where that 2 gigabytes went, now.)<\/p><\/blockquote>\n<p>Well, Adobe (and Microsoft, and&#8230;) are notorious for weird, complex and\/or unusable installers and updaters. I myself dislike installers <em>and<\/em> Apple Installer packages; whenever I see an application with an installer package, I first use Charles Srstka&#8217;s excellent <a href=\"http:\/\/www.charlessoft.com\/\">Pacifist<\/a> to see what it install where, and what the installer scripts do.<\/p>\n<p>So why does <a href=\"\/quay\">Quay<\/a>, in its 1.1 betas, use a proprietary built-in installer? (Quay 1.0x was drag &amp; drop.)<\/p>\n<p>It was a difficult choice. Quay 1.0x was a pair of simple applications that could run from anywhere, and the background application ran by demand. Quay 1.1 still has a foreground and a background application, but the background application runs as a per-user launch agent, meaning it&#8217;s started by the system and runs all the time. It needs special permissions to use the accessibility API, and there&#8217;s an on-demand tool inside which also needs special permissions.<\/p>\n<p>Of course, I could have done that with an Apple Installer package. However, writing shell scripts is not my cup of tea, and I feel more comfortable doing that myself; especially as my installer seeks out and uninstalls all previous versions, generates a cache file for the foreground app&#8217;s popup menu (the one with all the icons), and does other things hard or impossible to do in a shell script.<\/p>\n<p>So, I reluctantly decided on a proprietary installer that runs only from the disk image. Indeed, the installer app is the same app as Quay itself; it runs as the installer if you run it from anywhere but the &#8220;installed&#8221; location (inside \/Library\/Application Support). What remains is a documentation and usability challenge, as Jens&#8217; post shows. Here&#8217;s what the user sees when the Quay disk image mounts:<\/p>\n<p><img decoding=\"async\" src=\"\/quay\/qI.png\" border=\"0\" alt=\"\" \/><\/p>\n<p>The upper icon explains what it does and asks the user to run it, the lower icon is the in-app help file. Notice that both are aliases (or, rather, symbolic links) and the originals are hidden inside an invisible folder. This hopefully prevents less-technical users from doing a drag-install that will behave oddly from their point of view, and also prevents them keeping a copy around in a unpredictable location &#8211; this makes the uninstaller&#8217;s job, later, much simpler. The installer also unmounts the disk image afterwards. All this is also explained in the installation screens.<\/p>\n<p>I&#8217;m still tweaking the help file to be more, erhm, <em>helpful<\/em> &#8211; but few people seem to read help files nowadays. Hopefully this approach represents the lesser evil. So far, no user has complained!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Via John Siracusa, I just read this great rant from Jens Alfke about Adobe&#8217;s Photoshop Elements 6 Installer. Money quotes: First things first: After inserting the disc, I had no idea how to start the installation. I can&#8217;t remember the last time that&#8217;s happened. &#8230; It&#8217;s hard to get too worked up about an installer, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4,19],"tags":[27],"class_list":["post-1539","post","type-post","status-publish","format-standard","hentry","category-dev","category-software","tag-quay"],"featured_image_src":null,"author_info":{"display_name":"Rainer Brockerhoff","author_link":"https:\/\/brockerhoff.net\/blog\/author\/rbrockerhoff\/"},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1q3Zc-oP","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/posts\/1539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/comments?post=1539"}],"version-history":[{"count":0,"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/posts\/1539\/revisions"}],"wp:attachment":[{"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/media?parent=1539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/categories?post=1539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brockerhoff.net\/blog\/wp-json\/wp\/v2\/tags?post=1539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}