using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Linq; namespace Volian.Base.Library { public static class ExeInfo { #region Log4Net private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #endregion public static string GetROEditorPath() { string roapp = PROMSExecutableFolderPath() + @"\ROEDITOR.EXE"; return roapp; } // returns the path to the executable folder public static string PROMSExecutableFolderPath() { string pathPROMSexe = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); if (pathPROMSexe[7] == ':') // either a local drive or a mapped network drive pathPROMSexe = pathPROMSexe.Substring(6); else pathPROMSexe = @"\" + pathPROMSexe.Substring(5); // non-mapped network drive - need to add extra back slash in front return pathPROMSexe; } // C2022-030 get the version of PROMSFixes associated with this execuable public static string GetAssocicatedPROMSFixesVersion() { try { // Build the path to the PROMSFixes.sql file located in the PROMS exe folder string pathPROMSFixes = PROMSExecutableFolderPath() + @"\PROMSFixes.sql"; // open the PROMSFixes.sql file and grab the line of text containing the PROMSFixes RevDate // using Linq to open and read the PROMSFixes file // it returns a list of lines. we look at only the first one (should only be one of these in PROMSFixes) var lines = from text in File.ReadLines(pathPROMSFixes) where text.Contains("set @RevDate =") select new { Text = text }; var txt = lines.First(); // get the first line of text where "set @RevDate =" was found string dtstring = txt.Text; // this is the actual text line // Parse out the date/time text that follows "set @RevDate =" int idx = dtstring.IndexOf('=') + 3; dtstring = dtstring.Substring(idx); dtstring = dtstring.Substring(0, dtstring.IndexOf("'")); // convert the parsed date/time text string to a DateTime and string format it to yyMM.ddHH like used in Help About string rtnStr = string.Format("{0:yyMM.ddHH}", DateTime.Parse(dtstring)); return rtnStr; // return the PROMSFixes version date stored in the PROMSFixes.sql file that's in the PROMS exe folder } catch (Exception ex) { _MyLog.ErrorFormat("GetAssociatedPROMSFixesVersion - {0}", ex.Message); return null; // return null to signal that we could not find or parse the PROMSFixes version date } } } }