更新を確認するために小さな.Netコマンドラインプログラムを実行する必要があるモジュールがあります。すべてが正常に機能していますが、コマンドプロンプトの出力が表示されないようにするのに問題があります。
アプリには独自のWindowsフォームがあり、更新を検出するとポップアップ表示されます。更新は、起動元のDLLとは異なる実行コンテキストを必要とするため、別のアプリとして実行する必要があります。
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + AUTO_UPDATE_EXENAME;
updater.StartInfo.FileName = path;
updater.StartInfo.Arguments = AUTO_UPDATE_PARAMETERS;
updater.StartInfo.CreateNoWindow = false;
updater.StartInfo.UseShellExecute = false;
updater.StartInfo.RedirectStandardOutput = true;
updater.StartInfo.WorkingDirectory = path;
updater.Start();
、、のさまざまな組み合わせのほとんどすべてを試しましたが、それぞれの組み合わせでCreateNoWindow
、迷惑なブラックボックスがポップアップ表示されます。アプリはstdoutに書き込みますが、私はそれをデバッグにのみ使用し、ユーザーはそれが生成するテキストを実際に見るべきではありません。UseShellExecute
RedirectStandardOutput
おそらくCreateNoWindow
、および/またはRedirectStandardOutput
ボックスがポップアップするのを防ぐ必要がありますが、これらの変数をどのように設定してもかまいません。