111,094
社区成员




/// <summary>
/// 检查是否有自动更新
/// </summary>
private void CheckUpgrade()
{
bool canUpgrade = false;
worker = new BackgroundWorker();
worker.DoWork +=worker_DoWork;
worker.RunWorkerCompleted+=worker_RunWorkerCompleted;
DateTime now = DateTime.Now;
TimeSpan ts = now.Subtract(UpgradeConfig.LastUpgradeTime);
if (ts.Days == UpgradeConfig.UpgradeInterval)
{
canUpgrade = true;
}
if (canUpgrade)
{
worker.RunWorkerAsync();
}
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show("检查软件版本更新异常!" + e.Error.Message); //报异常是这里
return;
}
if (hasNewVersion)
{
if (MessageBox.Show("检测到新版本,请更新!", "更新提示", MessageBoxButtons.OK) == DialogResult.OK)
{
string startupPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
Process.Start(System.IO.Path.Combine(startupPath, "T3FX.Upgrade.exe"));
worker.Dispose();
Application.Exit();
}
}
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
string url = "http://192.168.1.250/upgrade/rms/upgrade.xml";// UpgradeConfig.UpgradeServer + @"/upgrade.xml";
string localPath = Application.StartupPath + @"\upgrade.xml";
UpgradeFileConfig upgradeFiles = null;
HttpWebRequest webRequest = HttpWebRequest.Create(url) as HttpWebRequest;
webRequest.Method = "GET";
webRequest.Timeout = 1000 * 20;
webRequest.ContentType = "application/xml";
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webRequest.UserAgent = "Code Sample Web Client";
HttpWebResponse webResponse = webRequest.GetResponse() as HttpWebResponse;
using (Stream stream = webResponse.GetResponseStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(UpgradeFileConfig));
upgradeFiles = serializer.Deserialize(stream) as UpgradeFileConfig;
if (upgradeFiles != null)
{
if (!upgradeFiles.VersionNo.Equals(UpgradeConfig.VersionNo))
{
hasNewVersion = true;
}
}
webResponse.Close();
}
if (upgradeFiles != null)
{
XmlSerializer serializerTo = new XmlSerializer(typeof(UpgradeFileConfig));
using (Stream stream = new FileStream(localPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
serializerTo.Serialize(stream, upgradeFiles);
}
}
}
catch (Exception ex)
{
MessageBox.Show("下载更新配置文件异常!" + ex.Message);
}
}