Используйте Inno Setup, чтобы удалить другое приложение, не установленное с Inno Setup, во время установки. - PullRequest
4 голосов
/ 18 марта 2010

У меня есть старое приложение VB6, которое развернуто с использованием очень старой 16-разрядной версии InstallShield. Я создал новый установщик с Inno Setup, чтобы он был 64-разрядным для моего приложения VB6 с обновлениями.

У всех моих пользователей уже установлена ​​существующая версия InstallShield. В настоящее время у меня работает Inno Setup. Проблема в том, что я не хочу перезаписывать старые установочные файлы InstallShield, поэтому программа установки Inno устанавливается в другой каталог. Это вызывает проблемы, потому что теперь у меня установлено две версии с двумя отдельными значками.

Мне нужен способ вызова деинсталлятора старого приложения InstallShield при установке новой версии Inno Setup. Как мне вызвать деинсталлятор из Windows Установка и удаление программ через Inno Setup? Если я повторно использую идентификатор приложения для версии InstallShield, совпадающей с Inno Setup, а затем вручную удаляю старые файлы, это сработает?

1 Ответ

6 голосов
/ 25 марта 2010

Вам потребуется найти раздел реестра InstallShield, который будет находиться в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ или HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\, а затем выполнить его значение UninstallString. Как только это будет сделано, удалите ключ реестра: невозможно повторно использовать тот же ключ с Inno Setup, поскольку он всегда добавляет _is1 к вашему AppId, чтобы сгенерировать имя раздела реестра для удаления. Кроме того, в старых версиях Windows он также может обрезать это имя ключа и добавить контрольную сумму из-за ограничений длины.

Делайте все это из PrepareToInstall функции события.

...