110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 根据解压文件路径解压文件到临时文件夹(update_temp)中
/// </summary>
/// <param name="str_rarFile_path">下载的更新临时文件绝对路径</param>
/// <param name="str_temp_path">解压后的临时文件夹路径</param>
/// <returns></returns>
private bool UnrarFile(string str_rarFile_path,out string str_temp_path)
{
str_temp_path = "";
try
{
//创建临时文件夹(update_temp)
rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 正在创建临时文件夹......\n");
rct_sm.Focus();
str_temp_path = Application.StartupPath + "\\update_temp";
//判断临时文件夹是否存在,存在就删除掉
if(Directory.Exists(str_temp_path))
{
DeleteDir_temp(str_temp_path);
}
//创建临时文件夹
Directory.CreateDirectory(str_temp_path);
rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 创建临时文件夹完成!\n");
rct_sm.Focus();
rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 准备解压文件......\n");
rct_sm.Focus();
prgb_jd.Maximum = 1000;
prgb_jd.Value = 0;
AttachHandlers(unrar);
unrar.DestinationPath = str_temp_path;
unrar.Open(str_rarFile_path,Unrar.OpenMode.Extract);
while(unrar.ReadHeader())
{
prgb_jd.Value=0;
unrar.Extract();//解压文件
}
rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 解压文件完成\n");
rct_sm.Focus();
return true;
}
catch(Exception ex_err)
{
MessageBox.Show(ex_err.Message.ToString(),"错误");
rct_sm.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ==> 解压文件出错,错误:" + ex_err.Message.ToString() + "\n");
rct_sm.Focus();
return false;
}
finally
{
if(this.unrar != null)
{
unrar.Close();
}
}
}