public ItemProgressChangedEventArgs(int percent, UpdateFile updateFile)
     : base(percent, updateFile)
 {
     UpdateFile = updateFile;
 }
 private void OnItemDownloadProgressChanged(int percent, UpdateFile updateFile)
 {
     if (ItemDownloadProgressChanged != null)
     {
         this.ItemDownloadProgressChanged(this, new ItemProgressChangedEventArgs(percent, updateFile));
     }
 }
        /// <summary>
        /// 检查更新文件
        /// </summary>
        /// <param name="serverXmlFile"></param>
        /// <param name="localXmlFile"></param>
        /// <param name="updateFileList"></param>
        /// <returns></returns>
        internal int CheckForUpdate(out Hashtable updateFileList)
        {
            updateFileList = new Hashtable();
            string localXmlFile = Application.StartupPath + "\\" + UpdateConfigName;
            //加载本地升级配置文件
            XmlFiles updaterXmlFiles;
            try { updaterXmlFiles = new XmlFiles(localXmlFile); }
            catch { throw new Exception("配置文件出错"); }
            //与服务器连接,下载更新配置文件
            string downLoadPath = string.Empty;
            try
            {
                downLoadPath = tempUpdatePath;
                this.DownAutoUpdateFile(tempUpdatePath);
            }
            catch { throw new Exception("与服务器连接失败"); }
            string serverXmlFile = Path.Combine(downLoadPath, UpdateConfigName);
            XmlFiles serverXmlFiles = new XmlFiles(serverXmlFile);
            XmlFiles localXmlFiles = new XmlFiles(localXmlFile);
            XmlNodeList newNodeList = serverXmlFiles.GetNodeList("AutoUpdater/Files");
            XmlNodeList oldNodeList = localXmlFiles.GetNodeList("AutoUpdater/Files");
            int k = 0;
            for (int i = 0; i < newNodeList.Count; i++)
            {
                UpdateFile upateFile = new UpdateFile();
                string newFileName = newNodeList.Item(i).Attributes["FileName"].Value.Trim();
                string newVer = newNodeList.Item(i).Attributes["Version"].Value.Trim();
                string newSavePath = newNodeList.Item(i).Attributes["SavePath"].Value.Trim();
                string newUpdatePath = newNodeList.Item(i).Attributes["UpdatePath"].Value.Trim();
                long newFileSize = Convert.ToInt64(newNodeList.Item(i).Attributes["FileSize"].Value.Trim());
                ArrayList oldFileAl = new ArrayList();
                for (int j = 0; j < oldNodeList.Count; j++)
                {
                    string oldFileName = oldNodeList.Item(j).Attributes["FileName"].Value.Trim();
                    string oldVer = oldNodeList.Item(j).Attributes["Version"].Value.Trim();
                    oldFileAl.Add(oldFileName);
                    oldFileAl.Add(oldVer);
                }
                int pos = oldFileAl.IndexOf(newFileName);
                if (pos == -1)
                {
                    upateFile.FileName = newFileName;
                    upateFile.Version = newVer;
                    //upateFile.SavePath = newSavePath;
                    //upateFile.UpdatePath = newUpdatePath;
                    upateFile.FileSize = newFileSize;
                    updateFileList.Add(k, upateFile);
                    k++;
                }
                else if (pos > -1 && newVer.CompareTo(oldFileAl[pos + 1].ToString()) > 0)
                {
                    upateFile.FileName = newFileName;
                    upateFile.Version = newVer;
                    //upateFile.SavePath = newSavePath;
                    //upateFile.UpdatePath = newUpdatePath;
                    upateFile.FileSize = newFileSize;
                    updateFileList.Add(k, upateFile);
                    k++;
                }

            }
            return k;
        }