Мне нужно проверить, существует ли файл, который они вводят. Как я могу это сделать, я попытался использовать try & catch, и это не дало эффекта
if (startarg.Contains("-del") == true)
{
//Searches "Uninstallers" folder for uninstaller containing the name that they type after "-del" and runs it
string uninstalldirectory = Path.Combine(Directory.GetCurrentDirectory(), "Uninstallers");
DirectoryInfo UninstallDir = new DirectoryInfo(uninstalldirectory);
string installname = startarg[2].ToString();
//Removes file extesion "-del "
installname.Remove(0, 5);
string FullFilePath = Path.Combine(uninstalldirectory, installname);
try
{
//Makes the uninstaller invisible to the user and sets other settings
Process Uninstaller = new Process();
Uninstaller.StartInfo.FileName = FullFilePath;
Uninstaller.StartInfo.UseShellExecute = false;
Uninstaller.StartInfo.CreateNoWindow = true;
Uninstaller.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Uninstaller.Start();
}
//Only is run if the package isn't installed
catch (System.Exception)
{
Console.WriteLine("The specified package is not installed, you most likely mispelled it or didnt put quotes around it, try again");
}
}
Большая часть этого кода получает текущий каталог и добавляет к нему «Деинсталляторы».
Edit:
Результатом отладки является ArgumentOutOfRangeException
Я попытался использовать оператор File.Exists if и другие, и он все еще вылетает
Правка № 2:
Немного о том, что мне делать с этой программой: я пытаюсь написать кроссплатформенный (с моно, еще не портировал его, потому что мне не нравится MonoDevelop) менеджер пакетов, и это это функция, которая удаляет пакеты. Он получает список установленных приложений, получая сценарии удаления в папке Uninstallers приложения. Я хочу, чтобы он был независимым от каталога, поэтому он должен получить текущий каталог
Мой код работает нормально, если файл существует, но когда он не работает, это моя проблема