John 2f4b33b621 C2022-030 display message when PROMSFixes is not up to date
C2022030 function to read RevDate from PROMSFixes file located in exe folder
2022-11-01 15:40:44 +00:00

67 lines
2.6 KiB
C#

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
}
}
}
}