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); } }