67 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
						|
			}	
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
}
 |