如果有,则继续更新软件。
通常如何处理这种情况?
请看Click Once。 这个线程也可能会很有趣。
wyUpdate处理所有Vista / Windows 7 UAC问题以及在尝试更新复杂软件时必然出现的所有文件权限问题。
话虽如此,如果您想构建自己的更新程序,以下是一些提示:
一个好的起点是上面提到的wyUpdate C#源代码。您可以拆卸它并将其用于自己的目的。它包含的一些算法:
我们这里也有文件规格。
由于自动更新是必需的,让我告诉您我们如何使用我们的AutomaticUpdater控件进行自动更新。
我们使用命名管道在独立的updater(wyUpdate)和坐落在程序窗体上的自动更新控件之间进行通信。wyUpdate向自动更新器报告进度,而自动更新器可以告诉wyUpdate取消进度,开始下载、开始提取等操作。
这使得更新程序与您的应用程序分离。
事实上,我们使用的确切命名管道C#代码包含在我写的一篇文章中:类似谷歌Chrome的多进程C#应用程序。
如果你希望你的应用程序可以从网站自动更新并且由自己管理代码,请按以下步骤操作:
创建一个XML文件,例如help.xml
并建立一种结构来指定要在特定目录中更新的文件列表和版本等。然后将它们上传到你的网站上。
应用程序连接到网站后会下载此help.xml
文件并读取内容以确保网站上是否有任何新文件(更新文件)...
如果存在新版本的文件,则开始从help.xml
文件中指定的URL下载!
其他答案看起来很好。
然而,如果因为任何原因你想要自己手动制作更新器,只需在web服务器上放置一个包含更新过程所需信息的XML文件(例如当前可用版本的描述和版本号),并使用HttpWebRequest
(或HttpWebClient
?)下载此文件并像处理任何XML文件一样进行处理。
我在peSHIr Tweets中使用这种简单的方法,效果很好。只需在提供新版本进行下载后更新此文件,您的更新检查将发现它。关于此过程的任何内容都可以按照您自己的方式进行更改,因为是您自己编写的。
除非这是为自己的娱乐/使用/学习而进行的私人项目-就像在我的情况下一样-不过还是要看看是否已经有适合您需要的内容可用!
请看这个链接:更新检查器,我编写了它以展示在C#中实现此功能的简单方法。
这个XML文件管理着更新:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myCoolApp>
<currentVersion>
<major>9</major>
<minor>1</minor>
<build>5</build>
</currentVersion>
<path>http://TestApp.exe</path>
</myCoolApp>
XmlDocument oDom = new XmlDocument();
oDom.Load(_sXmlConfig);
string str = oDom.SelectSingleNode("//currentVersion/major").InnerText;
Int32.TryParse(str, out _nMajor);
str = oDom.SelectSingleNode("//currentVersion/minor").InnerText;
Int32.TryParse(str, out _nMinor);
str = oDom.SelectSingleNode("//currentVersion/build").InnerText;
Int32.TryParse(str, out _nBuild);
_sNewVersionPath = oDom.SelectSingleNode("//path").InnerText;