Программа C# копирует себя и запускается из нового местаC#

Место общения программистов C#
Ответить
Anonymous
 Программа C# копирует себя и запускается из нового места

Сообщение Anonymous »

Итак, это часть программы, которую я пишу. Я хочу, чтобы программа скопировала себя в заданное место, написала и запустила командный файл, который убивает старый процесс и запускает новый. Проблема в том, что это приводит к запуску и завершению бесконечного цикла исходной программы вместо новой версии. Вот код, который я использую.

Код: Выделить всё

string placementDirectory = Environment.GetFolderPath("Where I want to place the file");
string folderName = "KL";
string currentProccessDirectory = Environment.CurrentDirectory;
string currentProccessName = Process.GetCurrentProcess().ProcessName + ".exe";

if (currentProccessDirectory != placementDirectory + "\\" + folderName) //This is the check to see if it is in the correct directory
{
if (Directory.GetDirectories(placementDirectory).Contains(placementDirectory + "\\" + folderName)) // This checks if the placement directory exists
{
if (Directory.GetFiles(placementDirectory + "\\" + folderName).Contains(placementDirectory + "\\" + folderName + "\\" + currentProccessName))
{
System.IO.File.Delete(placementDirectory + "\\" + folderName + "\\" + currentProccessName); // if the file already exists at this location, it deletes i
}
}
else // if the Placement directory does not exist, it creates it
{
Directory.CreateDirectory(placementDirectory + "\\" + folderName);
}
System.IO.File.Copy(currentProccessDirectory + "\\" + currentProccessName, placementDirectory + "\\" + folderName + "\\" + currentProccessName); //Copies the running proccess to the desired location
using (StreamWriter canWrite = new StreamWriter(placementDirectory + "\\" + folderName + "\\Copier.bat")) // Creation of the batch file to kill the and run the new proccess
{
canWrite.WriteLine("taskkill /f /im \"" + currentProccessName + "\"");
canWrite.Write("START \"" + placementDirectory + "\\" + folderName + "\" " + "\"" + currentProccessName + "\"");
canWrite.Flush();
}
Process.Start(placementDirectory + "\\" + folderName + "\\Copier.bat");
}
По какой-то причине командный файл всегда открывает исходный исполняемый файл, даже если ему сказано открыть новый. И я понятия не имею, почему.

Подробнее здесь: https://stackoverflow.com/questions/300 ... w-location
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»