Beispiel #1
0
        //创建信息的具体操作函数
        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);
        }
Beispiel #2
0
        /// <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, "");
        }