0

В прошлом я создал свои установки с помощью InstallAnywhere. Теперь я перешел на InnoSetup в качестве моего нового поставщика установки.Как удалить установку InnoSetup в процессе установки InstallAnywhere?

Перед установкой необходимо удалить всю старую установку. Innosetup распознает старую настройку и сначала выполняет «старый» деинсталлятор, но старая установка не распознает деинсталлятор Innosetup. Поскольку старые настройки уже есть, я не могу изменить их конфигурацию.

Как установить InstallAnywhere распознать деинсталлятор Innosetup, не изменяя конфигурацию InstallAnywhere?

Есть ли какой-то «стандартный способ», который использует Windows для проверки того, установлено ли уже одно приложение?

Я уже пытался создать ключи реестра InstallAnywhere в Innosetup для «имитации» предыдущего деинсталлятора InstallAnywhere - без успеха.

+0

Наиболее популярным способом является проверка GUID в разделе «Отключить реестр». Вы можете добавить Script в свой установщик Inno Setup, который будет искать записи реестра InstallAnywhere предыдущей версии вашего приложения и инициировать деинсталляцию, прежде чем приступать к установке. Вам нужно будет изменить, но это может быть базой [Как обнаружить старую установку и предложить удаление?] (Http://stackoverflow.com/questions/11739317/how-to-detect-old-installation-and-offer- удаление/11739624) – RobeN

+0

Это уже работает, но наоборот. Если пользователь установил Innosetup («новую» программу установки), а затем пытается установить с помощью InstallAnywhere («старая» программа установки), это не так, поскольку мои старые настройки не имеют какой-либо функции «check for innosetup» (как могут ли они?). Они могут распознавать только деинсталлятор InstallAnywhere. – gorootde

+0

С другой стороны, вам придется добавить запись реестра Inno Setup так же, как и скрипт InstallAnywhere (и установить его как скрытый, чтобы избежать дублирования в списке Uninstall). Но это не лучшее решение ... Хотя единственное, что будет работать в этом случае, когда старые инсталляторы закрыты и не могут быть изменены. Таким образом, установка InstallAnywhere увидит, что приложение установлено и запускает поведение по умолчанию для такой ситуации. – RobeN

ответ

1

Я нашел место, где InstallAnywhere хранит свой собственный «реестр». Похоже, что все продукты Flexera используют этот механизм.

Файл XML C:\Program Files (x86)\Zero G Registry\.com.zerog.registry.xml содержит информацию обо всех установленных компонентах. К сожалению, формат файла не документирован, и он не содержит ссылок на определение схемы.

У меня в основном закончилось обходное решение: я создаю «фиктивную» установку InstallAnywhere, которая тихо устанавливается во время установки InnoSetup. Он используется только для одной вещи: Beeing, обнаруженный установкой IA, и вызывает деинсталлятор InnoSetup во время удаления.

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

  • Нет связанных вопросов^_^