well-e / autoupdater Goto Github PK
View Code? Open in Web Editor NEWWPF AutoUpdater
License: MIT License
WPF AutoUpdater
License: MIT License
需在AutoUpdate.MauiApp-Sample中开发
1.让GeneralUpdate整套组件适应MAUI的框架,并能在window client的环境下正常更新
目前只看到了快速启动的文档,及b站的视频,有没有比较详尽一些的文档?关于打包和更新的流程
接收客户端上传的补丁包,将信息录入至数据库中。
将打包好的补丁包,直接上传到服务器
需在Readme.md中更新每次版本的新特性,并生成.html 和 .pdf对应内容格式的文件。
将搭载GeneralUpdate组件的应用程序在iOS和Android环境下运行测试
需在GeneralUpdate.AspNetCore实现
1.在该组件中添加Signal R的组件
2.由服务端决定是否推送最新版本的推送
3.当最新版本信息落库之后,将最新版本的内容读出并以JSON字符串的形式推送(数据结构参考sql脚本的结构)
1.打包完成之后,勾选checkbox选择是否上传到指定服务器中
java版本将同步GeneralUpdate.AspNetCore所有功能。
1、和GeneralUpdate.Core和GeneralUpdate.ClientCore组件开发搭配,结合sqlite或json静态文件在程序外部进行配置,而非写死代码
2、增加类似swagger之类的可视化接口工具,便于更多的第一次上手的朋友们,更容易上手并了解项目
3、结合项目结构,梳理example的启动顺序和相互依赖
需在GeneralUpdate.ClientCore和GeneralUpdate.Core中开发
1.将多任务下载功能重构为支持“可等待”的方法
2.添加观察者设计模式
该方法只需要传递服务器地址即可启动更新
您好,我下载您的这个代码后,在使用时遇到一些问题,需要您的帮助。
一:代码下载后,启动调试时,参数直接就是默认的。想知道使用时传入参数的方法。
二:关于UpdaterEx工程的说明。这个工程的作用是什么?
1、关于更新程序是否需要和主程序放在同一个目录下,是将主程序和更新程序的debug目录下的所有文件移动到同一文件夹下吗?
2、GeneralUpdate.PacketTool打包程序,我理解的第一个地址是需要打包的数据,第二行和第三行有啥区别?对打包数据有要求吗?
3、我可不可以直接用压缩工具做一个压缩包当做更新包?
4、现在的要对客户端更新是不是必须要有单独的更新程序、主程序、服务端三者,不能只有服务端和主程序,主程序中融合更新程序
管道模式
在微信文档中并未找到相关说明,但是在readme中看到
非强制更新可以弹出选择框供用户选择,强制更新则直接更新
,是否有示例demo或相关文档说明?
打包前有界面可选择需要打包的文件、及对应的文件夹结构
AutoUpdate.WpfApp项目启动出错
错误描述:System.InvalidOperationException:“不能在同一 AppDomain 中创建多个 System.Windows.Application 实例。”
错误位置:App.xaml.cs 第48行 var application = new App();
该功能适用场景为,在企业级开发中会出现多分支定制化需求。那么需要更新升级的内容也需要根据不同的客户端唯一标识来区分。
1,客户端主程序版本号在什么地方设置? AssemblyInfo.cs?
2,客户端:代码怎么写?
3,更新升级包:除了update.zip,是不是还有一个update.xml,存放新版本号及更新说明
4,更新组件:升级程序需要设置哪些:下载路径、客户端主程序名;是在升级组件配置里设置;或是在客户端主程序的配置设置?
5,是不是把升级程序,存放在客户端主程序同一目录?
在LaunchTaskAsync方法中,如果HttpUtil.GetTaskAsync(url)的URL应各种原因无法访问,那么会返回null。此时下一句updateResp.Code便会报空指针异常。
AutoUpdate.ConsoleApp编译后会在Debug目录下生成x64和x86的文件夹。如果把Debug目录下的所有文件拷贝到待更新程序的Debug目录下,目标程序无法完成自动更新。
GeneralUpdate.Core工程下的DefultStrategy类在解压成功后会调用FileUtil.Update32Or64Libs(_updatePacket.InstallPath);
。如果安装目录下存在x64或x86文件夹,FileUtil.DirectoryCopy
方法会在拷贝成功后把源文件夹,即x64或x86文件夹删除,但是FileUtil.Update32Or64Libs
中还会调用Directory.Delete(sourceDir)
把源文件夹再删除一遍,导致删除异常,无法更新成功。
需在AutoUpdate.WpfNet6-Sample中实现
1.在该项目中引用GeneralUpdate.Core及相关组件
2.美化更新UI
3.正常运行并更新“主程序”(MainApp)
该功能在AutoUpdate.ConsoleApp中开发。
1.使用Spectre.Console 或 CommandLine 美化更新内容的输出。
该功能需在GeneralUpdate.Core和GeneralUpdate.ClientCore组件中开发。
1.更新配置文件时,需保持原有配置内容情况下更新文件结构。(目前考虑JSON)
2.更新sqlite数据库时,保持原有数据内容更新表结构。
1.文件树结构管理、递归、对比
2.文件对象定义
3.支持多层级文件夹更新
建议把更新配置放XML或者ini里面,不要存数据库,方便部署。
过往做法是 wpf客户端主程序 在app层OnStartup 事件中 ,根据 接受的参数 作为一个标识, 如果没有标识,说明不是从 更新程序 更新的.
这时候 启动 更新程序,更新程序 更新完毕(走完更新 wpf客户端流程) 启动wpf主程序, 然后传标识到 wpf 客户端主程序.
wpf客户端主程序 app OnStartup 事件中 ,根据 接受的参数,发现了标识,就不再更新流程, 就启动 mainWindow了
放到这里操作思路也是一样吗?
添加接收客户端上传补丁包接口
1.接收客户端上传的补丁包文件
2.预留出文件上传之后向数据库插入版本信息、上传到文件服务器回调函数。
将搭载GeneralUpdate组件的应用程序在Mac环境下运行测试
需在GeneralUpdate.Zip组件中开发
1.需在GeneralZipFactory添加7z格式解压、压缩功能以及压缩、解压通知事件
2.需在GeneralZipFactory添加RAR格式解压、压缩功能以及压缩、解压通知事件
为了提示用户下载的进程描述,除了进度条,在必要的时候(企鹅群也在问找不到服务器地址,可能因为他们找不到那个server项目)进行提示,故在窗体中Tip5的区域,增加了对Message信息的输出。
相关代码在Fork的repo中提交了
https://github.com/JaneConan/AutoUpdater
准备向主库申请pr,和您进行代码审查进行尝试,以便于将来整合MAUI时参考。
需在AutoUpdate.Test测试工具中添加
1.压缩包解压和压缩测试功能,(对应Tab页 Zip Test)
2.启动“更新程序”进行更新测试(对应Tab页 Update Test)
3.获取文件MD5码功能(对应Tab页 File MD5)
4.进程启动的参数查看测试功能(对应Tab页 Process launch)
以上开发内容查看源码后即清晰。
事件管理类,来管理整个组件里所有的通知类型事件。
将搭载GeneralUpdate组件的应用程序在Linux环境下运行测试
需在GeneralUpdate.AspNetCore中添加,增量打包版本文件方法
1.初始化好生成的路径
2.通过树形结构管理新旧版本
3.遍历树形结构根据文件的MD5码和具体的文件版本信息进行比对
4.遍历筛选完成后按照原来的文件树结构生成好差分包
5.向数据库插入差分包的版本信息
6.生成好更新日志便于版本管理
您好,我在下载源码后,进行编译,发现源代码存在一个问题,在 Core
项目中,StringEx.cs
这个文件重复出现了两次,一个路径为 ./StringEx.cs
,另一个在 ./Utils/StringEx.cs
然后就是默认的 Strategy
命名应该是漏了一个 a
,DefultStrategy
-> DefaultStrategy
AbstractBootstrap
类中,在 Private Members
里面, DefultFormat
-> DefaultFormat
最后, 非常感谢作者的开源奉献!
需在GeneralUpdate.Zip中开发。
1.添加多中压缩格式,RAR、7z
2.添加工厂设计模式
环境:win10 家庭版 21H1
问题:安装完成后启动无反应,安装目录下也没有日志文件,不知道什么原因?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.