c#应用程序更新程序从内存运行

本文关键字:内存 运行 程序 应用程序 更新 | 更新日期: 2023-09-27 18:03:30

我知道我可以使用update .exe &MainProgram.exe,但我想保持我的释放在一个EXE文件。

我可以从内存中运行update .exe (update .exe将包含在mainprogram.exe中),然后关闭mainprogram.exe并保持更新程序在新线程中工作(它将更新mainprogram.exe)吗?这可能吗?

或者有任何其他的解决方案,我可以保持一个单一的发布EXE文件?

c#应用程序更新程序从内存运行

将update .exe作为资源包含在应用程序中,然后将其保存到一个临时文件中并运行该文件

从来没有做过这样的事情,老实说,但可以分享一些关于主题的想法:

  1. 使用CodeDome在运行时编译Updater.exe并执行它(不喜欢这个)
  2. 如果您从某些位置检查新软件版本/更新,为什么不先从同一位置下载Updater.exe呢?

update .exe必须是非常轻量级的+它给你的机会在你决定改变更新(百万个原因,你可以有)你只是重新编译它,并把它的二进制文件到共享文件夹,而不影响主要设置。

我个人不喜欢 update与main setup合并。

希望对你有帮助。

问候。

首先,放弃在内存中嵌入和更新"前任"的想法。

试试这个:从主应用程序检查更新服务器是否有更新版本的程序可用。如果有,下载新的exe,下载或创建一个简单的批处理文件,删除当前的exe并重命名新的,然后fork并执行批处理文件,然后退出。批处理文件将等待一会儿,重命名exe,也许启动新的,并删除自己。

我已经看到了解决这个问题的两种方法,尽管我相信还有更多

  1. 使用ClickOnce的功能自动更新
  2. 使用已启动但等待用户按OK的批处理文件,在它提示OK的时间内,真正的程序在后台关闭。然后批处理完成更新并重新启动应用程序。

对我们来说都很有效,但我对#2一直不满意,因为它需要用户按一个键。也许你可以加上一个延迟。