GeneralLibrary / GeneralUpdate

My ship looks old, who can help me upgrade it.
https://www.justerzhu.cn/
MIT License
304 stars 33 forks source link

GeneralClentOSS里为什么finally要kill当前进程? #65

Open MLing592 opened 1 week ago

MLing592 commented 1 week ago

Snipaste_2024-10-02_14-46-11

这么写的话,不管需不需要升级,都会kill当前进程,那么就会出现即使我不需要升级,当前进程也会kill,具体表现就是一打开就闪退

JusterZhu commented 1 week ago

当时的设计应该是在client启动的时候去检查upgrade端的升级,然后不管upgrade是否需要更新都会关闭自己然后把upgrade启动起来去检查client端的更新。 这快的设计思想有些落后了,应该是client启动的时候把需要更新的内容都检查一遍。

JusterZhu commented 1 week ago

目前我正在重构所有的组件,需要一些时间。如果你要基于现在这套基础代码做更新可以随时提issue我协助你完成你的工作。

MLing592 commented 1 week ago

当时的设计应该是在client启动的时候去检查upgrade端的升级,然后不管upgrade是否需要更新都会关闭自己然后把upgrade启动起来去检查client端的更新。 这快的设计思想有些落后了,应该是client启动的时候把需要更新的内容都检查一遍。

OSS的设计应该是以简单方便为主吧,暂时看来或许可以加入这些:

  1. 当前version.json新增ReleaseNote版本更新说明
  2. version.json改为MainVersion.json,新增UpgradeVersion.json作为Upgrade的更新依据
  3. 代码中我发现下载解压启动主程序这个流程中UnZip是appPath+Version.Name.Zip,改成url中文件名作为文件名或许更合适,并且提供update目录可选,备份时提供过滤器不备份update目录,此目录文件可作为更新缓存包,回滚后再次更新不需要再次下载
  4. 提供主程序/Upgrade备份功能,备份名为backup.{AppName}.{versionName}.zip,便于分割匹配字符串;存放目录可选,,备份时提供过滤器不备份backup目录
  5. 提供主程序回滚功能,通过备份包和MainVersion.Json实现,若有缺失则无法回滚
  6. MainVersion.json,backup目录,update目录放在Client根目录中,UpgradeVersion.json放在Upgrade根目录中

以上是我的一些想法,可能有不适合或已实现的部分,敬请指正