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

时间:2011-07-26 20:35:21

标签: c# .net

我知道我可以使用Updater.exe& MainProgram.exe但我希望将我的版本保存在一个EXE文件中。

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

还是有其他解决方案,我可以保留一个发布的EXE文件吗?

4 个答案:

答案 0 :(得分:1)

老实说,从未做过这样的事情,但可以就主题分享一些想法:

  1. 使用CodeDome在运行时编译程序集Updater.exe并执行它(不喜欢这个)
  2. 如果从某个位置检查新的软件版本/更新,为什么不先从相同的位置下载Updater.exe呢?
  3. Updater.exe必须非常轻量级+它让你有机会在决定更改更新程序的时候(原因可能有数百万)你只需重新编译它并将它的二进制文件放入共享文件夹,而不会影响主设置。

    我个人不喜欢合并更新程序与主要设置。

    希望这有帮助。

    问候。

答案 1 :(得分:1)

将updater.exe作为资源包含在您的应用中,然后将其保存到临时文件中并运行该文件。

答案 2 :(得分:0)

首先,失去了插入并更新内存中“exes”的想法。

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

答案 3 :(得分:0)

我已经看到这解决了2种方法,虽然我确信还有更多

  1. 使用ClickOnce功能自动更新
  2. 使用已启动的批处理文件,但等待用户按OK,在提示确定的时间内,真实程序在后台关闭。然后批处理完成更新并重新启动应用程序。
  3. 两者都为我们工作,但我从未完全满意#2,因为它要求用户按一个键。也许你可以添加一个延迟。