У меня есть установка, созданная с помощью InstallShield 2015 Basic MSI.
Предположим, что в этой настройке пользователь может выбрать, хочет ли он установить клиент или сервер, для каждого типа установки (клиент или сервер) есть несколько функций, которые он может выбрать для установки.
Теперь пользователь выбирает установку клиента и включает в себя 2 функции под ним, Если он снова запустит настройку с пользовательским интерфейсом, он войдет в режим обслуживания, чтобы позволить ему добавить больше возможностей для Клиента.InstallShield Блок, устанавливающий тот же MSI дважды из командной строки
Моя проблема заключается в том, что он снова может запустить такую же настройку из командной строки (msiexec/I) и попытаться установить тип установки сервера, в настоящее время установка не блокирует и не предотвращает ее, и это может привести к повреждению настройки клиента. уже установлены.
Итак, я должен написать CA, который будет проверять, установлена ли текущая установка, и проверить, какое действие пользователь пытается запустить из командной строки, и если это не удалить блок (он все равно должен поддерживать запуск удаления из командной строки).
Правильно ли эта логика? Как я могу узнать, что пользователь команды запускает из командной строки? что он запускает msiexec/I и не пытается удалить из командной строки.
Интересно, существует ли встроенная версия InstallShield \ MSI в свойстве \ свойство, чтобы предотвратить установку одной и той же MSI дважды из командной строки?
Вы хотите, чтобы функции сервера и клиента были взаимоисключающими как от пользовательского интерфейса, так и от командной строки? –
Правильно, пользователь может установить клиент или сервер, из пользовательского интерфейса. Я могу предотвратить установку как из командной строки, так и не из командной строки. Я не знаю, как проверить, какое действие пользователь запускает из командной строки, это удалить \ repair, которые разрешены или установить который не. – Epligam
Я бы написал пользовательское действие ошибки типа 19, которое блокирует установку, если пользователь запрашивает две конфликтующие функции, которые необходимо установить, или пользователь запрашивает установку одной функции, которая конфликтует с другой установленной программой. Используйте запрос функции и установленные операторы состояния в условных выражениях и назначьте его после CostFinalize. –