2017-02-05 3 views
0

У меня есть установка, созданная с помощью InstallShield 2015 Basic MSI.
Предположим, что в этой настройке пользователь может выбрать, хочет ли он установить клиент или сервер, для каждого типа установки (клиент или сервер) есть несколько функций, которые он может выбрать для установки.
Теперь пользователь выбирает установку клиента и включает в себя 2 функции под ним, Если он снова запустит настройку с пользовательским интерфейсом, он войдет в режим обслуживания, чтобы позволить ему добавить больше возможностей для Клиента.InstallShield Блок, устанавливающий тот же MSI дважды из командной строки

Моя проблема заключается в том, что он снова может запустить такую ​​же настройку из командной строки (msiexec/I) и попытаться установить тип установки сервера, в настоящее время установка не блокирует и не предотвращает ее, и это может привести к повреждению настройки клиента. уже установлены.

Итак, я должен написать CA, который будет проверять, установлена ​​ли текущая установка, и проверить, какое действие пользователь пытается запустить из командной строки, и если это не удалить блок (он все равно должен поддерживать запуск удаления из командной строки).

Правильно ли эта логика? Как я могу узнать, что пользователь команды запускает из командной строки? что он запускает msiexec/I и не пытается удалить из командной строки.

Интересно, существует ли встроенная версия InstallShield \ MSI в свойстве \ свойство, чтобы предотвратить установку одной и той же MSI дважды из командной строки?

+0

Вы хотите, чтобы функции сервера и клиента были взаимоисключающими как от пользовательского интерфейса, так и от командной строки? –

+0

Правильно, пользователь может установить клиент или сервер, из пользовательского интерфейса. Я могу предотвратить установку как из командной строки, так и не из командной строки. Я не знаю, как проверить, какое действие пользователь запускает из командной строки, это удалить \ repair, которые разрешены или установить который не. – Epligam

+0

Я бы написал пользовательское действие ошибки типа 19, которое блокирует установку, если пользователь запрашивает две конфликтующие функции, которые необходимо установить, или пользователь запрашивает установку одной функции, которая конфликтует с другой установленной программой. Используйте запрос функции и установленные операторы состояния в условных выражениях и назначьте его после CostFinalize. –

ответ

0

Я с трудом понимаю вас. Надеюсь, мой ответ будет соответствовать вашим потребностям.

Когда вы впервые запускаете MSI, он находится в режиме установки. Когда вы запускаете его снова, это режим обслуживания. В зависимости от того, как вы создали ваш установщик, вы должны получить диалог с кнопками «Ремонт», «Изменить» или «Удалить». Кнопка «Изменить» позволяет пользователю добавлять дополнительные функции или удалять функции. Это можно сделать также из командной строки, используя свойства ADDLOCAL и REMOVE. В свойствах содержится список имен функций с разделителями.

Одно место люди совершают ошибку при использовании условий Не установлено | REMOVE = "ALL" в своих пользовательских действиях. Это не учитывает тот факт, что у вас может быть несколько функций и вернуться в режим обслуживания и перенастроить приложение. MSI имеет функции оценки компонентов и компонентов и оценки состояния действий, которые могут использоваться в условиях, которые лучше подходят для этой работы.

Update:

Я хотел бы написать Type 19 ошибок пользовательское действие, которое блокирует установку, если пользователь запрашивает две противоречащие друг другу функции должны быть установлены или пользователь запрашивает одну возможность установить, что конфликты с другой особенностью который установлен. Используйте запрос функции и установленные операторы состояния в условных выражениях и назначьте его после CostFinalize.

+0

Я обновил свой вопрос, надеюсь, теперь это станет более ясным. – Epligam

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