using System;
using System.Xml;
using System.Collections.Generic;
using System.Windows.Forms;

namespace AutoUpdate
{
    static class Program
    {
        private static string ExeFile = "AutoUpdate1.exe";  //更新主程序
        private static string ClientFile = "ClientUpdate.XML";  //客户端更新配置文件
        private static string ServerFile = @"Http://192.168.1.101/AutoUpdate/ServerUpdate.XML";  //服务器端更新配置文件

        /// <summary>
        /// 應用程式的主要進入點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if (NeedUpdate())
            {
                try
                {
                    System.Diagnostics.Process.Start(ExeFile);  //执行更新主程序
                }
                catch
                {
                    MessageBox.Show("启动自动更新程序失败, 请联系...");
                }
                Application.ExitThread();
            }
            else
                Application.Run(new Form1());
        }

        static bool NeedUpdate()
        {
            string ClientVer = "";
            string ServerVer = "";
            try
            {
                ClientVer = GetNodeText(ClientFile, "version");
                ServerVer = GetNodeText(ServerFile, "version");
            }
            catch
            {
                return false;
            }
            if (ServerVer.CompareTo(ClientVer) > 0)  //比较版本,可以加其它条件
                return (MessageBox.Show("检查到有新版本,是否需要更新?", "信息", MessageBoxButtons.YesNo) == DialogResult.Yes);
            else
                return false;
        }

        static string GetNodeText(string fileName,string nodeName)
        {
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.Load(fileName);
            XmlElement root = XmlDoc.DocumentElement;
            XmlNode UpdateNode = root.SelectSingleNode(nodeName);
            return UpdateNode.InnerText;
        }

        static string[] GetNodeText(string fileName, string[] nodeName)
        {
            string[] result=new string[nodeName.Length];
            XmlDocument XmlDoc = new XmlDocument();
            XmlDoc.Load(fileName);
            XmlElement root = XmlDoc.DocumentElement;
            XmlNode UpdateNode;
            for(int i=0;i<result.Length;i++)
            {
                UpdateNode= root.SelectSingleNode(nodeName[i]);
                result[i]=UpdateNode.InnerText;
            }
            return result;
        }
    }
}

posted on 2007-06-06 11:03  Hawk_Yuan  阅读(879)  评论(0编辑  收藏  举报