MacDeveloper

使用Sparkle实现软件的检查更新

2020-04-10  本文已影响0人  _我和你一样

使用Sparkle实现软件的检查更新

上sparkle官方连接:https://sparkle-project.org/ 闪闪放光的sparkle是开源的,它非常好的实现了软件的更新功能。

不像有些软件,检查更新只提供一个下载链接,让用户去下载,下载完成之后再进行安装更新。sparkle可以直接进行软件的安装和更新操作。

当然了,这里提到的更新都是App Store之外的应用更新,上架App Store的应用不允许提供检查更新和更新的功能,这些功能由App Store负责,App Store的更新不在此讨论范围之内。

1.在项目中集成sparkle

我这里使用cocoapod进行集成,当然也可以手动集成

pod 'Sparkle'

2.添加ED公钥

在info.plist文件中添加ED公钥,

key为:SUPublicEDKey

value: 获取的公钥

如何获取公钥呢?

运行 ./bin/generate_keys 可以获取公钥,generate_keys 这个文件是Sparkle工具提供的,

可以在这里下载最新的版本:https://github.com/sparkle-project/Sparkle/releases/

我下载的版本是1.2.3.0,无需下载源码,下载编译好的工具即可,我下载的是Sparkle-1.23.0.tar.xz

generate_keys 就在解压之后的/bin/目录下,这个/bin目录下还有用于签名的sign_update工具

执行./bin/generate_keys 可以获取公钥,如果没有,就再执行一次。

3.添加用于解析更新的xml文件地址

在info.plist文件添加此内容

key:SUFeedURL

value: 用于解析更新内容的xml地址

这里要注意两点:

至于xml文件的内容,这个也是重中之重。

4.编写xml文件

上面的连接已经给出了示例,这里主要说明一下

更新内容的连接在releaseNotesLink标签里,

<sparkle:releaseNotesLink>
                http://you.com/app/2.0.html
            </sparkle:releaseNotesLink>

也可以直接使用下面的方式,直接说明更新内容

<description>
          <![CDATA[
            <ul>
              <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
              <li>Suspendisse sed felis ac ante ultrices rhoncus. Etiam quis elit vel nibh placerat facilisis in id leo.</li>
              <li>Vestibulum nec tortor odio, nec malesuada libero. Cras vel convallis nunc.</li>
              <li>Suspendisse tristique massa eget velit consequat tincidunt. Praesent sodales hendrerit <a href="#">pretium</a>.</li>
            </ul>
          ]]>
        </description>

更新日期

 <pubDate>Wed, 09 April 2020 19:20:11 +0000</pubDate>

版本-下载地址-文件大小-版本号 在下面的标签里

<enclosure url="http://0.0.0.0:8000/Update.app.zip" sparkle:version="2.0" length="4945096" type="application/octet-stream" sparkle:edSignature="8jomTVaWC7p3rxgNW8xXlRK2oe4eyFQiJ9+oknCIoKrH8+sF7jy2xQ+Mx37F00WenDBuOIy2ymD3nTQuQkyOCw==" />

这里面的edSignature和length要重点说一下,length是文件大小,而edSignature则是文件的签名信息,如何获取这个签名和文件大小呢?

同样使用之前提到的sparkle的sign_update工具

./Downloads/Sparkle-1.23.0\ 2/bin/sign_update /Users/user/Library/Developer/Xcode/DerivedData/Update-etfquozbuzwagxdusjlobdpvaxio/Build/Products/Debug/Update.app.zip

sparkle:edSignature="8jomTVaWC7p3rxgNW8xXlRK2oe4eyFQiJ9+oknCIoKrH8+sF7jy2xQ+Mx37F00WenDBuOIy2ymD3nTQuQkyOCw==" length="4945096"

可以设置最低的系统版本支持

<sparkle:minimumSystemVersion>10.13</sparkle:minimumSystemVersion>

5.在软件中添加Sparkle对象

  1. 打开main.storyboard
  2. 在资源库中添加Object对象到Application场景目录下,并修改Object的class为SUUpdater
image.png
  1. 添加一个检查更新的菜单到主菜单,将检查更新菜单拖拽到刚才的Updater对象上(就是刚才的Object),绑定Updater的 checkForUpdate事件,即可。
上一篇 下一篇

猜你喜欢

热点阅读