如何创建自动更新?

时间:2014-05-16 18:13:57

标签: c#

好的,我已经搜索过这个,但找不到具体的我在寻找什么。现在我需要的是如何让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);
    }
}

如果有人可以提供帮助,我会搜索并尝试一切,谢谢。

1 个答案:

答案 0 :(得分:0)

我的建议:不要重新发明轮子。 MS为自动更新应用程序提供内置功能/项目类型。这称为 ClickOnce 。这是一个帮助您入门的链接:ClickOnce Deployment

如果您使用的是最新版本的VS和.NET,您还可以选择其他选项,例如基于Web或云(Azure)的部署。

这是一个更全面的部署页面:Deploying Applications, Services, and Components