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

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

我知道我可以使用System.ReflectionAssemblyAssemblyName来打印当前正在运行的应用程序版本,但我不知道如何将它与最近发布的版本进行比较。

在不使用ClickOnce的情况下,控制台应用程序的CheckForUpdate()相当于什么?

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

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

Interesting Posts