Winforms应用程序可以解锁/替换自己的exe文件以进行自动更新吗?

时间:2010-09-23 19:04:52

标签: c# winforms executable auto-update

我正在尝试使用Winforms创建自动更新应用。我不能使用click-once或更新程序块,因为应用程序也需要在Mono上运行。

从webservice下载新的exe文件后,是否可以解锁正在运行的exe文件,替换它,然后重新启动应用程序?

2 个答案:

答案 0 :(得分:4)

没有。您无法替换正在运行的可执行文件。您将获得访问冲突。

最好的选择是创建一个单独的小型可执行文件来替换您。您的应用程序可以调用它,自行关闭,第二个可执行文件可以为您执行下载/替换/重新启动。

这样做的另一个好处是允许您设置“已更新”以要求提升权限,这可能是必需的,具体取决于您要替换的应用程序的安装位置。

答案 1 :(得分:1)

我不会这样做(它不起作用;你会受到访问侵犯)。相反,你可以:

  • 将另一个可执行文件下载到用户PC上的某个位置(例如,临时文档或您的应用程序的文件夹),然后让它更新您的程序。
  • 更新完成后,启动更新的程序并将更新程序的位置传递给它,更新后的应用程序现在可以将其删除。或者只是将更新器留在原处。