版本自动更新程序及3种实现策略(二)下载器实现
http://www.vjsdn.com/bbs/bbsTopicDetails.aspx?pid=597
续上项目介绍及UML图解
版本自动更新程序及3种实现策略(一)
版本自动更新程序及3种实现策略程序下载(附源码)
下面是三种下载器代码实现
局域网复制文件下载器
WebClient组件下载器
Tcp/IP下载器
续上项目介绍及UML图解
版本自动更新程序及3种实现策略(一)
版本自动更新程序及3种实现策略程序下载(附源码)
下面是三种下载器代码实现
局域网复制文件下载器
/// <summary>
/// 局域网复制文件下载器。
/// </summary>
public class LAN_Downloader : IDownloader
{
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
// public int DownloadCount { get;}
public void Init() //初始化下载器
{
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public void DownloadServerXml()
{
//服务器上的文件清单
string serverXml = AppSettings.Instance.ServerSharedFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
File.Copy(serverXml, serverXml_Local);//把更新列表复制到本机
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
//file.FullPath=\a.xml ->当前目录
//file.FullPath=\Dir\a.xml -子目录下的文件
//下载单个文件
public FileInfo DownloadFile(FileInfo file)
{
try
{
string folder = AppSettings.Instance.ClientSaveFolder;
string shared = AppSettings.Instance.ServerSharedFolder;
string from = shared + file.FullPath.Replace(@".\", @"\");
string dest = folder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
File.Copy(from, dest); //把文件复制到本机
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
//返回复制的文件。
return new FileInfo(file.Name, from, file.ModifyTime);
}
catch
{
return null;
}
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}
/// 局域网复制文件下载器。
/// </summary>
public class LAN_Downloader : IDownloader
{
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
// public int DownloadCount { get;}
public void Init() //初始化下载器
{
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public void DownloadServerXml()
{
//服务器上的文件清单
string serverXml = AppSettings.Instance.ServerSharedFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
File.Copy(serverXml, serverXml_Local);//把更新列表复制到本机
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
//file.FullPath=\a.xml ->当前目录
//file.FullPath=\Dir\a.xml -子目录下的文件
//下载单个文件
public FileInfo DownloadFile(FileInfo file)
{
try
{
string folder = AppSettings.Instance.ClientSaveFolder;
string shared = AppSettings.Instance.ServerSharedFolder;
string from = shared + file.FullPath.Replace(@".\", @"\");
string dest = folder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
File.Copy(from, dest); //把文件复制到本机
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
//返回复制的文件。
return new FileInfo(file.Name, from, file.ModifyTime);
}
catch
{
return null;
}
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}
WebClient组件下载器
/// <summary>
/// 通过Web方式下载
/// </summary>
public class WebClient_Downloader : IDownloader
{
private WebClient _webClient;
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
public void Init() //初始化下载器
{
_webClient = new WebClient();
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public FileInfo DownloadFile(FileInfo file) //下载单个文件
{
try
{
string folder = AppSettings.Instance.ClientSaveFolder;
string url = AppSettings.Instance.ServerPublishUrl;
string from = url + file.FullPath.Replace(@".\", @"/");
string dest = folder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
//把文件复制到本机
byte[] bs = _webClient.DownloadData(from);
FileStream fs = File.Open(dest, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bs, 0, bs.Length);
fs.Flush();
fs.Close();
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
//返回复制的文件。
return new FileInfo(file.Name, from, file.ModifyTime);
}
catch
{
return null;
}
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
public void DownloadServerXml()
{
//服务器上的文件清单
string serverXml = AppSettings.Instance.ServerPublishUrl + "/" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
WebClient client = new WebClient();
client.DownloadFile(serverXml, serverXml_Local);
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}
/// 通过Web方式下载
/// </summary>
public class WebClient_Downloader : IDownloader
{
private WebClient _webClient;
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
public void Init() //初始化下载器
{
_webClient = new WebClient();
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public FileInfo DownloadFile(FileInfo file) //下载单个文件
{
try
{
string folder = AppSettings.Instance.ClientSaveFolder;
string url = AppSettings.Instance.ServerPublishUrl;
string from = url + file.FullPath.Replace(@".\", @"/");
string dest = folder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
//把文件复制到本机
byte[] bs = _webClient.DownloadData(from);
FileStream fs = File.Open(dest, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bs, 0, bs.Length);
fs.Flush();
fs.Close();
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
//返回复制的文件。
return new FileInfo(file.Name, from, file.ModifyTime);
}
catch
{
return null;
}
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
public void DownloadServerXml()
{
//服务器上的文件清单
string serverXml = AppSettings.Instance.ServerPublishUrl + "/" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
WebClient client = new WebClient();
client.DownloadFile(serverXml, serverXml_Local);
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}
Tcp/IP下载器
/// <summary>
/// Tcp/ip远程下载
/// </summary>
public class TcpIp_Downloader : IDownloader
{
private UpgraderClient _UpgraderClient;
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
public void Init() //初始化下载器
{
_UpgraderClient = new UpgraderClient(null);
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public FileInfo DownloadFile(FileInfo file) //下载单个文件
{
try
{
string from = AppSettings.Instance.ServerPublishFolder + file.FullPath.Replace(@".\", @"\");
string dest = AppSettings.Instance.ClientSaveFolder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
bool ret = _UpgraderClient.DownloadFile(from, dest); //把文件复制到本机
//返回复制的文件。
if (ret)
{
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
return new FileInfo(file.Name, from, file.ModifyTime);
}
else
{
if (_logList != null) _logList.Items.Add("下载文件:" + file.FullPath + "失败!");
return null;
}
}
catch
{
return null;
}
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
public void DownloadServerXml()
{
//服务器上的文件清单.
string serverXml = AppSettings.Instance.ServerPublishFolder + @"\" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + @"\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
bool ret = _UpgraderClient.DownloadFile(serverXml, serverXml_Local);//把更新列表复制到本机
if (false == ret) throw new Exception("不能下载文件列表!\n可能是xml文件不存在或没有启动tcp/ip服务!");
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}
/// Tcp/ip远程下载
/// </summary>
public class TcpIp_Downloader : IDownloader
{
private UpgraderClient _UpgraderClient;
private XmlLoader _serverXmlObj;
private XmlLoader _clientXmlObj;
private bool _inited = false;//已经初始下载器
public XmlLoader XmlServer { get { return _serverXmlObj; } }
public XmlLoader XmlLocal { get { return _clientXmlObj; } }
public void Init() //初始化下载器
{
_UpgraderClient = new UpgraderClient(null);
//服务器上的文件清单保存在本机的文件名
string serverXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ServerFilesXml;
//本地最后一次更新记录
string clientXml = AppSettings.Instance.ClientSaveFolder + "\\" + AppSettings.Instance.ClientFilesXml;
this.DownloadServerXml(); //下载服务器上文件清单,用于与本机的文件清单比较
if (!File.Exists(clientXml)) XmlLoader.CreateEmpty(clientXml);
_serverXmlObj = new XmlLoader(serverXml); //创建服务器xml解释器
_clientXmlObj = new XmlLoader(clientXml); //创建本地xml解释器
_inited = true;
}
public FileInfo DownloadFile(FileInfo file) //下载单个文件
{
try
{
string from = AppSettings.Instance.ServerPublishFolder + file.FullPath.Replace(@".\", @"\");
string dest = AppSettings.Instance.ClientSaveFolder + file.FullPath.Replace(@".\", @"\");
PrepareFile(dest);//如目录不存在-建立,如文件存在-删除.
bool ret = _UpgraderClient.DownloadFile(from, dest); //把文件复制到本机
//返回复制的文件。
if (ret)
{
if (_logList != null) _logList.Items.Add("已下载文件:" + file.FullPath);
return new FileInfo(file.Name, from, file.ModifyTime);
}
else
{
if (_logList != null) _logList.Items.Add("下载文件:" + file.FullPath + "失败!");
return null;
}
}
catch
{
return null;
}
}
//下载所有文件
public void Download()
{
if (false == _inited) return;//没有初始化下载器,不执行操作。
IList files = _serverXmlObj.GetFiles();
_progress.Maximum = files.Count + 1;
_progress.Minimum = 1;
_progress.Value = 1;
foreach (FileInfo file in files)
{
bool update = _clientXmlObj.CompareFile(file); //比较文件最后修改日期
if (update)
{
FileInfo local = this.DownloadFile(file);
if (local != null)
{
_clientXmlObj.AddOrUpdateHistory(file, local);
_DownloadsCount++;//下载成功文件计数器+1
}
else
{
_DownloadFaliedCount++;//下载失败文件计数器+1
}
}
_progress.Value += 1;
}
_clientXmlObj.SetLastUpdateInfo(_serverXmlObj.GetVersion(), DateTime.Now);
_clientXmlObj.Save();//保存xml文件
}
public void DownloadServerXml()
{
//服务器上的文件清单.
string serverXml = AppSettings.Instance.ServerPublishFolder + @"\" + AppSettings.Instance.ServerFilesXml;
//服务器上的文件清单保存在本机的文件名
string serverXml_Local = AppSettings.Instance.ClientSaveFolder + @"\" + AppSettings.Instance.ServerFilesXml;
if (File.Exists(serverXml_Local)) File.Delete(serverXml_Local);//删除临时文件
bool ret = _UpgraderClient.DownloadFile(serverXml, serverXml_Local);//把更新列表复制到本机
if (false == ret) throw new Exception("不能下载文件列表!\n可能是xml文件不存在或没有启动tcp/ip服务!");
}
private ToolStripProgressBar _progress = null;
public void SetProgressBar(ToolStripProgressBar progress)
{
_progress = progress;
}
private void PrepareFile(string file)
{
if (file.Trim() == "") return;
string dir = Path.GetDirectoryName(file);
if (!Directory.Exists(dir)) //目录不存在-建立目录
Directory.CreateDirectory(dir);
else //文件存在-删除文件.
if (File.Exists(file)) File.Delete(file);
}
private ListBox _logList = null;
public void SetTrace(ListBox logList)
{
_logList = logList;
}
private int _DownloadsCount = 0;
public int DownloadsCount { get { return _DownloadsCount; } } //下载成功的文件总数
private int _DownloadFaliedCount = 0;
public int DownloadFaliedCount { get { return _DownloadFaliedCount; } }//下载失败的文件总数
}