Я не уверен, какой будет правильный вопрос для моего случая, но я постараюсь описать как можно лучше.Я должен отметить, что я не очень хорошо знаю этот язык, я использую его строго для исполняемого файла моего приложения, в основном я возиться с Java.Так что у меня есть приложение, которое запускается только в том случае, если оно находит Java на моем ПК.Я использую что-то вроде этого:
ProcessStartInfo startJava = new ProcessStartInfo("java", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
Но, скажем, я хочу использовать openJDK, тогда мне придется изменить "Java" на что-то вроде этого:
ProcessStartInfo startJava = new ProcessStartInfo
(@"C:\Program Files (x86)\Java\openJDK_1.7\bin\java.exe", JavaProcessArguments());
Двигаясь дальше, я хотел запустить openJDK FIRST, даже если java присутствует, поэтому я написал условие, которое делает это:
private void StartTheProcess()
{
string pathJDK = @"C:\Program Files (x86)\Java\openJDK_1.7\bin\";
bool isDirJDK7 = Directory.Exists(pathJDK);
if (isDirJDK7)
{
ProcessStartInfo startJava = new ProcessStartInfo(@"C:\Program Files (x86)\Java\openJDK_1.7\bin\java.exe", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
try
{
using (Process p = Process.Start(startJava))
{
p.WaitForExit();
}
}
catch (Win32Exception ex)
{
some error...
}
catch (Exception e)
{
some error...
}
}
else
{
ProcessStartInfo startJava = new ProcessStartInfo("java", JavaProcessArguments());
startJava.CreateNoWindow = !client.ShowConsole;
startJava.UseShellExecute = false;
try
{
using (Process p = Process.Start(startJava))
{
p.WaitForExit();
}
}
catch (Win32Exception ex)
{
some error...
}
catch (Exception e)
{
some error...
}
}
}
Теперь давайте предположим, что у меня есть больше версий openJDK в "C: \ Program Files"(x86) \ Java \ "папка: openJDK_1.7, openJDK_1.7_u1, openJDK_1.8 и т. д., и я хочу запустить последнюю.Как мне это сделать?Я думаю, что один из методов - сравнить найденные там имена подпапок, но я не знаю, как это сделать.Содержимое всех подпапок идентично, а имена подпапок имеют одинаковую конструкцию (openJDK_1.X / openJDK_1.X_uYZ).Не могли бы вы мне помочь, основываясь на этом плохо (скорее всего) коде?: D