我不"得到"程序如何更新自己.如何更新软件?

Ser*_*pia 25 c# patch upgrade

假设我创建一个.exe文件,一切都很好.很棒很有效.

说我在软件上开发了一个新功能,我希望它可以用于已经有旧版本的人,如何让软件找到我的新版本,修补它,然后开展业务.

我似乎无法绕过这个问题.

谢谢.

编辑: 我很抱歉这个混乱,但我的意思是一个代码更明智的答案.我的代码中是否有一些特殊内容我应该允许更新?

例如,如果我想添加新功能,如何为已经打包的.exe添加"方法"?:S那让我旋转着.

Mat*_*att 17

一种流行的解决方案是实际上有一个单独的进程替换必要的文件.

您是否注意到Firefox必须在每次更新时重新启动?好吧,那是因为一个单独的进程(updater.exe)正在下载文件,关闭firefox,替换文件,然后再次启动Firefox.

编辑当然这假设您在线托管更新程序可以检查的更新列表(RSS源,甚至是简单的文本文件).

  • 好的,updater.exe如何自行更新? (3认同)

Rem*_*o.D 16

通常过程如下:

  • 用户启动应用程序
  • 应用程序启动"更新程序"(另一个程序)
  • 如果存在更新的版本,更新程序将从Internet检索
  • 如果是这种情况,建议用户更新
  • 用户接受,更新程序下载新的安装包(可以是增量)
  • updater关闭应用程序(或者更好,要求用户执行此操作)并启动新安装程序.
  • 安装包完成剩下的工作

当然,你可以有很多变化,但这是实现它的基本方法.

在Windows上,至少,某些软件会安装一个始终打开的更新程序守护程序,并检查它所需的软件的新更新(例如,GoogleUpdater).


Chr*_*isF 15

您需要查看Click Once Deployment.

ClickOnce是一种部署技术,使您能够创建基于Windows的自我更新应用程序,这些应用程序可以在最少的用户交互下安装和运行.如果您使用Visual Basic和Visual C#开发了项目,Visual Studio将为使用ClickOnce技术部署的应用程序的发布和更新提供全面支持.

这将创建一个可下载的安装程序exe,您可以将其加载到Web上.用户要么就地运行它,要么下载并运行它.这会将您的exe包装在代码中,该代码将检查Web位置(以您选择的频率)进行更新.如果找到一个,它将为用户安装它.

您无需对代码进行任何特殊更改即可启用此功能.超出增加版本号.只需修改和扩展您的代码,正常,编译,构建,打包和上传.

需要注意的一点是,ClickOnce不支持安装需要管理访问权限的应用程序:

ClickOnce部署使非管理用户能够仅安装和授予应用程序所需的代码访问安全权限.

因此,如果您的应用程序需要管理员级别访问权限才能运行甚至安装,那么它不适合您.

  • 我对Click-Once失去了信心.如果它工作,确定它很好,但当它失败,男孩,这是一个巨大的混乱.请注意,没有一个'大男孩'使用ClickOnce(微软甚至不使用它!) (4认同)
  • 在这一点上,我建议你自己滚动.你只需要一个方法来下载新文件,然后用新的文件替换当前的程序.你会发现在ClickOnce中与可怕的错误作斗争并不值得. (4认同)

Dav*_*d M 6

一个想法 - 你可以有一个加载器应用程序为你做检查,然后如果有必要在启动之前更新主应用程序的exe?