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

发布于 2024-09-24 20:06:50 字数 133 浏览 4 评论 0原文

我正在尝试使用 Winforms 创建一个自动更新应用程序。我无法使用单击一次或更新程序块,因为该应用程序也需要在 Mono 上运行。

从网络服务下载新的 exe 文件后,是否可以解锁正在运行的 exe 文件、替换它并重新启动应用程序?

I'm trying to create an auto-updating app using Winforms. I can't use click-once or the updater block because the app needs to run on Mono also.

Once I download the new exe file from a webservice, is it possible to unlock the running exe file, replace it, and restart the app?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

随梦而飞# 2024-10-01 20:06:50

不可以。您无法替换正在运行的可执行文件。您将遇到访问冲突。

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

这还有一个优点是允许您将“更新”设置为需要提升的权限,这可能是必需的,具体取决于您要替换的应用程序的安装位置。

No. You can't replace a running executable. You'll get an access violation.

The best option is to create a separate, small executable that does the replacement for you. Your application can call it, shut itself down, and the second executable can do the download/replace/relaunch for you.

This also has the advantage of allowing you to setup the "updated" to require elevated permissions, which may be required, depending on where the application you're replacing is installed.

ζ澈沫 2024-10-01 20:06:50

我不会那样做(这不会起作用;你会遇到访问冲突)。相反,您可以:

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

I wouldn't do that (It won't work; you'll get an access violation). Instead you could:

  • Download another executable to somewhere on the user's pc (Temporary Documents or your app's folder, for example) then let that update your program.
  • After the update has finished, start up your updated program and pass the location of the updater to it, where your updated app can now delete it. Or just leave the updater where it is.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文