Tauri 进阶篇 – 自动更新源码阅读

在更新应用程序时,遇到了一个有意思的问题,准备以此为切入点,聊聊更新的那些事。

问题背景

官方推荐的应用程序更新请求的 json 文件格式[1]是这样的:

{
"version": "v0.1.7",
"notes": "feat: updater",
"pub_date": "2022-10-14T03:49:21.981Z",
"platforms": {
"win64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSOGZLZEpvdzBMNlpLU2N2bTlZVCtWcjFNZ3l2WDN6UGN0Qm5JeGRWY3VhVW9odTZXc2xJcGFHdWdNNHU0S051YTlsN3pYQ0xiUnRXQ3J5TDZGb3BPS0lhMHNUTmVucFFRPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjY0ODEyODI1CWZpbGU6T2hNeUJveF8wLjEuN194NjRfZW4tVVMubXNpLnppcApkUkR2ZEwwWFVJUzl4Z1pKQ0pGZmp4T1MzVGdGemVQdTBZS3ZHNGhTSG1yd3Zycm9Jc2o4SGFydDgydERNNmpCRXMvTkVCVkdsN2U1bzZnSmE5WEJCZz09Cg==",
"url": "https://github.com/lencx/OhMyBox/releases/download/v0.1.7/OhMyBox_0.1.7_x64_en-US.msi.zip"
},
"linux": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSOGZLZEpvdzBMNmNaMUYrU1RzRG84WFdld2xzV3lKRi9TSzBXbzk1Vk9JWHRNY3dNOGxwekNkMmM4N3U2ZW0wV1Rrb3dvYklCcmRqK2JHekMzNzQxUzF1MXEwOWVWTFFVPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjY0Nzk0MzQxCWZpbGU6b2gtbXktYm94XzAuMS43X2FtZDY0LkFwcEltYWdlLnRhci5negpKZklydGV1QkVoejg0UzQ4aFg3U25TSWY1ajdYVUNnUlYyZWx0cG5LVEFBSnV6cVMzWUVHK2hQT25ucUdWQkRUZ2xyWUJjZGlwcEZmaitGdXozMnBCQT09Cg==",
"url": "https://github.com/lencx/OhMyBox/releases/download/v0.1.7/oh-my-box_0.1.7_amd64.AppImage.tar.gz"
},
"darwin": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSOGZLZEpvdzBMNmVrKzJ3S2ZqaG5Gakw3clBiM2V0YjFyNEltQVFMMm9nbTMyaVk1UklrYjlVdk16OXh1bzhUK3dDQVZQbWQ4Zi9MYThvdjdWT2NucDIvQWJvcUtwYkEwPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjY0Nzk0NzE5CWZpbGU6T2hNeUJveC5hcHAudGFyLmd6ClA1VSsvVE5XdUVrM3NuMUF2Rjd5TWJrdWd4R1lpanM0N3lncVNvb2NKZWNPaXRjU2VpcGpKeEp0M1ZmRm1mMERtelNuRVRMTjA1VkxMYVVhYjJsYUNnPT0K",
"url": "https://github.com/lencx/OhMyBox/releases/download/v0.1.7/OhMyBox.app.tar.gz"
},
}
}

json 主要包含 4 个字段:

  • version – 版本号

  • notes – 更新日志

  • pub_date – 更新日期,格式请参考 RFC 3339[2]

  • platforms – 不同平台的签名和下载链接

问题描述

我为了让 json 文件更具可读性,就私自在 json 文件中加了一个 name 字段,来存放项目名称,结果导致更新提示弹窗无法弹出,从浏览器控制台也看不到任何报错信息。

{
"name": "ohmybox",
"version": "v0.1.7",
"notes": "feat: updater",
"pub_date": "2022-10-14T03:49:21.981Z",
"platforms": {}
}

定位问题

导致弹窗失败的因素有很多,比如:

  1. tauri.conf.json 中的 tauri.updater 配置错误

  2. 存放更新应用请求的静态资源地址的网络不畅

  3. 更新应用请求的 json 文件格式或数据错误

  4. 其他未知原因

在一切未知的前提下,我们并不能够快速定位出问题,只能逐一排查。排查问题首先需要做的就是缩小范围。在这里 1(配置正确) 和 2(网络通畅) 是必要条件。最后才是排查代码实现以及一些其他未知因素。

需要排查代码层面的问题,第一想法不是去靠猜测,因为面对未知的技术,猜是最不靠谱,最浪费时间的决策。我们可以前往官方文档去查看,是否提供了相应的 debug 工具或 api 来辅助我们对程序进行调试。

Click to rate this post!
[Total: 0 Average: 0]

人已赞赏
Rust开发小白百科每日优选

Tauri 应用篇 - 自动通知应用升级

2022-10-27 17:53:18

Rust开发名家说每日优选

WA+: Web URL 与桌面应用的一次邂逅

2022-10-27 18:06:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索