2014-01-20 3 views
0

У меня есть установка, сделанная с installshield 2012, framework 3.5, и я создаю новую настройку. Моя проблема в том, что мой UpgradeCode нужно было изменить. Поэтому мне нужно обновить mi .exe с другим кодом UpgradeCode. Моя проблема - загар, когда у меня запущен старый .exe versión, установка не выполняется хорошо, а .exe не удалось выполнить. Что мне нужно сделать, это ПОДТВЕРДИТЬ, что старый versión не работает до установки новой версии. Я попытался включить в моем классе Installerinstallshield остановить старый процесс перед установкой новой версии

public override void Install(IDictionary stateSaver) 
{ 
     Process[] processes = Process.GetProcessesByName(processID); 
     foreach (Process process in processes) 
     { 
      process.Kill(); 
      process.WaitForExit(); 
      process.Close(); 
     } 
} 

Но это не работает. Любые идеи? Thanks

+0

Есть ли протокол для закрытия вашего процесса изящно (например, закрытие главного окна или команда named pipe)? process.Kill является жестоким, что он не очищает ресурсы ядра. Вам, вероятно, потребуется специальное действие, чтобы включить код закрытия, если ваш процесс не является службой Windows. –

ответ

2

Вместо того, чтобы убивать без каких-либо уведомлений о вашем приложении (которое может привести к потере ваших несоответствующих данных и т. Д.), Вы могли бы ask the user to close it and stop the installation of the new version until the old application is closed.

В приведенной выше ссылке объясняется, как это сделать с помощью другого инструмента, но с правильным набором пользовательских действий это может быть достигнуто в любом инструменте создания настроек.

Смежные вопросы