好的,我已经搜索过这个,但找不到具体的我在寻找什么。现在我需要的是如何让exe下载到当前文件夹中,当它发生的时候我需要它来切换旧的更新,比如覆盖它或者什么。所有我想要的是当我点击检查更新按钮时,它检查是否有更新,如果有它说你想下载是或否你点击是然后它下载到当前文件夹它in和它用新的更新覆盖旧的更新。如果没有更新,那么它会说你有当前版本。 我正在使用一个xml文件,其中包含该版本以及下载位于我的网站btw。
这就是我所拥有的,
private void checkForUpdatesButton_Click(object sender, EventArgs e)
{
string downloadUrl = "";
Version newVersion = null;
string aboutUpdate = "";
string xmlUrl = "";
XmlTextReader reader = null;
try
{
reader = new XmlTextReader(xmlUrl);
reader.MoveToContent();
string elementName = "";
if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "appinfo"))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
elementName = reader.Name;
}
else
{
if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
switch (elementName)
{
case "version":
newVersion = new Version(reader.Value);
break;
case "url":
downloadUrl = reader.Value;
break;
case "about":
aboutUpdate = reader.Value;
break;
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
Environment.Exit(1);
}
finally
{
if (reader != null)
reader.Close();
}
Version applicationVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
if (applicationVersion.CompareTo(newVersion) < 0)
{
string str = String.Format("New version found!\nYour version: {0}.\nNewest version: {1}. \nAdded in this version: {2}. ", applicationVersion, newVersion, aboutUpdate);
if (DialogResult.No != MessageBox.Show(str + "\nDo You Want To Download This ?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
try
{
WebClient webClient = new WebClient();
webClient.DownloadFile("", "");
}
catch
{
}
return;
}
else
{
;
}
}
else
{
MessageBox.Show("Looks Like You Have The Most Current Update " + applicationVersion + "!", "Update", MessageBoxButtons.OK, MessageBoxIcon.None);
}
}
如果有人可以提供帮助,我会搜索并尝试一切,谢谢。
答案 0 :(得分:0)
我的建议:不要重新发明轮子。 MS为自动更新应用程序提供内置功能/项目类型。这称为 ClickOnce 。这是一个帮助您入门的链接:ClickOnce Deployment
如果您使用的是最新版本的VS和.NET,您还可以选择其他选项,例如基于Web或云(Azure)的部署。
这是一个更全面的部署页面:Deploying Applications, Services, and Components