exeファイルをクリックして実行すると完全に実行されるメジャーアップグレード(Installscript msi)を作成しました。
同じexeを実行するコンソールアプリケーションも作成していますが、今回はインストール後、新しいバージョンとともに、以前のバージョンがプログラムの追加/削除リストに表示されます。
すべてのコンポーネントは正しくインストールされていますが、
コンソール アプリケーションから exe を実行した場合にのみ以前のバージョンが表示されるのはなぜですか?
// Enter the executable to run, including the complete path
start.FileName = @"folder1\MyISProj.exe";
// Do you want to show a console window?
start.CreateNoWindow = true;
start.WindowStyle = ProcessWindowStyle.Minimized;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
//proc.WaitForExit();
proc.Close();
}
私が観察したもう1つのことは、コンソールアプリケーションからexeを呼び出すと、インストーラーが開き、EULAなどに同意した後、実際のインストールが開始されると、コンソールアプリケーションが再度呼び出されることです。この動作を停止するために、Main メソッドにチェックを追加して、コンソール アプリケーションを 1 回だけ実行しました。インストーラーがコンソール アプリケーションを再度実行しようとすると、プロセスが既に実行されているかどうかがチェックされます。実行されている場合は、コンソール アプリケーションから戻ります。
Process[] result = Process.GetProcesses();
foreach (var item in result)
{
if (item.ProcessName.Contains("MyISProj"))
{
Console.WriteLine("There is already a instance running.");
System.Environment.Exit(0);
return;
}
}
しかし、これを行った後も、プログラムの追加/削除リストに 2 つのエントリが表示されます。この問題を解決するにはどうすればよいですか? 私はこの問題で立ち往生しています。
InstallShield 2011 プロフェッショナル エディションを使用して exe を作成しています。