Beispiel #1
0
        /// <summary>
        /// 讲更新文件下载到本地临时文件夹(未使用)
        /// </summary>
        /// <param name="info"></param>
        private bool Update(VersionInfo info)
        {
            if (info.UpdateFileList.Count == 0)
            {
                return(false);
            }
            string path      = Path.GetTempPath();
            long   downSize  = 0;
            long   totalSize = info.TotalFileSize;

            tempFold = LocalFilesOperation.CreateNewVersionFold(path, info.UpdateTime);
            AutoUpdateEvent(this, new AutoUpdateEventArgs("开始更新文件", 0, 0, ProgressBarStateEnum.Continue));
            //更新压缩包单文件代码如下
            if (info.UpdateFileList.Count == 1 && info.UpdateFileList[0].FileName.EndsWith(".zip"))
            {
                VersionFileInfo c        = info.UpdateFileList[0];
                string          filename = Path.GetFileName(c.FileName);
                downSize += c.FileSize;
                //AutoUpdateEvent(this, new AutoUpdateEventArgs("下载文件" + filename+"...", totalSize, downSize, ProgressBarStateEnum.Continue));
                string tempFilename = Path.Combine(tempFold, filename);
                AutoUpdateEvent(this, new AutoUpdateEventArgs("解压缩中...", 0, 0, ProgressBarStateEnum.Marquee));
                if (!dataAccesser.SaveUpdateFile(tempFold, c))
                {
                    AutoUpdateEvent(this, new AutoUpdateEventArgs(string.Format("文件{0}更新失败", filename), 0, 0, ProgressBarStateEnum.UnEnable));
                    return(false);
                }
                AutoUpdateEvent(this, new AutoUpdateEventArgs("文件" + filename + "更新完成", 0, 0, ProgressBarStateEnum.UnEnable));
                return(true);
            }


            foreach (VersionFileInfo c in info.UpdateFileList)
            {
                if (IsCancel)
                {
                    return(false);
                }
                if (c.FileOperateType != OperateType.Del)
                {
                    string filename = Path.GetFileName(c.FileName);
                    downSize += c.FileSize;
                    AutoUpdateEvent(this, new AutoUpdateEventArgs("开始更新文件...", 0, 0, ProgressBarStateEnum.Continue));
                    // filename = Path.Combine(info.UpdateTime.ToString(PathAndFolder.TimeFoldFormat), filename);
                    //string Downfilename = Path.Combine(info.UpdateTime.ToString(LocalFilesOperation.TimeFoldFormat), filename);
                    //GetFile(tempFold, Downfilename, c.FileSize);
                    string tempFilename = Path.Combine(tempFold, filename);
                    if (!dataAccesser.SaveUpdateFile(tempFold, c))
                    {
                        AutoUpdateEvent(this, new AutoUpdateEventArgs(string.Format("文件{0}更新失败", filename), 0, 0, ProgressBarStateEnum.UnEnable));
                        return(false);
                    }
                    AutoUpdateEvent(this, new AutoUpdateEventArgs("文件" + filename + "更新完成", 0, 0, ProgressBarStateEnum.UnEnable));
                }
            }
            return(true);
        }
Beispiel #2
0
        private bool DownLoadZip(VersionInfo info)
        {
            AutoUpdateEvent(this, new AutoUpdateEventArgs("准备更新" + "...", (long)(info.TotalFileSize * 1.1), 1, ProgressBarStateEnum.Continue));

            tempFold = LocalFilesOperation.CreateNewVersionFold(Path.GetTempPath(), DateTime.Now);
            string tempFilename = Path.Combine(tempFold, "update.zip");

            HttpHelper.DonwloadSizeAction += DownloasSizeCallback;

            HttpHelper.Download(info.HttpGetInfo.updateUrl, tempFilename);
            //AutoUpdateEvent(this, new AutoUpdateEventArgs("解压缩中...", (long)(info.TotalFileSize * 1.25), (long)(info.TotalFileSize * 1.25), ProgressBarStateEnum.Continue));
            if (!ZipFileOperation.UnZipFile(tempFilename, tempFold))
            {
                AutoUpdateEvent(this, new AutoUpdateEventArgs(string.Format("文件下载异常,更新失败"), 0, 0, ProgressBarStateEnum.UnEnable));
                return(false);
            }
            AutoUpdateEvent(this, new AutoUpdateEventArgs("文件下载完成", 0, 0, ProgressBarStateEnum.UnEnable));
            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// 本地更新文件覆盖安装目录
        /// </summary>
        /// <param name="info"></param>
        private void Install(VersionInfo info)
        {
            AutoUpdateEvent(this, new AutoUpdateEventArgs("开始安装文件", (long)(info.TotalFileSize * 1.1), info.TotalFileSize, ProgressBarStateEnum.Continue));
            backupFold = LocalFilesOperation.CreateNewVersionFold(this.mainProcessInfo.UpdateApplicationStartupFolder, info.UpdateTime);
            long   totalSize  = info.TotalFileSize;
            long   downSize   = 0;
            double cupple     = info.TotalFileSize * 0.1 / info.UpdateFileList.Count;
            int    countIndex = 1;

            try
            {
                foreach (VersionFileInfo c in info.UpdateFileList)
                {
                    if (IsCancel)
                    {
                        return;
                    }
                    string filename = Path.GetFileName(c.FileName);
                    downSize += c.FileSize;
                    AutoUpdateEvent(this, new AutoUpdateEventArgs("正在安装文件" + filename + "...", (long)(info.TotalFileSize * 1.1), info.TotalFileSize + (long)cupple * countIndex, ProgressBarStateEnum.Continue));
                    System.Threading.Thread.Sleep(100);
                    countIndex++;
                    InstallFile(filename, c, tempFold);
                }
                AutoUpdateEvent(this, new AutoUpdateEventArgs("安装完成", 0, 0, ProgressBarStateEnum.UnEnable));
            }
            catch (Exception e)
            {
                Log.LogException(e);
                AutoUpdateEvent(this, new AutoUpdateEventArgs("安装失败!", 0, 0, ProgressBarStateEnum.UnEnable));
                RollBack();
            }
            LocalFilesOperation.DelFold(tempFold);
            if (backupFold != null)
            {
                LocalFilesOperation.DelFold(backupFold);
            }
        }