请问winform的自动更新怎么替换更新程序自身的dll?
因为有几个程序都需要更新功能,所以就把更新模块做成dll形式,但是这个dll除了更新模块还有别的功能模块(也就是说这个dll也需要更新的)。请问更新替换时候应该怎么替换?难道要把更新独立成一个不会修改的dll?
再问下,有什么办法在客户端没安装压缩工具的情况下直接下载需要更新模块的压缩包然后再解压替换吗?
谢谢指点。
[解决办法]
你好,本人做过 . 我可以给你思路 .
1,本地有个标示符,每个文件都有自己的标示符 .至于怎么记录那看你怎么写了.
2,从服务端获取所有最新要更新的文件 .
3,服务端文件与本地文件匹配 .
以上操作是在你的客户端启动的时候,后台加载这些东西 .
如果以上匹配有需要更新的文件 ,将更新的文件记录下来.
4,启动更新程序,这个更新程序 是单独做的.跟客户端程序是分开的,我是把这个更新程序放在客户端程序某个路径下. 用于方便启动, 打包的时候这个程序也要打包.
5,根据需要更新的文件信息 从服务器上下载下来. 替换.替换成功一次,则将本地文件信息修改为最新.
6,更新完毕,重启. 每次都这样验证.
[解决办法]
每次升级的时候不更新dll,登陆系统的时候,再去下载最新的更新程序dll
[解决办法]
写两个程序,一个做更新用的,更新的时候,打开更新程序,关闭自身,做的好点的话,更新程序写文件前判断下所要更新的文件是否都能写入
[解决办法]
服务端有一个文件,记录了所有dll的版本(更新时间),客户端也有一个对应的文件,每次运行更新时比较文件中记录的各个dll的版本,若不同就下载。压缩包我看没有必要,你每次上传更新的时候也不是每次上传一个压缩包吧?
如果你的客户端正在运行,并加载了一个dll,想要替换这个dll是比较难的,可以考虑定时检查更新,如果检查需要更新,就弹出一个提示。就像windows update一样。
[解决办法]
使用强命名程序集。
[解决办法]