0

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 を作成しています。

4

1 に答える 1