3

サービスを実行しています。サービスは、プロセスを開始する新しいスレッドを作成します。

それが開始するプロセスは、元の親サービス (msi を開始したプロセスを呼び出したサービス) を本質的に停止する MSI を呼び出します。

現時点では、プロセスが停止し、MSI が実行を終了する前に失敗します。

startInfo.FileName = "UpdateInstaller.exe";
startInfo.Arguments = "ParentServiceName.exe";
startInfo.UseShellExecute = true;
startInfo.RedirectStandardOutput = false; //Edited as per comment below. Still wont work 

new Thread(() =>
{
    Thread.CurrentThread.IsBackground = true;
    Process.Start(startInfo);
}).Start();

親が死んだ後でも、このプロセスを実行する方法についてのアイデアはありますか?

4

1 に答える 1

0

コードによって起動されたこのプロセスは、呼び出し元のコードが終了した後も開いたままになります適切な例 - ここで自然に終了するコンソール アプリがある場合、メモ帳プロセスは「なくなった」後も開いたままになります。

    static void Main(string[] args)
    {
        var startInfo = new ProcessStartInfo
        {
            FileName = "notepad.exe",
            UseShellExecute = true,
            RedirectStandardOutput = false
        };

        new Thread(() =>
        {
            Thread.CurrentThread.IsBackground = true;
            Process.Start(startInfo);
        }).Start();
    }
于 2013-12-20T13:03:43.017 に答える