protected AssemblyDetail ExtractAll(string assemblyFile, DiffConfig config) { string cacheKey = assemblyFile + "|" + config.ToString(); if (config.IsolationLevel == AppDomainIsolationLevel.AutoDetect) { config.IsolationLevel = AppDomainIsolationLevel.Medium; } if (!_infCache.ContainsKey(cacheKey)) { lock (typeof(TestBase)) { if (!_infCache.ContainsKey(cacheKey)) { if (!File.Exists(assemblyFile)) { Assert.Inconclusive("Unable to locate subject assembly"); } AssemblyManager am = AssemblyManagerFactory.Create(config.IsolationLevel); AssemblyDetail inf = am.ExtractAssemblyInf(assemblyFile, config); _infCache.Add(cacheKey, inf); } } } return((AssemblyDetail)_infCache[cacheKey].Clone()); }
internal void Execute(object state) { AssemblyComparerThread act = (AssemblyComparerThread)state; try { if (act.Progress != null) { if (act.Progress.CancelRequested) { throw new OperationCanceledException(); } act.Progress.UpdateProgress(new ProgressStatus("Analyzing " + act.FileName, true)); } AssemblyDetail assembly = act.Manager.ExtractAssemblyInf(act.FileName, _config); assembly.Name = act.Group.Name; lock (GetType()) { act.Group.Assemblies.Add(assembly); } } catch (Exception ex) { Log.Error("Unable to load assembly : {0}", act.FileName); act.Group.HasErrors = true; act.Group.ErrorDetail = ex.GetNestedExceptionMessage(); Log.Error(act.Group.ErrorDetail); } }
private void CheckForUpdates(bool silentCheck) { List <GitHubRelease> releases = null; try { string sURL; sURL = "https://api.github.com/repos/kabili207/oracle-of-secrets-win/releases"; WebRequest request = WebRequest.Create(sURL); Extensions.SetAllowUnsafeHeaderParsing(); // GitHub requires a user agent ((HttpWebRequest)request).UserAgent = "ZoraGen updater"; using (Stream objStream = request.GetResponse().GetResponseStream()) { StreamReader objReader = new StreamReader(objStream); string json = objReader.ReadToEnd(); var dict = (SimpleJson.JsonArray)SimpleJson.SimpleJson.DeserializeObject(json); var converter = new GitHubReleaseJsonConverter(); releases = converter.Deserialize(dict).ToList(); } } catch (Exception ex) { if (!silentCheck) { MessageBox.Show("Unable to check for updates." + Environment.NewLine + ex.Message, "Check for updates", MessageBoxButton.OK, MessageBoxImage.Error); } } if (releases != null) { AssemblyDetail detail = new AssemblyDetail(Assembly.GetExecutingAssembly()); var releaseInfo = releases.Where(x => !x.IsPreRelease && !x.IsDraft && x.TagName.StartsWith("v")).Select(x => { string versionString = x.TagName.TrimStart('v', 'V'); SemanticVersion version = SemanticVersion.Parse(versionString); return(new { Version = version, Release = x }); }).Where(x => x.Version > detail.ProductVersion).OrderByDescending(x => x.Version); if (releaseInfo.Count() > 0) { var win = new UpdateWindow(releaseInfo.First().Release, detail.ProductVersion); win.Owner = this; win.ShowDialog(); } else if (!silentCheck) { MessageBox.Show("There are no new updates available", "No updates"); } } }
protected T ExtractItem <T>(string assemblyFile, string name, DiffConfig config) where T : ICanAlign, new() { AssemblyDetail all = ExtractAll(assemblyFile, config); T t = ListOperations.FindOrReturnMissing(all.FilterChildren <T>(), name); Log.Verbose("Extracted Item {0} : {1}", t.GetType().Name, t.ToString()); return(t); }
public AssemblyDetail ExtractAssemblyInf(string assemblyPath, DiffConfig config) { if (!Path.IsPathRooted(assemblyPath)) { assemblyPath = Path.GetFullPath(assemblyPath); } Log.Verbose("Extracting from assembly {0}", Path.GetFileName(assemblyPath)); DomainExtractorPair pair = GetExtractor(assemblyPath); AssemblyDetail ad = pair.Extractor.ExtractFrom(assemblyPath, config); OneExtractionComplete(pair); return(ad); }
protected T ExtractItem <T>(string assemblyFile, string parentName, string typeName, DiffConfig config) where T : ICanAlign, new() { AssemblyDetail all = ExtractAll(assemblyFile, config); foreach (ICanCompare parent in all.Children) { if (parent.Name == parentName) { T t = ListOperations.FindOrReturnMissing(parent.FilterChildren <T>(), typeName); Log.Verbose("Extracted Item {0} : {1}", t.GetType().Name, t.ToString()); return(t); } } Assert.Inconclusive("Specified parent {0} was not found", parentName); return(default(T)); }
public AssemblyDetail ExtractAssemblyInf(string assemblyPath, DiffConfig config) { if (!Path.IsPathRooted(assemblyPath)) { assemblyPath = Path.GetFullPath(assemblyPath); } Log.Verbose("Extracting from assembly {0}", Path.GetFileName(assemblyPath)); var deleteFiles = new ConcurrentQueue <string>(); DomainExtractorPair pair = GetExtractor(assemblyPath); AssemblyDetail ad = pair.Extractor.ExtractFrom(assemblyPath, config, ref deleteFiles); OneExtractionComplete(pair); OnUnloadDeleteFiles(deleteFiles); return(ad); }
protected void OnAbout(object sender, EventArgs e) { AboutDialog dialog = new AboutDialog(); Assembly asmCurrent = Assembly.GetExecutingAssembly(); AssemblyDetail details = new AssemblyDetail(asmCurrent); dialog.ProgramName = details.Product; dialog.Version = details.ProductVersion; dialog.Comments = details.Description; dialog.Authors = new string[] { "Amy Nagle" }; dialog.Website = "https://github.com/kabili207/zoragen-gtk"; dialog.Copyright = details.Copyright; dialog.Logo = Gdk.Pixbuf.LoadFromResource("Zyrenth.ZoraGen.GtkUI.Farore.ico"); dialog.Icon = Gdk.Pixbuf.LoadFromResource("Zyrenth.ZoraGen.GtkUI.Farore.ico"); dialog.Run(); dialog.Destroy(); }
public static AssemblyDetail Extract(Assembly assembly) { var detail = _detailCache.GetOrAdd(assembly, a => { var assemblyDetail = new AssemblyDetail(); var assemblyName = a.GetName(); assemblyDetail.AssemblyName = assemblyName.Name; assemblyDetail.AssemblyVersion = assemblyName.Version?.ToString(); assemblyDetail.AssemblyTitle = a.GetCustomAttribute <AssemblyTitleAttribute>()?.Title; assemblyDetail.AssemblyDescription = a.GetCustomAttribute <AssemblyDescriptionAttribute>()?.Description; assemblyDetail.AssemblyProduct = a.GetCustomAttribute <AssemblyProductAttribute>()?.Product; assemblyDetail.AssemblyCompany = a.GetCustomAttribute <AssemblyCompanyAttribute>()?.Company; assemblyDetail.AssemblyCopyright = a.GetCustomAttribute <AssemblyCopyrightAttribute>()?.Copyright; assemblyDetail.AssemblyConfiguration = a.GetCustomAttribute <AssemblyConfigurationAttribute>()?.Configuration; assemblyDetail.AssemblyFileVersion = a.GetCustomAttribute <AssemblyFileVersionAttribute>()?.Version; assemblyDetail.AssemblyInformationalVersion = a.GetCustomAttribute <AssemblyInformationalVersionAttribute>()?.InformationalVersion; return(assemblyDetail); }); return(detail); }
public IActionResult Assemblies() { var details = AssemblyDetail.ExtractAll(); return(Ok(details)); }
private void Do() { Query q1 = new Query(typeof(FNCART_CTLEntity)); q1.AddAttribute(FNCART_CTLEntity.__STNO); q1.AddAttribute(FNCART_CTLEntity.__SECTION); q1.AddAttribute(FNCART_CTLEntity.__GROUPNO); Condition c1 = q1.GetQueryCondition(); c1.AddEqualTo(FNCART_CTLEntity.__REGISTER_FLG, "1"); q1.GroupBy(FNCART_CTLEntity.__STNO); q1.GroupBy(FNCART_CTLEntity.__GROUPNO); q1.GroupBy(FNCART_CTLEntity.__SECTION); Query q2 = new Query(typeof(FNRETRIEVAL_STEntity)); q2.AddAttribute(FNRETRIEVAL_STEntity.__RETRIEVAL_STATION); q2.AddAttribute(FNRETRIEVAL_STEntity.__CART_TICKET_PRINTFLG); q2.AddAttribute(FNRETRIEVAL_STEntity.__PRINTER_NO_CART); q2.GroupBy(FNRETRIEVAL_STEntity.__RETRIEVAL_STATION); q2.GroupBy(FNRETRIEVAL_STEntity.__PRINTER_NO_CART); q2.GroupBy(FNRETRIEVAL_STEntity.__CART_TICKET_PRINTFLG); q1.AddJoinQuery(FNCART_CTLEntity.__STNO, q2, FNRETRIEVAL_STEntity.__UNIT_STNO); q1.OrderBy(FNCART_CTLEntity.__STNO); q1.OrderBy(FNCART_CTLEntity.__GROUPNO); DataTable dt = q1.Execute(); //sql1 if (dt != null && dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; string printflag = dr[FNRETRIEVAL_STEntity.__CART_TICKET_PRINTFLG].ToString(); decimal printNo = Convert.ToDecimal(dr[FNRETRIEVAL_STEntity.__PRINTER_NO_CART]); string printName = GetPrintName(printNo); string retrievalStation = dr[FNRETRIEVAL_STEntity.__RETRIEVAL_STATION].ToString(); string groupNo = dr[FNCART_CTLEntity.__GROUPNO].ToString(); string section = dr[FNCART_CTLEntity.__SECTION].ToString(); try { if (printflag == "1") //要打印 { DataTable dt1 = GetData(section, groupNo); if (dt1 != null && dt1.Rows.Count > 0) { if (retrievalStation == "24") //组立 { AssemblyHead head = new AssemblyHead(); head.Section = section; List <AssemblyDetail> details = new List <AssemblyDetail>(); for (int j = 0; j < dt1.Rows.Count; j++) { DataRow dr1 = dt1.Rows[j]; AssemblyDetail detail = new AssemblyDetail(); detail.BucketNo = dr1[FNCART_CTLEntity.__BUCKET_NO].ToString(); detail.ColorCode = dr1[FNCART_CTLEntity.__COLOR_CODE].ToString(); detail.ItemCode = dr1[FNCART_CTLEntity.__ITEM_CODE].ToString(); detail.ItemName = dr1[FMZKEYEntity.__ZKNAME1].ToString(); detail.Qty = dr1[FNCART_CTLEntity.__QTY].ToString(); detail.Weight = dr1[FNCART_CTLEntity.__WEIGHT].ToString(); details.Add(detail); } pc.DoPrint(printName, head, details); } else if (retrievalStation == "11" || retrievalStation == "21") //SI { SIHead head = new SIHead(); head.Section = section; List <SIDetail> details = new List <SIDetail>(); for (int j = 0; j < dt1.Rows.Count; j++) { DataRow dr1 = dt1.Rows[j]; SIDetail detail = new SIDetail(); detail.BucketNo = dr1[FNCART_CTLEntity.__BUCKET_NO].ToString(); detail.Line = dr1[FNCART_CTLEntity.__LINE].ToString(); detail.ItemCode = dr1[FNCART_CTLEntity.__ITEM_CODE].ToString(); detail.ItemName = dr1[FMZKEYEntity.__ZKNAME1].ToString(); detail.Qty = dr1[FNCART_CTLEntity.__QTY].ToString(); detail.Weight = dr1[FNCART_CTLEntity.__WEIGHT].ToString(); details.Add(detail); } pc.DoPrint(printName, head, details); } } } } catch (Exception ex) { WriteLog(ex.Message); } //update UpdateCriteria uc = new UpdateCriteria(typeof(FNCART_CTLEntity)); Condition c = uc.GetNewCondition(); c.AddEqualTo(FNCART_CTLEntity.__SECTION, section); c.AddEqualTo(FNCART_CTLEntity.__GROUPNO, groupNo); c.AddEqualTo(FNCART_CTLEntity.__REGISTER_FLG, "1"); uc.AddAttributeForUpdate(FNCART_CTLEntity.__REGISTER_FLG, "3"); uc.Perform(); } } }
public ActionResult <IReadOnlyCollection <AssemblyDetail> > Assemblies() { var details = AssemblyDetail.ExtractAll(); return(Ok(details)); }
static void Main(string[] args) { var checkReferences = false; if (args.Length < 2) { Usage(); } var exclude = string.Empty; if (args.Length == 3) { exclude = args[2]; } var filename__ = args[0]; var filenames = new List <string>(); var excludeFileNames = new List <string>(); if (File.Exists(filename__)) { filenames.Add(filename__); } else { filenames.AddRange(Directory.GetFiles(".", filename__)); excludeFileNames.AddRange(Directory.GetFiles(".", exclude)); filenames = filenames.Except(excludeFileNames).ToList(); } var assemblyDetails = new List <AssemblyDetail>(); foreach (var filename in filenames) { var file = new FileInfo(filename); Console.WriteLine($"Processing ... {filename}"); try { var loadedAssembly = Assembly.LoadFile($@"{file.FullName}"); var references = AssemblyReporter.GetReferences(loadedAssembly); var assemblyName = loadedAssembly.GetName(); var assemblyDetail = new AssemblyDetail() { Name = file.Name, Version = assemblyName.Version.ToString(), Platform = assemblyName.ProcessorArchitecture.ToString() }; assemblyDetails.Add(assemblyDetail); if (checkReferences) { foreach (var reference in references) { Console.Write(" |---"); Console.WriteLine($"{reference.Name} {reference.Version}"); } } } catch (Exception ex) { Console.WriteLine($"Fail {filename}: {ex.Message}"); } } var json = Newtonsoft.Json.JsonConvert.SerializeObject(assemblyDetails); File.WriteAllText(args[1], json); }
private void CheckForUpdates(bool silentCheck) { List <GitHubRelease> releases = null; try { string sURL; sURL = "https://api.github.com/repos/kabili207/zoragen-gtk/releases"; // Mono doesn't need this, but it's a good idea to do it anyway in case // someone decides to run this on the .NET Framework. Extensions.SetAllowUnsafeHeaderParsing(); // Mono, by default, doesn't include ANY ca certificates, nor does // it try to bridge to the OS cert store. So we have to trade features // for insecurity. I don't like it, but it's better than hard-coding // github's certificate... ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback ( (srvPoint, certificate, chain, errors) => true ); WebRequest request = WebRequest.Create(sURL); // GitHub requires a user agent ((HttpWebRequest)request).UserAgent = "ZoraGen updater"; using (Stream objStream = request.GetResponse().GetResponseStream()) { StreamReader objReader = new StreamReader(objStream); string json = objReader.ReadToEnd(); var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new GitHubReleaseJsonConverter() }); releases = serializer.Deserialize <List <GitHubRelease> >(json); } } catch (Exception ex) { if (!silentCheck) { MessageBox.Show("Unable to check for updates." + Environment.NewLine + ex.Message, "Check for updates", ButtonsType.Ok, MessageType.Error); } } if (releases != null) { AssemblyDetail detail = new AssemblyDetail(Assembly.GetExecutingAssembly()); var releaseInfo = releases.Where(x => !x.IsPreRelease && !x.IsDraft && x.TagName.StartsWith("v")).Select(x => { string versionString = x.TagName.TrimStart('v', 'V'); SemanticVersion version = SemanticVersion.Parse(versionString); return(new { Version = version, Release = x }); }).Where(x => x.Version > detail.ProductVersion).OrderByDescending(x => x.Version); if (releaseInfo.Count() > 0) { MessageBox.Show("There is an update available." + Environment.NewLine + "Current Version: " + detail.ProductVersion + Environment.NewLine + "Latest Version: " + releaseInfo.First().Release, "Update Available", ButtonsType.YesNo, MessageType.Info); } else if (!silentCheck) { MessageBox.Show("There are no new updates available", "No updates", ButtonsType.Ok, MessageType.Info); } } }
private AssemblyGroup DoCompareFiles(AssemblyManager manager, string[] assemblyFiles) { string[] assemblyFilesResolved = new string[assemblyFiles.Length]; for (int i = 0; i < assemblyFiles.Length; i++) { if (Path.IsPathRooted(assemblyFiles[i])) { assemblyFilesResolved[i] = Path.GetFullPath(assemblyFiles[i]); } else { assemblyFilesResolved[i] = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), assemblyFiles[i])); } } AssemblyGroup group = new AssemblyGroup(); foreach (string file in assemblyFilesResolved) { if (group.Name == null) { group.Name = Path.GetFileName(file); } if (Path.GetFileName(file) != group.Name) { group.Name = "(Multiple Names)"; break; } } foreach (string fileName in assemblyFilesResolved) { AssemblyComparerThread act = new AssemblyComparerThread(manager, group, fileName, _progress); if (_config.Multithread) { _tpw.QueueUserWorkItem(Execute, act); } else { Execute(act); } } if (_config.Multithread) { _tpw.WaitOne(); List <AssemblyDetail> sorted = new List <AssemblyDetail>(); foreach (string fileName in assemblyFilesResolved) { AssemblyDetail sortedDetail = group.Assemblies.Find(delegate(AssemblyDetail detail) { return(string.Compare(detail.Location, fileName, true) == 0); }); if (sortedDetail == null) { Log.Error("Unable to sort assembly " + fileName); //Log.Error(" List has " + string.Join(",", group.Assemblies.ConvertAll(delegate(AssemblyDetail detail) { return detail.Location; }).ToArray())); } else { sorted.Add(sortedDetail); } } group.Assemblies.Clear(); group.Assemblies.AddRange(sorted); } ListOperations.AlignLists(group.Assemblies); group.PerformCompare(_filter); return(group); }