{"id":559,"date":"2007-07-26T11:38:18","date_gmt":"2007-07-26T18:38:18","guid":{"rendered":"http:\/\/www.latenightsw.com\/blogfs5\/?p=4"},"modified":"2012-05-05T18:36:21","modified_gmt":"2012-05-06T01:36:21","slug":"using-sparkle-with-facespan-5","status":"publish","type":"post","link":"http:\/\/markalldritt.com\/?p=559","title":{"rendered":"Using Sparkle with FaceSpan 5"},"content":{"rendered":"<p>I&#8217;ve produced a FaceSpan plugin that allows you to use the <a href=\"http:\/\/sparkle.andymatuschak.org\/\">Sparkle Software Update framework<\/a> in your FaceSpan 5 applications.<\/p>\n\n<p>You can download the Sparkle FaceSpan plugin here:<\/p>\n\n<p><a id=\"p28\" href=\"sparklefsplugin.zip\" title=\"sparklefsplugin.zip\">sparkle.fsplugin.zip<\/a><\/p>\n\n<p>Installing:<\/p>\n\n<p>Follow these steps to install the Sparkle FaceSpan plugin:<\/p>\n\n<ol>\n<li>expand the Sparkle.fsplugin.zip archive<\/li>\n<li>move the resulting Sparkle.fsplugin to the ~\/Library\/Application Support\/FaceSpan 5\/Plug-ins folder<\/li>\n<li>Quit and relaunch FaceSpan<\/li>\n<\/ol>\n\n<p>To use Sparkle:<\/p>\n\n<ol>\n<li>drag an instance of the Sparkle object from the Plugins\/Sparkle group in the Library inspector to your project (Others group)<\/li>\n<li>edit your project&#8217;s Info.plist as directed in the documentation on the Sparkle web site (you&#8217;ll also need to create an appcast RSS feed for Sparkle to read)<\/li>\n<\/ol>\n\n<p>At this point, when your application launches, Sparkle will begin checking for software updates as directed by the Sparkle entries in the application&#8217;s Info.plist file.<\/p>\n\n<p>If you want to have a &#8220;Check For Updates&#8221; menu item that allows the user to manually check for updates, do this:<\/p>\n\n<ol>\n<li>Drag a menu item object from the FaceSpanKit\/Menus group in the Library inspector to the place in the Main menu where you want the menu item to appear (e.g. Under &#8220;About&#8221; in the appMenu).<\/li>\n<li>In the new menu item&#8217;s Attributes inspector:\n\n<ul>\n<li>change the menu item&#8217;s title to &#8220;Check For Updates&#8221;<\/li>\n<li>change the menu item&#8217;s operation to SparkleCheckForUpdates<\/li>\n<li>change the menu item&#8217;s delegate to the instance of the Sparkle object your created earlier<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<p>If you want to have a toolbar item that allows a user to manually check for updates, you can create it like this in the window&#8217;s &#8216;window will open&#8217; event handler:<\/p>\n\n<p><code>make new toolbar item at end with properties { \u00ac\n  name:\"checkForUpdates\", \u00ac\n  title:\"Check For Updates\", \u00ac\n  image\"Sparkle.icns\", \u00ac\n  operation:\"SparkleCheckForUpdates\", \u00ac\n  delegate:my application's |Sparkle| }\n<\/code><\/p>\n\n<p>If you want to have a button in a window that checks for updates, you can do the following in the button&#8217;s action event:<\/p>\n\n<p><code>on action theButton\n  tell my application's |Sparkle| to \u00ac\n    invoke operation \"SparkleCheckForUpdates\"\nend tell\n<\/code><\/p>\n\n<p>The source code for this plugin is included in the FaceSpan 5.0d41 SDK.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve produced a FaceSpan plugin that allows you to use the Sparkle Software Update framework in your FaceSpan 5 applications. You can download the Sparkle&#8230;<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"http:\/\/markalldritt.com\/?p=559\">Continue Reading<span class=\"screen-reader-text\">Using Sparkle with FaceSpan 5<\/span><\/a><\/div><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[10],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7AQk-91","_links":{"self":[{"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/posts\/559"}],"collection":[{"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/markalldritt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=559"}],"version-history":[{"count":2,"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/posts\/559\/revisions"}],"predecessor-version":[{"id":617,"href":"http:\/\/markalldritt.com\/index.php?rest_route=\/wp\/v2\/posts\/559\/revisions\/617"}],"wp:attachment":[{"href":"http:\/\/markalldritt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/markalldritt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/markalldritt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}