private static RepositoryVersionInfo Create(ApplicationInfo productVersion, IEnumerable <ApplicationInfo> applicationVersions, IEnumerable <Package> packages) { var asms = TypeHandler.GetAssemblyInfo(); var sncr = Assembly.GetExecutingAssembly(); var binPath = IO.Path.GetDirectoryName(TypeHandler.GetCodeBase(sncr)); var asmDyn = asms.Where(a => a.IsDynamic).ToArray(); asms = asms.Except(asmDyn).ToArray(); var asmInBin = asms.Where(a => a.CodeBase.StartsWith(binPath)).ToArray(); asms = asms.Except(asmInBin).ToArray(); var asmInGac = asms.Where(a => a.CodeBase.Contains("\\GAC")).ToArray(); asms = asms.Except(asmInGac).ToArray(); var asmSn = asmInBin.Where(a => a.Name.StartsWith("SenseNet.")).ToArray(); var plugins = asmInBin.Except(asmSn).ToArray(); return(new RepositoryVersionInfo { OfficialSenseNetVersion = productVersion, Applications = applicationVersions, Assemblies = new AssemblyDetails { SenseNet = asmSn, Plugins = plugins, GAC = asmInGac, Other = asms, Dynamic = asmDyn, }, InstalledPackages = packages }); }
private static RepositoryVersionInfo Create(IEnumerable <ComponentInfo> componentVersions, IEnumerable <Package> packages, bool databaseAvailable = true) { var asms = TypeHandler.GetAssemblyInfo(); var sncr = Assembly.GetExecutingAssembly(); var binPath = IO.Path.GetDirectoryName(TypeHandler.GetCodeBase(sncr)); var asmDyn = asms.Where(a => a.IsDynamic).ToArray(); asms = asms.Except(asmDyn).ToArray(); var asmInBin = asms.Where(a => a.CodeBase.StartsWith(binPath)).ToArray(); asms = asms.Except(asmInBin).ToArray(); var asmInGac = asms.Where(a => a.CodeBase.Contains("\\GAC")).ToArray(); asms = asms.Except(asmInGac).ToArray(); var asmSn = asmInBin.Where(a => a.Name.StartsWith("SenseNet.")).ToArray(); var plugins = asmInBin.Except(asmSn).ToArray(); return(new RepositoryVersionInfo { Components = componentVersions, Assemblies = new AssemblyDetails { SenseNet = asmSn, Plugins = plugins, GAC = asmInGac, Other = asms, Dynamic = asmDyn, }, InstalledPackages = packages, DatabaseAvailable = databaseAvailable }); }
internal static RepositoryVersionInfo Create(IEnumerable <ComponentInfo> componentVersions, IEnumerable <Package> packages, bool databaseAvailable = true) { var asms = TypeHandler.GetAssemblyInfo(); var sncr = Assembly.GetExecutingAssembly(); var binPath = IO.Path.GetDirectoryName(TypeHandler.GetCodeBase(sncr)); var asmDyn = asms.Where(a => a.IsDynamic).ToArray(); asms = asms.Except(asmDyn).ToArray(); var asmInBin = asms.Where(a => a.CodeBase.StartsWith(binPath ?? throw new InvalidOperationException($"Parameter cannot be null."))).ToArray(); asms = asms.Except(asmInBin).ToArray(); var asmInGac = asms.Where(a => a.CodeBase.Contains("\\GAC")).ToArray(); asms = asms.Except(asmInGac).ToArray(); var asmSn = asmInBin.Where(a => a.Name.StartsWith("SenseNet.")).ToArray(); var plugins = asmInBin.Except(asmSn).ToArray(); var components = componentVersions.Select(c => new SnComponentDescriptor(c)).ToArray(); var pkgArray = packages?.ToArray(); if (pkgArray != null) { foreach (var package in pkgArray) { package.Manifest = null; } } return(new RepositoryVersionInfo { Components = components, Assemblies = new AssemblyDetails { SenseNet = asmSn, Plugins = plugins, GAC = asmInGac, Other = asms, Dynamic = asmDyn, }, InstalledPackages = pkgArray, DatabaseAvailable = databaseAvailable }); }