C# 升级包(本地覆盖安装)

fangenqiang 2013-10-25 04:55:00
大家好,目前有个需求,就是更新已经安装的软件,其实很简单,就是把dll及exe替换成最新的就行了。

目前我是这样实现的,制作了一个winform程序,然后把exe所处路径的更新文件夹中的文件覆盖到安装目录,完成更新,但是这样呢,有时候客户以为更新文件就是一个exe,就拷贝到别的地方执行了。。。因而就找不到更新的文件了。

能不能把这些文件都打包在exe中,然后exe执行时,拿到的更新文件就是从自身里面提取出来的?
...全文
702 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcw1020 2013-10-29
  • 打赏
  • 举报
回复
我新手,不过我做过类似的事情。我给你个建议吧,与其用C#写代码的方式,不如用INNO setup安装升级的方式来做,这样做的效果更好。而且更简单。至于INNO setup的代码,也很简单,要的话我再给你。我公司就是做产品的,也有软件,软件经常要更新,更新就一般更新EXE而已,也就一两M的事,初次回复,可能啰嗦了点。
Code従業員 2013-10-29
  • 打赏
  • 举报
回复
TO fgq0613 :
你好,可能我的意思没有表达清楚

1、源程序不用进行任何修改,你只要做个新程序专门针对你的软件进行更新即可,新程序作为程序入口,更新完成后直接调用你原程序的exe

2、服务器所说的不一定是外网服务器,也可以是你的内网数据库服务器,甚至是你的个人PC机(如果24小时开着一点问题都没有),我说的外网是指有对外业务的情况,比如在外销售部查单,你不会先快递个U盘过去吧?
  • 打赏
  • 举报
回复
思路其实比较简单,让升级程序和升级包保证"相互可见"就行了 方法一: 将升级文件(建议打成zip包)放到系统目录(比如C:\Docume~\AllUser\ApplicationData\XXX) AllUser目录一般对所有用户都可读写 方法二: 将升级Zip包作为资源文件嵌入到winfrom程序中,运行后将zip资源解压出来再升级 读写嵌入式资源 http://www.cnblogs.com/zhangjun1130/archive/2011/04/11/2012566.html
fangenqiang 2013-10-28
  • 打赏
  • 举报
回复
引用 2 楼 qyj2009 的回复:
这个 不是应该告诉他们 拷贝的是文件夹而不是单独的exe么
所以希望能通过更简单的方法实现这个更新。
fangenqiang 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 icdbow 的回复:
直接做成在线更新不就好了么?简单的方法就是共享服务器一个文件夹,每次运行exe先访问文件夹,通过判断版本号,将新的文件拷过来。这样,只要能够访问服务器,都能拿到完整程序,不用每次都拿U盘拷,也能预防使用者版本不统一。 再说两点 1、推荐更新另外写成EXE,不然在运行时无法覆盖自身。 2、能做成FTP效果会更好,因为有时候会跨网段、外网什么的
谢谢的的回复,我这边的情况是: 1、现在的项目已经上线了,不想在通过修改主程序实现自动更新。 2、有些客户的电脑是不可以连接外网的。 3、之前给客户更新都是U盘拷贝过去复制更新。 所以希望通过额外的单独的程序自动覆盖更新。(这个单独的程序里面最好能包含更新的文件)
水目 2013-10-25
  • 打赏
  • 举报
回复
这个 不是应该告诉他们 拷贝的是文件夹而不是单独的exe么
Code従業員 2013-10-25
  • 打赏
  • 举报
回复
直接做成在线更新不就好了么?简单的方法就是共享服务器一个文件夹,每次运行exe先访问文件夹,通过判断版本号,将新的文件拷过来。这样,只要能够访问服务器,都能拿到完整程序,不用每次都拿U盘拷,也能预防使用者版本不统一。

再说两点
1、推荐更新另外写成EXE,不然在运行时无法覆盖自身。
2、能做成FTP效果会更好,因为有时候会跨网段、外网什么的

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧