//创建信息的具体操作函数 void CreatePackage(object sender, FSLib.Threading.RunworkEventArgs e) { UpdateInfo info = new UpdateInfo() { AppName = this.txtAppName.Text, AppVersion = this.txtAppVersion.Text, Desc = this.txtDesc.Text, ExecuteArgumentAfter = this.txtAfterExecuteArgs.Text, ExecuteArgumentBefore = this.txtPreExecuteArgs.Text, PublishUrl = this.txtPublishUrl.Text, FileExecuteAfter = this.fileAfterExecute.SelectedFileName, FileExecuteBefore = this.filePreExecute.SelectedFileName, MD5 = "", Package = System.IO.Path.GetFileName(this.txtPackagePath.Text), ExecuteTimeout = txtTimeout.Text.ToInt32(), PackageSize = 0, RequiredMinVersion = "" }; this.options.SaveSetting(info); DME.Zip.Zip.FastZipEvents evt = new DME.Zip.Zip.FastZipEvents(); evt.ProcessFile += (s, f) => { e.ReportProgress(0, 0, "正在压缩文件 " + System.IO.Path.GetFileName(f.Name)); }; DME.Zip.Zip.FastZip zip = new DME.Zip.Zip.FastZip(evt); if (!info.PackagePassword.IsNullOrEmpty()) zip.Password = info.PackagePassword; zip.CreateZip(this.txtPackagePath.Text, this.txtNewSoftDir.Text, true, ""); //校验MD5 byte[] hash = null; var size = 0; using (var fs = new FSLib.IO.ExtendFileStream(SelectedPackagePath, System.IO.FileMode.Open)) { e.ReportProgress((int)fs.Length, 0, ""); fs.ProgressChanged += (s, f) => { e.ReportProgress((int)fs.Position); }; MD5 md5 = System.Security.Cryptography.MD5CryptoServiceProvider.Create(); hash = md5.ComputeHash(fs); size = (int)fs.Length; } info.MD5 = BitConverter.ToString(hash).Replace("-", "").ToUpper(); info.PackageSize = size; info.XmlSerilizeToFile(GetXmlPath(SelectedPackagePath)); e.ReportProgress(0, 0, "生成成功,MD5校验:" + info.MD5); }
/// <summary> /// 解开安装包 /// </summary> void ExtractPackage(RunworkEventArgs e) { e.ReportProgress(0, 0, DME.Updater.SR.Updater_ExtractPackage); DME.Zip.Zip.FastZipEvents evt = new DME.Zip.Zip.FastZipEvents(); evt.ProcessFile += (s, f) => { e.ReportProgress(0, 0, "正在解压缩 " + System.IO.Path.GetFileName(f.Name)); }; DME.Zip.Zip.FastZip fz = new DME.Zip.Zip.FastZip(evt); if (!string.IsNullOrEmpty(UpdateInfo.PackagePassword)) fz.Password = UpdateInfo.PackagePassword; fz.ExtractZip(UpdatePackageFilePath, UpdateSourceDirectory, ""); }