Я создал основное обновление (Installscript msi), которое отлично работает при выполнении, щелкнув файл exe.Как запустить проект InstallScript из консольного приложения
Я также создаю консольное приложение, которое запускает тот же 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();
}
Одна вещь, которую я наблюдал, что когда я называю ехе из консольного приложения инсталлятор откроется и после принятия лицензионного соглашения и т.д., при запуске фактической установки, то консольное приложение становится вызывается снова. Чтобы остановить это поведение, я добавил проверку в метод Main для запуска консольного приложения только один раз. Теперь, когда установщик попытается запустить консольное приложение снова, он проверяет, запущен ли процесс, если да, он просто возвращается из консольного приложения.
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;
}
}
Но после этого также добавить/удалить список программ показывает две записи. Что я должен сделать, чтобы решить эту проблему? Я застрял в этом вопросе.
Я использую профессиональное издание InstallShield 2011 для создания exe.
MsiGetProperty (ISMSI_HANDLE, «ISACTIONPROP1», szOldProductValue, nProSize); возвращает предыдущий код продукта. Он работает нормально, когда я выполняю «exe», нажимая на него, но проблема возникает, когда я запускаю тот же exe из консольного приложения. Шахта не является тихой установкой. Я просто вызываю exe, как показано в коде. Это exe not msi, поэтому я не могу использовать msiexec. – PSR