Winforms应用程序可以解锁/替换自己的exe文件以进行自动更新吗?
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可以。您无法替换正在运行的可执行文件。您将遇到访问冲突。
最好的选择是创建一个单独的小型可执行文件来为您进行替换。您的应用程序可以调用它,自行关闭,第二个可执行文件可以为您执行下载/替换/重新启动。
这还有一个优点是允许您将“更新”设置为需要提升的权限,这可能是必需的,具体取决于您要替换的应用程序的安装位置。
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.
我不会那样做(这不会起作用;你会遇到访问冲突)。相反,您可以:
I wouldn't do that (It won't work; you'll get an access violation). Instead you could: