神末shenmo
deepin
2022-05-30 04:08 Spark-App
Q&A Team
希望官方公布文档,之前一直搞不懂这个更新系统
Reply Like 1 View the author
希望官方公布文档,之前一直搞不懂这个更新系统
怎么源里的deepin-wine6-stable找不到了?weixin\qq wine版也不见?
怎么源里的deepin-wine6-stable找不到了?weixin\qq wine版也不见?
shenmo@shenmo-PC:~$ apt policy deepin-wine6-stable
deepin-wine6-stable:
已安装:6.0.0.24-1
候选: 6.0.0.24-1
版本列表:
*** 6.0.0.24-1 500
500 https://com-store-packages.uniontech.com/appstore deepin/appstore amd64 Packages
100 /usr/lib/dpkg-db/status
6.0.0.19-1 400
400 https://d.store.deepinos.org.cn Packages
6.0.0.18-1 400
400 https://d.store.deepinos.org.cn Packages
检查一下
版主方便粘下源?
版主方便粘下源?
## Generated by deepin-installer
deb https://community-packages.deepin.com/deepin/ apricot main contrib non-free
#deb-src https://community-packages.deepin.com/deepin/ apricot main contrib non-free


话说这个updater开源吗?
Popular Ranking
ChangePopular Events
More
结论:
更新条件
"$WINEPREFIX/PACKAGE_VERSION"中)不同时,执行更新files.md5sum时,以md5sum当做版本号;如果不存在,则接收在启动脚本(一般为run.sh)中的APPVER=字段(逻辑上有一个APPVER="@deb_version_string@",但是没有发现这个是怎么获取的,而且会在后续被这个逻辑覆盖)。在启动时检测,如果与$WINEPREFIX/PACKAGE_VERSION中的相符,则启动,跳过更新;如果不符,则执行更新并把新的APPVER写入$WINEPREFIX/PACKAGE_VERSION更新行为
"Deepin-Intelligent" | "Deepin-QQ" | "Deepin-TIM" | "Deepin-WeChat" | "Deepin-WXWork" | "Deepin-Dding"中的一个时,执行删除容器后解压(如果有配置文件,就一起没了)files.7z解压到"${WINEPREFIX}.tmpdir",然后执行updater(源文件夹设置为"${WINEPREFIX}.tmpdir",目的文件夹设置为"${WINEPREFIX}")updater的行为:
update.policy来精确配置保留哪个,分析过程
这是一个deepin-wine6应用包(一般deepin官方提供的启动脚本叫run.sh,这里是qq.sh)
fires.7z里面放的是容器,files.md5sum是md5值,用于版本更新判断
qq.sh里面是启动脚本
可以知道,这里设定的
APPVER是9.6.0.1hf3,使用的启动脚本是run_v4.sh启动时会把
APPVER作为第二个参数传出去设置完各种变量之后,执行
run_v4.shrun_v4会在启动时首先获取
APPVER首先会在开头获取一个
APPVER="@deb_version_string@",但是没看出这是用什么获取的,而且在587行被覆盖587行的逻辑是:
如果存在
files.md5sum则使用此作为版本号(其实更接近于唯一版本标识符)如果没有,则使用传入的第二个参数作为版本号,就是
run.sh中指定的随后,在执行更新APP时
首先是比对版本
比对位于
"$WINEPREFIX/PACKAGE_VERSION"的版本号与获取到的APPVER(获取方法前文已经提及)。如果一致,则跳过;否则执行更新然后检测是否是
"Deepin-Intelligent" | "Deepin-QQ" | "Deepin-TIM" | "Deepin-WeChat" | "Deepin-WXWork" | "Deepin-Dding"其中的一个,如果是,可能因为updater无法处理的原因,则删除容器重新部署。对于其他的软件包,则执行updaterupdater的行为分析:
首先执行updater,得知使用方法
使用一个git仓库文件夹进行测试,得出以下结论:
update.policy来精确配置保留哪个,关于update.policy
官方没有给出文档,在此附上一份样本,可以按需修改
这是来自Deepin-Wechat的policy文件,似乎默认会使用这个,因为发现其他星火的包都是这个策略,而在此之前大家都没发现这个更新系统,推测可能是默认生成的。当然,也可能是大家都基于这个容器打的包(
位置在~/.deepinwine/Deepin-WeChat/update.policy
博客原文
本人第一个正经的技术博客,撒花