应用(服务)自我升级?

Kri*_*den 6 .net c# .net-4.0

我正在用C#开发一个基于.NET4的应用程序,它作为一个Windows服务运行.

我希望这个应用程序能够通过定期连接的Web服务进行升级.有没有可以接受的方法来实现这一目标?它甚至可能吗?

我正在考虑它的方式是这样的:

  1. Windows服务(.exe)代码将其替换和支持DLL作为zip下载并将其提取到临时目录.该zip还包括一个小的"升级程序"可执行文件或脚本.
  2. 该服务分叉子进程以运行升级程序,在命令行上传递目标目录和任何其他所需信息
  3. 该服务关闭
  4. 升级程序进程等待服务完全停止,然后将必要的文件(新的.exe,DLL)移动到最终安装目录中,替换旧文件
  5. 升级程序重新启动Windows服务,该服务生成(已升级的).exe并在启动后退出

这会有用吗?您可以从我的术语和方法中检测到我来自UNIX背景而不是Windows背景.我已经在UNIX上使用了这种方法,但我不知道可能存在哪种类型的窗口...

更新:我对这个问题的主要动机是围绕自我更新的.NET应用程序的技术可行性(如何进行.DLL的就地替换等).正如评论中所指出的,实现这样的功能还涉及许多其他考虑因素,特别是关于验证所应用的新软件组件的安全问题实际上是合法的.这些也很重要,但不是特定于.NET或Windows(imo).当然欢迎对这些领域的评论,但目前他们不是我主要关注的问题......

Chr*_*ens 0

你应该看看菲尔·哈克(Phil Haack)的这篇文章,他是本周早些时候媒体的热门人物。我不认为这正是您正在寻找的,但它可能会节省您一些时间。无论如何,NuGet 都是美好时光。