在更新应用程序时,遇到了一个有意思的问题,准备以此为切入点,聊聊更新的那些事。
问题背景
官方推荐的应用程序更新请求的 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": {}
}
定位问题
导致弹窗失败的因素有很多,比如:
-
tauri.conf.json
中的tauri.updater
配置错误 -
存放更新应用请求的静态资源地址的网络不畅
-
更新应用请求的 json 文件格式或数据错误
-
其他未知原因
在一切未知的前提下,我们并不能够快速定位出问题,只能逐一排查。排查问题首先需要做的就是缩小范围。在这里 1(配置正确) 和 2(网络通畅) 是必要条件。最后才是排查代码实现以及一些其他未知因素。
需要排查代码层面的问题,第一想法不是去靠猜测,因为面对未知的技术,猜是最不靠谱,最浪费时间的决策。我们可以前往官方文档去查看,是否提供了相应的 debug 工具或 api 来辅助我们对程序进行调试。
Click to rate this post!