美文网首页MacDeveloper
使用Sparkle实现软件的检查更新

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

作者: _我和你一样 | 来源:发表于2020-04-10 12:40 被阅读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事件,即可。

相关文章

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

    使用Sparkle实现软件的检查更新 上sparkle官方连接:https://sparkle-project.o...

  • MacOS开发笔记19-自动更新

    macOS 使用 Sparkle 检查软件自更新这篇转载来源,https://www.jianshu.com/p/...

  • macOS 使用 Sparkle 检查软件自更新

    1、前言 其实,这个文章应该是上一年打算写的,结果,最近才有时间整理。开发 macOS 软件也有一段时间,对于软件...

  • iApp远程更新软件代码

    通常软件使用都会更新。但是,我们要怎么实现软件更新了? 其实,软件更新这一段代码非常的简单。先让我们来看看这段代码...

  • mac关闭自动检查更新homebrew

    每次使用brew安装软件时,默认都会自动检查更新homebrew,显示Updating Homebrew...,会...

  • macOS 开发 - 使用 最新版本Sparkle 进行自更新

    前言 macOS 开发中使用Sparkle进行自更新,目前百度搜索到的资料几乎都是老版本的,英文不太好,折腾了好久...

  • App 版本更新

    App更新流程:检查更新==>提示更新==>下载apk==>安装新版App 检查更新:根据不同的业务和后台逻辑实现...

  • 实现Android的在线更新

    虽然有很多商店都有自动更新的SDK,但是审核不够灵活,以下介绍如何使用Fir.im进行更新,实现检查更新,后台下载...

  • Ubuntu命令笔记

    -## 查看Ubuntu版本 -## 只检查,不更新 -## 更新已安装的软件包 -## 查看已经安装的软件名称 ...

  • ionic2实现APP自动更新

    app版本更新可以在应用的设置里面检查版本进行更新或者进入app后自动检查更新。我这里实现的是自动检查更新。 第一...

网友评论

    本文标题:使用Sparkle实现软件的检查更新

    本文链接:https://www.haomeiwen.com/subject/lbfrmhtx.html