Example #1
0
        public ActionResult RestorePkg(int id, int pkgId)
        {
            if (!SysUpdateHelper.IsPkgInstalled(id, pkgId))
            {
                return(Error("未安装该更新包"));
            }

            if (!SysUpdateHelper.IsLatestInstalledPkg(id, pkgId))
            {
                return(Error("不能跳过最近安装的更新包,如想还原该更新包,请依次还原最近的更新包"));
            }

            string pkgName = null;

            try
            {
                if (!TryLockOp(id))
                {
                    return(Error("当前有其他操作未完成,等待完成后再继续"));
                }

                DateTime start = DateTime.Now;
                pkgName = SysUpdateHelper.GetPkgRawName(id, pkgId);

                SysUpdateHelper.RestorePkg(id, pkgId);

                var span = DateTime.Now - start;
                LogHelper.LogInfo($"更新包 system{id}/{pkgName} 还原成功。耗时: {span.Hours}小时{span.Minutes}分钟{span.Seconds}秒");

                SysUpdateHelper.TouchDetect(id);

                return(Success());
            }
            catch (Exception ex)
            {
                LogHelper.LogError($"更新包 system{id}/{pkgName} 还原失败", ex);

                return(Error(ex.Message));
            }
            finally
            {
                UnLockOp(id);
            }
        }