Принудительно выполнить одну установку с помощью Innosetup? - PullRequest
1 голос
/ 05 марта 2010

У нас есть приложение, которое мы лицензируем для отдельных компаний. Приложение настроено под их бренд; в основном это то же приложение, но с другим файлом темы. Мы генерируем отдельные установщики для каждого поставщика, поскольку каждому приложению требуются различные конфигурации (серверы для подключения, обновления и т. Д.).

Таким образом, каждый установщик содержит одно и то же скомпилированное приложение, но с разными конфигурациями. Все это управляется нашей системой сборки, поэтому добавление нового поставщика - это всего лишь вопрос создания новой темы и простого сценария включения для Inno Setup.

Наша проблема заключается в том, что мы хотим убедиться, что когда пользователь установит приложение от поставщика А, он не сможет установить его от поставщика Б, если он явно не удалит существующее приложение.

Есть ли в Inno Setup какой-либо параметр, который будет проверять, существует ли существующая установка (либо от того же производителя, либо от другого), и сообщать пользователю, что он должен удалить существующую установку?

Ответы [ 2 ]

2 голосов
/ 12 марта 2010

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

Таким образом, если у вас одинаковые AppId для всех ваших разных брендов, невозможно установить две конфигурации / марки в одной системе. Теперь вместо того, чтобы отменить текущую установку, вы, вероятно, должны просто сделать свой установщик достаточно умным, чтобы справиться с этим самостоятельно.

Используйте сценарии Inno Setup, чтобы проверить, существует ли предыдущая установка другой марки или обновляется текущая марка. Вы можете использовать функции поддержки SetPreviousData() и GetPreviousData(), чтобы сохранить некоторые данные в реестре, который является уникальным для бренда, и протестировать их в одной из функций события инициализации установки (см. Документацию). Если ранее сохраненные данные соответствуют марке, которая должна быть установлена, вы можете просто продолжить установку. Если это не так, вы можете попросить пользователя отменить или заменить установленную марку.

0 голосов
/ 05 марта 2010

вы можете вручную выбрать марку, которую хотите установить, но не можете установить марку, затем файл ...

только попросите пользователя выбрать марку .... никогда не предлагайте ему выбрать файл .. и добавьте двоичный файл diffrent с маркой diffrent ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...