2010-11-10 4 views
2

Мне нужно настроить условие запуска в моем установщике, чтобы предотвратить запуск пользователем файла MSI напрямую, если они не запускают удаление. (Все другие типы установки должны запускаться из приложения bootstrap, чтобы он мог убедиться, что все предварительные условия выполнены.)Что нужно проверить, чтобы убедиться, что выполняется Uninstall?

Какие условия необходимо проверить для этого? Я пробовал REMOVE="ALL" OR BOOTSTRAP (BOOTSTRAP - это свойство, которое мое приложение bootstrap определяет в командной строке при запуске MSI), но это также срабатывает при установке Repair, чего я не хочу.

+0

Вы попробовали 'MaintenanceMode =" Удалить "'? –

+0

Это не работает, когда MSI запускается для удаления установки с панели управления (или напрямую). – RobH

ответ

0

Насколько я могу судить, до сих пор не существует способа предотвратить запуск ремонтных установок при запуске MSI напрямую, поэтому мне пришлось добавить OR REINSTALL="ALL" в мое состояние запуска. Если кто-то знает способ разрешить ремонт только через загрузчик, объяснение будет очень оценено.

+0

Это будет принятый ответ, если только до тех пор, пока что-то не появится, на самом деле делает то, что я хочу сделать. – RobH

0

Лично я об этом по-другому. Я ожидаю, что пользователь может запустить MSI, а не SETUP.EXE, поэтому я намеренно дублирую все мои предварительные проверки bootstrapper в MSI, используя AppSearch и LaunchConditions. Таким образом, если они либо пропустят загрузчик, либо каким-то образом выйдут из строя, моя MSI все еще может решить проблему.

Я также придерживаюсь практики добавления или установки в моих условиях, чтобы отсутствующий prereq не мешал удалению.

+0

Это нормально для простого установщика. Однако шахта сложнее. Он устанавливает набор программ, и загрузчик должен не только удостовериться, что установлены prereq, он должен собрать всю информацию, такую ​​как то, что пользователь хочет установить (чтобы загрузчик мог определить, какие предварительные требования необходимы) и информацию о конфигурации для того, что должно быть установлено. За исключением удалений, мой установщик ** должен ** пройти через загрузчик. – RobH

+0

Я нашел это прекрасно для очень сложных инсталляторов. У моего типичного загрузчика есть десятки пакетов COTS \ GOTS, добавляющих до нескольких гигабайт. Я поддерживаю несколько продуктов за одну единственную многоразовую базовую линию с примерно 100 пакетами (25 ГБ), которые можно включить в продукт. –

+0

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

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