如何在不使用ClickOnce的情况下获取控制台应用程序以检查更新?

new*_*ser 2 c# auto-update console-application

在普通的Windows应用程序中,我可以使用......
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CheckForUpdate()
来确定是否有可用的更新.

我知道我可以使用System.Reflection,并AssemblyAssemblyName打印应用程序的版本,因为它正在运行,但我不知道如何得到它来比较,以什么被公布最近.

CheckForUpdate()不使用ClickOnce的情况下,控制台应用程序的等价物是什么?

Bra*_*ner 5

您需要一些服务器端,应用程序可以使用它来查找最新版本.就个人而言,我会使用返回最新版本号的Web服务和可以下载的URL,但这也可以通过解析此信息的静态页面来完成.应用程序启动,检查它的版本号到服务返回的版本号.如果服务报告较新版本,请使用HttpWebRequest(或其他方法)下载新版本.如果新版本打包为安装程序,则可以执行安装程序并退出当前运行的实例.如果你想要比安装程序更安静的东西,你需要一种更新你的exe的方法.这通常由第二个应用程序(更新程序)完成,该应用程序等待主应用程序退出并将新版本的exe移动到位,然后重新启动应用程序.要记住的一件事是,为了使应用程序正在运行的用户需要具有写入程序目录的权限.

如果这更像是您想要使用文件共享的公司环境,那么您可以采用不同的方式.让程序检查一个众所周知的共享目录,查找具有最新版本和更新路径的文本文件.解析文本文件以获取与上面相同的信息,并使用system.io命名空间类从指定路径获取新版本.它基本上是相同的操作,但使用文件路径而不是Web请求.