Консольное приложение запускает процесс, затем закрывается - PullRequest
1 голос
/ 19 августа 2010

Я пишу небольшой апдейт для своего приложения. Мой поток будет выглядеть так: app.exe -> вызов процесса (updater.exe) -> app.close () Затем программа обновления проверяет, закрыто ли приложение, затем перезаписывает app.exe и другие сателлитные сборки.

Так что мне нужно сделать что-то вроде этого: запустить мое приложение C # exe, запустить процесс для updater.exe, затем закрыть приложение, но не закрывая дочерний процесс.

Есть ли способ создать такой процесс запуска и забывания в .NET?

Спасибо, Nando

Ответы [ 3 ]

3 голосов
/ 19 августа 2010

Посмотрите на Процесс объект.Вы бы просто вызвали Process.Start так:

System.Diagnostics.Process.Start("updater.exe");
0 голосов
/ 20 августа 2010

Доброе утро, ребята. Кажется, я нашел способ заставить это работать. В моем классе помощника я проводил события для получения stdIO и stdError, просто чтобы что-то записать; удаляя их, я выполняю свою работу: начало процесса и главный выход! : -)

Просто чтобы все об этом узнали: теперь мое объявление процесса выглядит так:

            Process process = new Process();
        process.EnableRaisingEvents = true;

        process.StartInfo = new ProcessStartInfo();
        process.StartInfo.Arguments = "-update";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.ErrorDialog = false;
        process.StartInfo.FileName = "updater.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();

        process.Start();

Спасибо всем! Nando

0 голосов
/ 19 августа 2010

Да, я делаю это, но кажется, что Процесс не запускается ...

Я создал небольшой вспомогательный класс с именем Updater:

Updater.CheckUpdates() 

-> запускает процесс, который вызывает "updater.exe -check", и это работает (когда процесс завершится, управление вернется в мое основное приложение). Я оцениваю код возврата процесса и при необходимости устанавливаю флаг boat Updater.UpdatesAvalilable.

Updater.ApplyUpdates()

-> запускает процесс, который вызывает "updater.exe -update", который выполняет обновление.

Итак, мой код такой:

    Updater.CheckUpdates();
    if (Updater.UpdatesAvailable)
    {
        Updater.ApplyUpdates();
        System.Environment.Exit(0);
    }

Процесс в Updater.ApplyUpdates () никогда не запускается. Я знаю, это не элегантный код, но я не знаю, как достичь своей цели. : -)

Спасибо! Nando

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...