C2022-030 display message when PROMSFixes is not up to date
C2022030 function to read RevDate from PROMSFixes file located in exe folder
This commit is contained in:
@@ -1,23 +1,66 @@
|
||||
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 = Environment.GetEnvironmentVariable("roapp");
|
||||
// Get the current location of the PROMS executable and build a path to the RO Editor executable.
|
||||
// the system call below return a path string with "file:\\" preceeding it.
|
||||
string roapp = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
|
||||
if (roapp[7] == ':') // either a local drive or a mapped network drive
|
||||
roapp = roapp.Substring(6);
|
||||
else
|
||||
roapp = @"\" + roapp.Substring(5); // non-mapped network drive - need to add extra back slash in front
|
||||
roapp = roapp + @"\ROEDITOR.EXE";
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user