static FileModule GetFileModule(string fileName) { try { var module = new FileModule(); module.FileName = fileName; if (fileName.StartsWith("ibas_4_modules_published_") && fileName.Contains("BizSys.")) { module.IsShell = false; module.ModuleName = fileName.Substring(fileName.LastIndexOf("BizSys.") + 7).Replace(".zip", ""); var dateString = fileName.Substring(25, 15); module.FileDate = DateTime.ParseExact(dateString, "yyyyMMdd_HHmmss", null); } else if (fileName.StartsWith("ibas_4_shell_published_")) { module.IsShell = true; module.ModuleName = "shell"; var dateString = fileName.Substring(23, 15); module.FileDate = DateTime.ParseExact(dateString, "yyyyMMdd_HHmmss", null); } else { throw new Exception("命名不符合规范"); } return(module); } catch (Exception) { return(null); } }
public void GetLocalInfo(string folderPath) { try { if (!Directory.Exists(folderPath)) { return; } var list = FileModule.GetFileModules(folderPath); if (list == null) { return; } var modulesGroup = list.GroupBy(c => new { c.IsShell, c.ModuleName }); if (modulesGroup == null) { return; } foreach (var group in modulesGroup) { var ibas_Moudule = this.FirstOrDefault(c => (c.ModuleName == group.Key.ModuleName && c.Type != emModuleType.shell && !group.Key.IsShell) || (c.Type == emModuleType.shell && group.Key.IsShell) ); //当前集合没有该模块 if (ibas_Moudule == null) { ibas_Moudule = new ibasModule(); ibas_Moudule.Type = group.Key.IsShell ? emModuleType.shell : emModuleType.other; ibas_Moudule.ModuleName = group.Key.ModuleName; ibas_Moudule.ModuleDescription = group.Key.ModuleName; this.Add(ibas_Moudule); } else { if (ibas_Moudule.Status == emInstallStatus.Installed) { ibas_Moudule.Status = emInstallStatus.canUpdate; } } //添加模块包名列表 foreach (var item in group.OrderBy(c => c.FileDate)) { ibas_Moudule.PackageFileList.Insert(0, item.FileName); } //模块默认选中第一个包名 if (ibas_Moudule.PackageFileList.Count > 0) { ibas_Moudule.Checked = true; ibas_Moudule.PackageFileName = ibas_Moudule.PackageFileList[0]; } } } catch (Exception) { } }