using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.Diagnostics; using System.IO; using System.Collections; using System.Threading.Tasks; namespace AIMSAutoUpdate { public partial class frmAutoUpdate : Form { private Thread threadStart; private int intProgressBar = 0; private XmlOperator xmlOpe = new XmlOperator(AppDomain.CurrentDomain.BaseDirectory + @"\UpdateList.xml"); private string updateUrl = string.Empty; private string tempUpdatePath = string.Empty; private string FtpAddress; private string User; private string PassWord; private string SysName; private string Versions; private string encoding; public frmAutoUpdate() { InitializeComponent(); System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; } private void frmAutoUpdate_Load(object sender, EventArgs e) { try { FtpAddress = xmlOpe.GetNode("FtpAddress")[0].ToString(); User = xmlOpe.GetNode("User")[0].ToString(); PassWord = xmlOpe.GetNode("PassWord")[0].ToString(); SysName = xmlOpe.GetNode("SysName")[0].ToString(); Versions = xmlOpe.GetNode("Version")[0].ToString(); encoding = xmlOpe.GetNode("Encoding")[0].ToString(); Text = "自动升级程序"; System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process myProcess in myProcesses) { if (myProcess.ProcessName == SysName) { myProcess.CloseMainWindow(); myProcess.Kill(); myProcess.WaitForExit(); myProcess.Close(); continue; } } timer2.Enabled = true; timer2.Start(); } catch (Exception) { MessageBox.Show("更新失败!"); } } public void WaitingOpen_Fun() { for (int i = 0; i < FTPTransmission.ListFileDirectory.Count; i++) { try { if (FTPTransmission.ListFileDirectory[i].filename.Contains("AIMSAutoUpdate")) continue; FTPTransmission.download(FTPTransmission.ListFileDirectory[i].localPath, FTPTransmission.ListFileDirectory[i].ftpPath, User, PassWord); intProgressBar = i + 1; } catch (Exception ex) { MessageBox.Show(ex.Message); continue; } } } int count = 0; private void timer1_Tick_1(object sender, EventArgs e) { progressBar1.Value = intProgressBar; label5.Text = intProgressBar.ToString(); if (intProgressBar >= FTPTransmission.ListFileDirectory.Count) { count++; } if (count == 10) { MessageBox.Show("更新完成,请重新启动!", "系统提示"); System.Environment.Exit(0); } } private void timer2_Tick(object sender, EventArgs e) { timer2.Interval = 1000000000; XmlFiles serverXmlFiles = new XmlFiles(AppDomain.CurrentDomain.BaseDirectory + @"\UpdateList.xml"); Hashtable htUpdateFile = new Hashtable(); int availableUpdate = new AppUpdater().CheckForUpdate(serverXmlFiles, out htUpdateFile); FTPTransmission.ListFileDirectory.Clear(); FTPTransmission.downftp(FtpAddress, AppDomain.CurrentDomain.BaseDirectory, User, PassWord, htUpdateFile, encoding); FTPTransmission.nowListFileDirectory.Clear(); FTPTransmission.downNow(AppDomain.CurrentDomain.BaseDirectory); if (FTPTransmission.ListFileDirectory.Count <= 0)// StartPrmAndExit(); System.Environment.Exit(0); for (int i = FTPTransmission.ListFileDirectory.Count - 1; i >= 0; i--) { try { for (int j = 0; j < FTPTransmission.nowListFileDirectory.Count; j++) { if (FTPTransmission.nowListFileDirectory[j].MD5Hash == FTPTransmission.ListFileDirectory[i].MD5Hash && FTPTransmission.nowListFileDirectory[j].filelength == FTPTransmission.ListFileDirectory[i].filelength) { FTPTransmission.ListFileDirectory.Remove(FTPTransmission.ListFileDirectory[i]); break; } } } catch (Exception) { continue; } } progressBar1.Value = 0; progressBar1.Minimum = 0; progressBar1.Maximum = FTPTransmission.ListFileDirectory.Count; label4.Text = FTPTransmission.ListFileDirectory.Count.ToString(); timer1.Start(); threadStart = new Thread(new ThreadStart(WaitingOpen_Fun)); threadStart.Start(); } } }