2011-07-26 44 views
2

我知道,我能有Updater.exe & MainProgram.exe但我想保持我释放一个EXE文件。c#应用程序更新程序从内存运行?

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

或者有没有其他的解决方案,我可以只保留一个单独发布的EXE文件?

回答

1

附上updater.exe为您的应用程序资源,然后将其保存到一个临时文件并运行。

1

决不做这样的东西,说实话,但可以分享一些想法上的主题:

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

Updater.exe必须非常轻巧+它可以让你在你决定改变更新了一下(对百万个理由,你可以有),您只需重新编译它,并把它的二进制到共享文件夹,而不会影响主机会建立。

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

希望这会有所帮助。

问候。

+0

+1为第二个想法! – IDWMaster

0

首先,失去与嵌入和更新记忆“前男友”多管闲事的想法。

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

0

我已经看到了这解决了2种方式,但我相信有很多更

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

两者都为我们工作,但我从来没有完全满意#2,因为它需要用户按下一个键。也许你可以加入延迟。