2010-03-18 6 views
3

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

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

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

+0

dunno, если вы это поняли, но вот хорошее решение http://stackoverflow.com/a/2466537/541038 –

ответ

6

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

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

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