使用Sparkle为OS X App添加自动更新功能

来源:互联网 发布:java开源web项目小型 编辑:程序博客网 时间:2024/05/16 09:48
如果你细心的话,会发现OS X下面的很多应用的自动更新机制都非常相似,没错,他们都用的是Sparkle这个framework。(App Store里面的应用除外,因为苹果禁止使用第三方更新系统)
! H" i* w# R5 x' r 七度苹果电脑软件
同类的framwork还有Google的Update Engine,相比较要强大一些,不过对于一般的应用来说Sparkle就足够了。2 B: ]# {" p( h1 W0 a 七度苹果电脑软件
4 W; t- X# h) C1 r3 M. O 七度苹果电脑软件

如何为我的程序添加自动更新系统?

基本设定
在你的项目中添加 Sparkle framwork; M' K4 M. G3 X$ H1 d 七度苹果电脑软件
0 H  a' e$ c9 a# _ 七度苹果电脑软件
下载Sparkle,解压/ t* V0 X" ]' v! } 七度苹果电脑软件
将 Sparkle.framework 拖拽到项目的Framework folder中,同时确定勾选Xcode提示框中的“Copy items into the destination group’s folder”: p+ h2 l5 w& U 七度苹果电脑软件
在Project Navigator中单击你的项目,选择你的Target,切换到Build Phases选项卡% z4 k% C. g1 a! w- d 七度苹果电脑软件
单击右下角的Add Build Phase,选择Copy Files/ e; @% F6 C  G! D9 ? 七度苹果电脑软件
5 K5 f# A  V* K5 z1 E3 { 七度苹果电脑软件
7 _, G5 H5 J/ z# W 七度苹果电脑软件
在Destination中选择Frameworks,然后把Sparkle.framwork拖拽进去 
2 S) p% q6 e3 L# a( f 七度苹果电脑软件
$ M7 L2 ?4 |! ]$ w' s# M5 Q! k 七度苹果电脑软件
设置 Sparkle Updater Object
9 X4 ?9 ^% N3 r, f/ P4 l 七度苹果电脑软件
打开你的MainMenu.nib  a# t8 Y: y$ J5 q 七度苹果电脑软件
选择 View → Utilities → Object Library,找到Object,双击添加
单击刚刚添加的Object" Z# x7 G0 X  r. V! w1 C& q 七度苹果电脑软件
在Custom Class里面输入SUUpdater
如果需要,你也可以创建一个Menu Item,然后把它的taeget设置到SUUpdater实例的checkForUpdates:方法
数字签名" i! P8 t, I: R, h 七度苹果电脑软件
  l& R# C. M) v" V" U 七度苹果电脑软件
为了确保更新是来自开发者的服务器并经过开发者的授权,不被第三方篡改,Sparkle添加了数字签名机制。  o; k/ I9 F' S  z 七度苹果电脑软件
. ?1 p+ n# p( b% {% ] 七度苹果电脑软件
打开终端,cd到Sparkle目录的Extras/Signing\ Tools文件夹下
ruby generate_keys.rb 稍等片刻就可以看到如下提示: 
, U' t* Q( V8 {- H 七度苹果电脑软件
% x* h4 J% A2 Y' z 七度苹果电脑软件
这时目录中就会出现dsa_pub.pem和dsa_priv.pem两个文件,保存好dsa_priv.pem这个似有的密钥。 * 将Public Key (dsa_pub.pem) 添加到项目的资源文件夹中 * 在项目的Info.plist中添加一个SUPublicDSAKeyFile Key,然后将它的值设置为Public Key的文件名称(默认dsa_pub.pem)2 F1 c& ~( X" L- R/ V3 V9 E, _ 七度苹果电脑软件
  t9 t: ]% [  q3 k4 ] 七度苹果电脑软件
设置更新通知服务、发布新更新

通知采用一个RSS Feed,具体格式及发布更新的方法参见:https://github.com/andymatuschak ... ublishing-an-update
在项目的Info.plist中添加一个SUFeedURL Key,然后把它的值设置成RSS的URL。
确保在Info.plist里面有一个合适的CFBundleVersion8 E4 o0 k% ]+ N1 v7 P 七度苹果电脑软件
如果需要,测试整个系统, g( Y9 M1 |8 r0 U 七度苹果电脑软件

确保要新程序的CFBundleVersion要比旧版本的CFBundleVersion值大/ J. j: X+ C9 I 七度苹果电脑软件
程序会在第二次运行的时候提示是否自动检查更新,不在第一次启动的时候就提示是给用户为了留下一个好印象  A' a' X$ m$ }% }& j/ F9 M 七度苹果电脑软件
这样,整个过程就完成了,后续发布更新可以参照第四步中的引用的URL中的说明进行。
0 0
原创粉丝点击