public ActionResult Publishs(VersionTrack ver, string IsLoadFile)
        {
            var vmobject = new JsonReturnMessages();
            try
            {
                //1���XML
                InsertXml(ver.FilePath);
                Beyondbit.AutoUpdate.IPublisher pub = new Beyondbit.SmartBox.Publisher.SmartBoxPublisher();
                if (!string.IsNullOrEmpty(IsLoadFile))//��Ϊ�����ϴ��ļ�����
                {
                    //��ȥver.FilePath���������ļ�
                    pub.UpdateFile(ver.FilePath + @"\" + Common.Entities.Constants.globalName, Constants.MianName, "./");
                    pub.UpdateFile(ver.FilePath + @"\" + Common.Entities.Constants.systemName, Constants.MianName, "./");
                }
                else
                {
                    //2������
                    SearchVersionTrack search = new SearchVersionTrack();
                    search.VID = ver.PreVersionId.ToString();//��ȡ��һ���汾��
                    IList<VersionTrack> list = BoFactory.GetVersionTrackBo.GetVersionTrack(search);
                    if (list.Count > 0)//������ڴ˼�¼˵���ǵ�һ�η���
                        pub.UpdateApplication(ver.FilePath, Common.Entities.Constants.MianName);
                    else
                        pub.CreateApplication(ver.FilePath, Common.Entities.Constants.MianName);

                    //3������
                    ver.LastModTime = DateTime.Now;
                    ver.LastModUid = base.CurrentUser.UserUId;
                    ver.VersionStatus = 1;
                    BoFactory.GetVersionTrackBo.UpdatePlushVersionTrack(ver);
                }
                vmobject.IsSuccess = true;
                vmobject.Msg = "�����ɹ�!";
            }
            catch (Exception ex)
            {
                vmobject.IsSuccess = false;
                vmobject.Msg = ex.Message;
            }
            return Json(vmobject);
        }
        public ActionResult SaveVerInfo(VersionTrack ver, FormCollection form)
        {
            var vmobject = new JsonReturnMessages();
            string vid = "";
            if (Request.Files.Count > 0)//�����ļ��ϴ�
            {
                XmlConfigInfo xmlInfo = Decompressing(); //1.��ѹ����ȡ��Ϣ
                try
                {
                    //vid = BoFactory.GetVersionTrackBo.SaveZipInfo(ver, xmlInfo, base.CurrentUser.UserUId);
                    MoveFolder(xmlInfo);//���ƶ��ļ���
                }
                catch (Exception ex)
                {
                    string thisFilePath = AppConfig.filePath + Common.Entities.Constants.TempName;
                    while (Directory.Exists(thisFilePath))//��ɾ��ԭ����ʱ�ļ���
                    {
                        Directory.Delete(thisFilePath, true);
                    }
                    FileInfo f = new FileInfo(xmlInfo.savefile);//ɾ��ԭ�������zip
                    f.Delete();
                    vmobject.IsSuccess = false;
                    vmobject.Msg = ex.Message;
                    return Json(vmobject, "text/html");
                }
            }

            else
                vid = ver.VersionId.ToString();

            vmobject.IsSuccess = true;
            vmobject.Msg = vid;

            return Json(vmobject, "text/html");
        }
        //�汾ID
        public ActionResult UploadVersionFile(string id,string IsAdd)
        {
            VersionTrack VerInfo = null;
            ViewData["IsAdd"] = "";
            ViewData["versionId"] = "";//��ʼ��
            if (string.IsNullOrEmpty(id))
                VerInfo = new VersionTrack();
            else
                ViewData["versionId"] = id;//�汾ID

            if (!string.IsNullOrEmpty(IsAdd))
                ViewData["IsAdd"] = IsAdd;

            return View(VerInfo);
        }
        /// <summary>
        /// �XML
        /// </summary>
        /// <param name="path"></param>
        private void InsertXml(VersionTrack ver)
        {
            XmlConfigInfo xml = new XmlConfigInfo();
            //xml.VersionName = ver.VersionName;
            //xml.PluginInfo = BoFactory.GetVersionTrackBo.GetPluginInfo(ver.PluginCode.ToString());//��ȡ�����Ϣ

            SearchConfig serach = new SearchConfig();
            serach.PluginCode = ver.PluginCode.ToString();
            //xml.configList = BoFactory.GetVersionTrackBo.GetConfigList(serach);//��ȡ������Ϣ

            CommonMethods.WritePluginfoConfigXml(xml, ver.FilePath.Trim() + @"\" + Constants.pluginName);
        }
        public ActionResult SaveVersions(string IsAdd, string IsUpdate, string Vid, VersionTrack version, FormCollection form)
        {
            var vmobject = new JsonReturnMessages();
            string vid = "";
            try
            {
                vid = BoFactory.GetVersionTrackBo.SaveUpdaterVerInfo(version, IsAdd, IsUpdate, base.CurrentUser.UserUId, Vid);
            }
            catch (Exception ex)
            {
                vmobject.IsSuccess = false;
                vmobject.Msg = ex.Message;
                return Json(vmobject, "text/html");
            }

            vmobject.Msg = vid;
            vmobject.IsSuccess = true;
            return Json(vmobject, "text/html");
        }
        public int InsertUpdateVersionTrack(VersionTrack ver)
        {
            try
            {
                if (string.IsNullOrEmpty(ver.VersionName))
                    throw new BOException("版本号不能为空!");
                SearchVersionTrack search = new SearchVersionTrack();
                search.PluginCode = ver.PluginCode.ToString();
                search.VersionStatus = "1";
                IList<VersionTrack> preid = versionTrackDao.GetVersionTrackList(search);//获取正在使用的版本
                if (preid != null)
                {
                    if (preid.Count > 0)
                        ver.PreVersionId = preid[0].VersionId;
                    else
                        ver.PreVersionId = 0;
                }

                ver.LastModTime = DateTime.Now;
                ver.CreateTime = DateTime.Now;

                //#region 2.0.1.0
                ////重复就更新版本(上传之后,不做版本号修改,因为发布时候会根据临时表中的插件code和版本号去查,再更新,改版本后会找不到次版本信息)
                //IList<VersionTrack> ck = versionTrackDao.CheckVersionName(ver.PluginCode, ver.VersionName);
                //if (ck != null)
                //{
                //    if (ck.Count > 0)
                //    {
                //        ck[0].PluginCode = ver.PluginCode;
                //        ck[0].FilePath = ver.FilePath;
                //        ck[0].VersionName = ver.VersionName;
                //        ck[0].LastModUid = ver.LastModUid;
                //        ck[0].LastModTime = ver.LastModTime;
                //        ck[0].VersionStatus = ver.VersionStatus;
                //        ck[0].VersionSummary = ver.VersionSummary;
                //        versionTrackDao.Update(ck[0]);
                //        return ck[0].VersionId;
                //    }
                //}
                //#endregion

                return versionTrackDao.Insert(ver);
            }
            catch (DalException ex)
            {
                throw new BOException("新增主程序版本信息出错", ex);
            }
        }
 public virtual void UpdatePlushVersionTrack(VersionTrack ver)
 {
     try
     {
         VersionTrack oldver = versionTrackDao.Get(ver.PreVersionId);//获取上个版本即正在使用的版本
         if (oldver != null)
         {
             oldver.VersionStatus = 2;
             versionTrackDao.Update(oldver);
         }
         versionTrackDao.Update(ver);
     }
     catch (DalException ex)
     {
         throw new BOException("修改主程序版本信息出错", ex);
     }
 }
        public ActionResult SaveVerInfo(VersionTrack ver, string IsAdd, string IsUpdate, FormCollection form, string PluginCateCode)
        {
            var vmobject = new JsonReturnMessages();
            string vid = "";
            XmlConfigInfo xmlInfo = null;

            try
            {
                if (Request.Files.Count > 0)//�����ϴ��ļ�
                    xmlInfo = Decompressing(form["VersionIds"].ToString(), IsAdd);//��ѹ
                else
                {
                    IList<PluginInfoTemp> listp = new List<PluginInfoTemp>();
                    PluginInfoTemp p = new PluginInfoTemp();
                    p.Version = form["VersionName"];
                    p.PluginUrl = form["PluginUrl"];
                    p.PluginCode = form["PluginCode"];
                    listp.Add(p);
                    xmlInfo = new XmlConfigInfo();
                    xmlInfo.PluginInfo = listp;
                }
                if (PluginCateCode.Equals("1"))//��Ϊweb���
                {
                    xmlInfo.PluginInfo[0].PluginCateCode = Constants.PluginCateCode;
                    xmlInfo.oldCode = xmlInfo.PluginInfo[0].PluginCode;
                }
                foreach (PluginInfoTemp ps in xmlInfo.PluginInfo)
                {
                    ps.IsPublic = true;
                    ps.IsIgnoreConfig = Convert.ToBoolean(form["ck"]);
                }

                vid = BoFactory.GetVersionTrackBo.SavePluingZipInfo(ver, xmlInfo, IsAdd, IsUpdate, base.CurrentUser.UserUId, form["VersionIds"].ToString());

                if (Request.Files.Count > 0)//�����ϴ��ļ�
                    MoveFolder(xmlInfo);//�ƶ��ļ��м��ļ�
            }
            catch (Exception ex)
            {
                try
                {
                    string thisFilePath = AppConfig.filePath + Common.Entities.Constants.TempName;
                    while (Directory.Exists(thisFilePath))//��ɾ��ԭ����ʱ�ļ���
                    {
                        Directory.Delete(thisFilePath, true);
                    }
                    if (!string.IsNullOrEmpty(xmlInfo.savefile))
                    {
                        FileInfo f = new FileInfo(xmlInfo.savefile);//ɾ��ԭ�������zip
                        if (f.Exists)
                            f.Delete();
                    }
                }
                catch (Exception fe)
                {
                    vmobject.IsSuccess = false;
                    vmobject.Msg = fe.Message;
                }

                vmobject.IsSuccess = false;
                vmobject.Msg = vmobject.Msg + "," + ex.Message;
                return Json(vmobject, "text/html");
            }
            //��ȡ��һ���汾����
            SearchVersionTrack sea = new SearchVersionTrack();
            sea.VID = vid;
            VersionTrack vt = BoFactory.GetVersionTrackBo.GetVersionTrack(sea)[0];
            if (vt != null)
            {
                if (vt.PreVersionId != 0)
                    vid = vt.PreVersionId.ToString();
            }

            vmobject.Msg = vid;
            vmobject.IsSuccess = true;
            return Json(vmobject, "text/html");
        }
 public virtual string SaveUpdaterVerInfo(VersionTrack version, string IsAdd, string IsUpdate, string uid, string Vid)
 {
     try
     {
         string vids = "";
         SearchVersionTrack search = new SearchVersionTrack();
         if (!string.IsNullOrEmpty(IsUpdate))//若为修改
         {
             search.VID = Vid;
             //1.修改版本表信息
             VersionTrack v = versionTrackDao.GetVersionTrackList(search)[0];
             v.VersionSummary = version.VersionSummary;
             versionTrackDao.Update(v);
             vids = v.VersionId.ToString();
         }
         else
         {
             //这里开始新增或者升级
             //4.新增版本表
             version.PluginCode = Constants.UpdaterCode;
             version.FilePath = AppConfig.filePath + Path.Combine(version.PluginCode, version.PluginCode + "_FG$SP_" + version.VersionName);
             version.CreateUid = uid;
             version.LastModUid = uid;
             if (IsAdd.Equals("1"))
                 version.VersionStatus = 4;
             else
                 version.VersionStatus = 5;
             vids = InsertVersionTrack(version).ToString();
         }
         return vids;
     }
     catch (DalException ex)
     {
         throw new BOException("插入主程序版本出错", ex);
     }
 }
        //  [Frame(true, true)]
        public virtual string SaveUpdaterZipInfo(VersionTrack version, XmlMainConfigInfo xmlInfo, string IsAdd, string IsUpdate, string uid, string vids)
        {
            string oldfp = "";
            string oldname = "";
            SearchVersionTrack search = new SearchVersionTrack();
            try
            {
                search.VID = vids;
                VersionTrack v = versionTrackDao.GetVersionTrackList(search)[0];
                //删除
                if (!string.IsNullOrEmpty(IsUpdate))//若为修改
                {
                    if (IsUpdate.Equals("1"))//若已有上传文件
                    {
                        string[] codes = v.FilePath.Split(new string[] { "\\" }, StringSplitOptions.None);
                        oldfp = v.FilePath;
                        oldname = codes[codes.Length - 1];//版本名
                        SearchConfig searchc = new SearchConfig();
                        searchc.PluginCode = Constants.UpdaterCode;
                        configTempDao.DeleteInfo(searchc);
                    }
                }
                //更新版本状态
                if (IsAdd.Equals("1"))
                    v.VersionStatus = 3;
                else
                    v.VersionStatus = 0;
                versionTrackDao.Update(v);
                //转换
                IList<ConfigTemp> listts = new List<ConfigTemp>();
                foreach (ConfigInfoPC c in xmlInfo.configList)
                {
                    listts.Add(CommonMethods.ConvertToConfigInfoPC(c));
                }
                InserConfigInfo(listts, Constants.UpdaterCode);//新赠插件配置临时表

                if (Directory.Exists(oldfp)) //5.需要删除原由文件夹
                    Directory.Delete(oldfp, true);
                //需要删除存在的位置的原由文件
                FileInfo f = new FileInfo(Path.Combine(AppConfig.SaveZipPath, oldname + ".zip"));
                if (f.Exists)
                    f.Delete();

                return vids;
            }
            catch (DalException ex)
            {
                throw new BOException("上传插件zip文件出错", ex);
            }
        }
        public virtual string SavePluingZipInfo(VersionTrack version, XmlConfigInfo xmlInfo, string IsAdd, string IsUpdate, string uid, string vids)
        {
            string oldfp = "";
            string oldname = "";
            string PluginCode = "";
            IList<PluginInfoTemp> plist = xmlInfo.PluginInfo;
            SearchVersionTrack search = new SearchVersionTrack();
            ArrayList arrVid = new ArrayList();
            string arrCode = "";

            try
            {
                //升级(修改)的时候
                //获得关联的vid和code(根据相同的filepath获得相关的VID)
                search.VID = vids.Split(',')[0];
                if (!string.IsNullOrEmpty(vids))
                {
                    VersionTrack vs = versionTrackDao.GetVersionTrackList(search)[0];

                    if (IsAdd.Equals("0"))
                    {
                        int ass = 0;
                        for (int i = 0; i < plist.Count; i++)
                        {
                            if (vs.PluginCode.Equals(plist[i].PluginCode))
                            {
                                ass = 1;
                                break;
                            }
                        }
                        if (ass == 0)
                        {
                            throw new BOException("上传插件code不匹配");
                        }
                    }

                    string filepath = vs.FilePath;
                    SearchVersionTrack setemp = new SearchVersionTrack();
                    setemp.filepath = filepath;
                    IList<VersionTrack> vlisttemp = versionTrackDao.GetVersionTrackList(setemp);//获得当前关联所有插件版本
                    foreach (VersionTrack vtemp in vlisttemp)
                    {
                        SearchVersionTrack searcht = new SearchVersionTrack();
                        searcht.PreVersionId = vtemp.VersionId.ToString();//查找下一个最新版本是否存在
                        IList<VersionTrack> templist = versionTrackDao.GetVersionTrackList(searcht);
                        if (templist.Count > 0)
                        {
                            filepath = templist[0].FilePath;
                            break;
                        }
                    }

                    SearchVersionTrack se = new SearchVersionTrack();
                    se.filepath = filepath;
                    IList<VersionTrack> vlist = versionTrackDao.GetVersionTrackList(se);//获取最新当前所有关联版本信息
                    foreach (VersionTrack v1 in vlist)
                    {
                        arrVid.Add(v1.VersionId);//获取要删除的版本ID(最新版本)

                    }

                    se.filepath = vs.FilePath;
                    IList<VersionTrack> vlistc = versionTrackDao.GetVersionTrackList(se);
                    foreach (VersionTrack v1 in vlistc)
                    {
                        arrCode += v1.PluginCode + "_FG$SP_";//获取插件CODE(原由版本)

                    }
                    arrCode = arrCode.Substring(0, arrCode.Length - 7);
                }
                //删除
                if (!string.IsNullOrEmpty(IsUpdate))//若为修改
                {
                    for (int i = 0; i < arrVid.Count; i++)
                    {
                        search.VID = arrVid[i].ToString();
                        VersionTrack v = versionTrackDao.GetVersionTrackList(search)[0];//2.获取表一记录
                        PluginCode = v.PluginCode;
                        if (i == 0)//第一个插件CODE
                        {
                            string[] codes = v.FilePath.Split(new string[] { "\\" }, StringSplitOptions.None);
                            oldfp = v.FilePath;
                            oldname = codes[codes.Length - 1];//版本名
                        }
                        //1.先删除插件临时表
                        SearchConfig searchc = new SearchConfig();
                        searchc.PluginCode = PluginCode.ToString();
                        configTempDao.DeleteInfo(searchc);

                        plugintempDao.DeleteInfo(searchc);//删除配置信息临时表
                        //2.删除版本表信息
                        versionTrackDao.DeleteInfo(search);
                        //3.若是新增(修改)
                        if (IsAdd.Equals("1"))
                        {
                            pluginDao.DeleteInfo(searchc);//.删除插件表
                        }
                    }
                }
                //这里开始新增或者升级或者修改的共同部分处理
                for (int i = 0; i < plist.Count; i++)
                {
                    PluginInfo p = TPluginInfo(plist[i]);//转换
                    if (IsAdd.Equals("1"))//若新增
                    {
                        p.IsUse = false;//设置为未发布
                        plist[i].IsUse = false;
                        PluginCode = InsertPluginInfo(p, uid);//.新增插件表
                    }
                    else//若升级
                    {
                        p.IsUse = false;
                        plist[i].IsUse = false;
                        PluginCode = p.PluginCode;
                    }
                    //4.新增版本表
                    version.PluginCode = PluginCode;
                    version.FilePath = Path.Combine(AppConfig.filePath + xmlInfo.oldCode, xmlInfo.PluginInfo[0].PluginCode + "_FG$SP_" + xmlInfo.PluginInfo[0].Version);//以第一个插件CODE+版本号记录,3个版本存放位置相同
                    version.VersionName = plist[i].Version;
                    version.CreateUid = uid;
                    version.LastModUid = uid;
                    version.VersionStatus = 3;
                    version.VersionSummary = plist[i].VersionSummary;
                    if (IsAdd.Equals("0"))
                        version.VersionStatus = 0;
                    if (i == 0)
                        vids = InsertVersionTrack(version).ToString();//记录第一个vid
                    else
                        InsertVersionTrack(version).ToString();//升级可以重复覆盖原由版本,新赠插件的时候,不可能出现重复版本
                    //5.新赠插件临时表
                    PluginInfoTemp pt = plist[i];
                    pt.PluginCode = PluginCode;
                    //记录原先的上一版本的所有插件CODE,用于更新发布状态
                    if (IsAdd.Equals("0"))//若升级
                    {
                        pt.PreVersionPCs = arrCode;
                    }
                    else
                    {
                        foreach (PluginInfoTemp pi in plist)
                        {
                            pt.PreVersionPCs += pi.PluginCode + "_FG$SP_";
                        }
                        pt.PreVersionPCs = pt.PreVersionPCs.Substring(0, pt.PreVersionPCs.Length - 7);
                    }

                    plugintempDao.Insert(pt);

                    //若不是web插件
                    if (!plist[i].PluginCateCode.Equals(Constants.PluginCateCode))
                    {
                        if (plist[i].IsIgnoreConfig == false)//非忽略配置信息
                        {
                            //转换
                            IList<ConfigTemp> listts = new List<ConfigTemp>();
                            foreach (ConfigInfo c in plist[i].configList)
                            {
                                listts.Add(CommonMethods.ConvertToConfigInfo(c));
                            }
                            InserConfigInfo(listts, PluginCode.ToString(), Constants.configCategory);//新赠插件配置临时表
                        }
                    }
                }

                if (Directory.Exists(oldfp)) //5.需要删除原由文件夹
                    Directory.Delete(oldfp, true);
                //需要删除存在的位置的原由文件
                FileInfo f = new FileInfo(Path.Combine(AppConfig.SaveZipPath, oldname + ".zip"));
                if (f.Exists)
                    f.Delete();

                if (plist[0].PluginCateCode.Equals(Constants.PluginCateCode))//若是web插件
                {
                    while (!Directory.Exists(version.FilePath))//单独创建文件夹
                    {
                        Directory.CreateDirectory(version.FilePath);
                    }
                }

                return vids;
            }
            catch (DalException ex)
            {
                throw new BOException("上传插件zip文件出错", ex);
            }
        }
        public virtual int InsertWebPluginInfo(PluginInfo pInfo, ActionExtend action, VersionTrack version, string uid)
        {
            try
            {
                //int pid = InsertPluginInfo(pInfo, uid);
                //action.PluginCode = pid.ToString();
                //version.PluginCode = pid;
                if (!string.IsNullOrEmpty(action.ActionCode))//若有填写扩展信息code的话
                    InsertActionExtend(action);

                return InsertVersionTrack(version);
            }
            catch (DalException ex)
            {
                throw new BOException("新增web插件相关所有信息出错", ex);
            }
        }
        public int InsertVersionTrack(VersionTrack ver)
        {
            try
            {
                if (string.IsNullOrEmpty(ver.VersionName))
                    throw new BOException("版本号不能为空!");
                IList<VersionTrack> ck = versionTrackDao.CheckVersionName(ver.PluginCode, ver.VersionName);
                if (ck != null)
                {
                    if (ck.Count > 0)
                        throw new BOException("该主程序或者插件的版本号已经存在!");
                }
                SearchVersionTrack search = new SearchVersionTrack();
                search.PluginCode = ver.PluginCode.ToString();
                search.VersionStatus = "1";
                IList<VersionTrack> preid = versionTrackDao.GetVersionTrackList(search);//获取正在使用的版本
                if (preid != null)
                {
                    if (preid.Count > 0)
                        ver.PreVersionId = preid[0].VersionId;
                    else
                        ver.PreVersionId = 0;
                }
                ver.CreateTime = DateTime.Now;
                ver.LastModTime = DateTime.Now;

                return versionTrackDao.Insert(ver);
            }
            catch (DalException ex)
            {
                throw new BOException("新增主程序版本信息出错", ex);
            }
        }
 //�汾ID
 public ActionResult UploadVersionFile(string id)
 {
     VersionTrack VerInfo = null;
     if (string.IsNullOrEmpty(id))
     {
         VerInfo = new VersionTrack();
         ViewData["versionId"] = "";//��ʼ��
     }
     else
         ViewData["versionId"] = id;//�汾ID
     return View(VerInfo);
 }
 public virtual void UpdateVersionTrack(VersionTrack ver)
 {
     try
     {
         IList<VersionTrack> ck = versionTrackDao.CheckVersionName(ver.PluginCode, ver.VersionName);
         if (ck != null)
         {
             if (ck.Count > 0 && ck[0].VersionStatus != 0)//有记录,。但是不是未发布的版本,是已有的版本
                 throw new BOException("该主程序或者插件的版本号已经存在!");
         }
         versionTrackDao.Update(ver);
     }
     catch (DalException ex)
     {
         throw new BOException("修改主程序版本信息出错", ex);
     }
 }
        //�޸�ȫ������
        public ActionResult UpdateGlobalConfigInfo(string id)
        {
            ViewData["vid"] = id;
            IList<PluginInfo> plist = new List<PluginInfo>();
            ViewData["configList"] = 0;

            SearchVersionTrack searchv = new SearchVersionTrack();
            searchv.VID = id;
            //VersionTrack v = BoFactory.GetVersionTrackBo.GetVersionTrack(searchv)[0];
            VersionTrack v = new VersionTrack();
            SearchConfig search = new SearchConfig();
            search.PluginCode = Constants.MianName;
            search.ConfigCategoryCode = Constants.GlobalConfig;
            IList<ConfigInfo> listconfigs = BoFactory.GetVersionTrackBo.GetConfigList(search);
            //��ʼ��
            ConfigInfo c2 = new ConfigInfo();
            c2.Key1 = "";
            c2.ConfigCategoryCode = Constants.GlobalConfig;
            listconfigs.Add(c2);

            v.configList = listconfigs;

            IEnumerable<IGrouping<string, ConfigInfo>> listccc = v.configList.GroupBy(T => T.ConfigCategoryCode).ToList();
            ViewData["keys"] = listccc.First().Key;
            ViewData["lists"] = listccc;
            ViewData["configList"] = v.configList.Count;

            return View(v);
        }
        public virtual string UpdateWebPluginInfo(PluginInfo pInfo, ActionExtend action, VersionTrack version, string isAdd, string uid)
        {
            try
            {
                string verfilepath = "";
                string oldfilepath = "";
                if (isAdd.Equals("0"))//若为修改
                {
                    SearchVersionTrack search = new SearchVersionTrack();
                    search.VID = version.VersionId.ToString();
                    VersionTrack ver = GetVersionTrack(search)[0];
                    oldfilepath = ver.FilePath;
                    ver.VersionName = version.VersionName;//修改的版本号
                    ver.FilePath = Path.Combine(AppConfig.filePath + pInfo.PluginCode, version.VersionName);
                    ver.LastModTime = DateTime.Now;
                    ver.LastModUid = uid;

                    verfilepath = ver.FilePath;

                    UpdateVersionTrack(ver);//更新版本表
                }
                else//若为升级
                {
                    verfilepath = version.FilePath;
                    InsertVersionTrack(version);
                }

                UpdatePluginInfo(pInfo, action);//更新插件表和扩展信息表

                SearchConfig searchcof = new SearchConfig();
                searchcof.PluginCode = pInfo.PluginCode.ToString();
                BoFactory.GetVersionTrackBo.DeleteConfigInfo(searchcof);//先删除原由配置信息,若存在

                if (Directory.Exists(oldfilepath)) //5.修改需要删除原由文件
                    Directory.Delete(oldfilepath, true);

                return verfilepath;
            }
            catch (DalException ex)
            {
                throw new BOException("更新web插件相关所有信息出错", ex);
            }
        }
        public ActionResult SaveFileInfo(VersionTrack ver, string IsAdd, string IsUpdate, FormCollection form)
        {
            var vmobject = new JsonReturnMessages();
            string vid = form["VersionIds"].ToString();
            XmlMainConfigInfo xmlInfo = null;

            try
            {
                SearchVersionTrack search = new SearchVersionTrack();
                search.VID = vid;
                VersionTrack v = BoFactory.GetVersionTrackBo.GetVersionTrack(search)[0];
                if (Request.Files.Count > 0)//�����ϴ��ļ�
                    xmlInfo = Decompressing(v.VersionName);//��ѹ

                vid = BoFactory.GetVersionTrackBo.SaveUpdaterZipInfo(ver, xmlInfo, IsAdd, IsUpdate, base.CurrentUser.UserUId, form["VersionIds"].ToString());

                if (Request.Files.Count > 0)//�����ϴ��ļ�
                    MoveFolder(xmlInfo, v.VersionName);//�ƶ��ļ��м��ļ�
            }
            catch (Exception ex)
            {
                try
                {
                    string thisFilePath = AppConfig.filePath + Common.Entities.Constants.TempName;
                    while (Directory.Exists(thisFilePath))//��ɾ��ԭ����ʱ�ļ���
                    {
                        Directory.Delete(thisFilePath, true);
                    }
                    if (!string.IsNullOrEmpty(xmlInfo.savefile))
                    {
                        FileInfo f = new FileInfo(xmlInfo.savefile);//ɾ��ԭ�������zip
                        if (f.Exists)
                            f.Delete();
                    }
                }
                catch (Exception fe)
                {
                    vmobject.IsSuccess = false;
                    vmobject.Msg = fe.Message;
                }

                vmobject.IsSuccess = false;
                vmobject.Msg = vmobject.Msg + "," + ex.Message;
                return Json(vmobject, "text/html");
            }

            vmobject.Msg = vid;
            vmobject.IsSuccess = true;
            return Json(vmobject, "text/html");
        }
        public ActionResult Publishs(VersionTrack ver)
        {
            var vmobject = new JsonReturnMessages();
            try
            {
                InsertXml(ver);//1���XML

                ver.LastModTime = DateTime.Now;
                ver.LastModUid = base.CurrentUser.UserUId;
                ver.VersionStatus = 1;

                SearchVersionTrack search = new SearchVersionTrack();
                search.VID = ver.PreVersionId.ToString();
                IList<VersionTrack> list = BoFactory.GetVersionTrackBo.GetVersionTrack(search);//��ȡ��һ���汾��

                string name = BoFactory.GetVersionTrackBo.GetPluginInfo(ver.PluginCode.ToString()).PluginCode;//��ȡ���code

                Beyondbit.AutoUpdate.IPublisher pub = new Beyondbit.SmartBox.Publisher.SmartBoxPublisher();
                if (list.Count > 0)//������ڴ˼�¼˵���ǵ�һ�η���
                    pub.UpdateApplication(ver.FilePath, name);
                else
                    pub.CreateApplication(ver.FilePath, name);

                BoFactory.GetVersionTrackBo.UpdatePlushVersionTrack(ver);//����״̬

                vmobject.IsSuccess = true;
                vmobject.Msg = "�����ɹ�!";
            }
            catch (Exception ex)
            {
                vmobject.IsSuccess = false;
                vmobject.Msg = ex.Message;
            }
            return Json(vmobject);
        }
 public ActionResult UpdaterInfo(string IsUpdate, string IsAdd, string Vid, string AddVid)
 {
     ViewData["IsUpdate"] = "";
     ViewData["IsAdd"] = IsAdd;
     ViewData["Vid"] = Vid;
     VersionTrack v = new VersionTrack();
     if (!string.IsNullOrEmpty(IsUpdate))//��Ϊ�޸�
     {
         string id = "";
         if (AddVid.Equals("-1"))
             id = Vid;
         else
             id = AddVid;
         ViewData["IsUpdate"] = IsUpdate;
         SearchVersionTrack search = new SearchVersionTrack();
         search.VID = id;
         v = BoFactory.GetVersionTrackBo.GetVersionTrack(search)[0];
     }
     return View(v);
 }
        public ActionResult SavePluginInfo(FormCollection form, PluginInfo pluginInfo, ActionExtend actionExtend, VersionTrack version1, string isAdd)
        {
            var vmobject = new JsonReturnMessages();
            try
            {
                actionExtend.Summary = form["ESummary"].ToString();//��չ��Ϣ����
                //��ȡͨ�õİ汾��Ϣ���޸ģ�������������
                version1.VersionStatus = 0;
                version1.FilePath = AppConfig.filePath + pluginInfo.PluginCode + @"\" + version1.VersionName;
                version1.CreateUid = base.CurrentUser.UserUId;
                version1.LastModUid = base.CurrentUser.UserUId;
                string filepaht = version1.FilePath;

                if (version1.VersionId == 0)//������
                {
                    int vid = BoFactory.GetVersionTrackBo.InsertWebPluginInfo(pluginInfo, actionExtend, version1, base.CurrentUser.UserUId);
                    vmobject.Msg = vid.ToString();
                }
                else
                {
                    filepaht = BoFactory.GetVersionTrackBo.UpdateWebPluginInfo(pluginInfo, actionExtend, version1, isAdd, base.CurrentUser.UserUId);
                    vmobject.Msg = version1.VersionId.ToString();
                }

                //�����ļ���
                while (!Directory.Exists(filepaht))
                {
                    Directory.CreateDirectory(filepaht);
                }

                vmobject.IsSuccess = true;
            }
            catch (Exception ex)
            {
                vmobject.IsSuccess = false;
                vmobject.Msg = ex.Message;
            }
            return Json(vmobject);
        }