我们有一个最小的'updater'exe,用于检查远程URL以获取更新,下载它们并在启动实际应用程序之前替换磁盘上的文件.但是,如果我们想要更换更新程序EXE,那么AFAIK我们有两个选择:
1)卷影复制程序集,其中.Net将创建EXE(和任何引用的程序集)的卷影副本并加载这些程序集,以便可以替换非卷影程序集,并在下次启动应用程序时使用.
2)确定要替换的文件,并在磁盘上重命名/移动它们.Windows似乎允许重命名/移动锁定的文件,因此我们可以移动文件并复制新的程序集.再次,在下一次启动应用程序时,我们将启动新的程序集.这里提到了这种方法
这第二种方法是推荐的方法吗?这种方法有什么缺陷吗?
我使用第二种方法没有任何问题.只需确保下载的程序集已正确下载.;)
运行Update.exe并执行以下操作:
1.将新的update.exe下载为update.ex_
2.将update.exe 重命名为update.bak(您可以重命名,但不能覆盖它)
3.重命名更新. ex_to update.exe
4.重新启动update.exe
我这样做完全没有任何问题,所以我们测试并在我们说话时在大约400名客户的现场环境中运行.
另一种选择:当主应用程序想要自我更新时,它会生成一个新的更新程序进程,然后自行关闭.同时生成的进程等待主应用程序关闭(进程消失),然后更新所有必需的文件(包括.exe).之后,它只是重新启动主应用程序并退出更新程序进程.
| 归档时间: |
|
| 查看次数: |
5262 次 |
| 最近记录: |