AIMS/AIMSAutoUpdate/frmAutoUpdate.cs
2022-08-23 21:12:59 +08:00

148 lines
5.5 KiB
C#

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();
}
}
}