Создание базового MSI, который вызывает другую установку MSI - PullRequest
1 голос
/ 04 октября 2011

Я задавал этот точный вопрос на форуме Flexara, но до сих пор не получил ответа, поэтому хочу задать его здесь.

В настоящее время у нас есть проект InstallScript, который работает нормально.Полученную настройку можно сделать без присмотра / беззвучно.В этой настройке мы имеем некоторые функции и запускаем ряд сторонних установок (которые являются обязательным условием для запуска нашего программного обеспечения).Однако у нас есть клиенты, которым нужен файл MSI, и поэтому мы прибегли к типу проекта Basic MSI.

Установка выполнена без особых хлопот (я довольно новичок в InstallShield) и могу сгенерировать.exe и .msi из этого проекта.Однако единственная проблема, которую я оставил, - это вызов одного из сторонних установщиков.Этот сторонний установщик (созданный с помощью NSIS), в свою очередь, вызывает другой установщик, основанный на MSI.

В результате возникает ошибка 1500 - тот факт, что вы не можете запустить установку типа msi, пока запущена другая.

Я попытался запланировать CA (которые используются для вызова сторонних установщиков) как первое действие и как последнее, но безуспешно.Прежде чем прибегнуть к более неортодоксальным сценариям (например, создать задачу в диспетчере задач Windows, которая запускается после завершения работы нашего установщика, или при следующей перезагрузке и принудительной перезагрузке - что не нравится нашим клиентам) или сценарий, который мы не связываем«ошибочный» установщик (нам действительно нравится иметь возможность передавать один инсталлятор, а не несколько), я подумал, что спрашиваю ваше мнение.

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

Остались ли у нас какие-либо варианты для создания единого установщика MSI, способного вызвать этот третий-сторонний установщик (который в свою очередь вызывает установщик msi)?

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Поскольку загрузчик EXE недопустим, существует только одно решение:

  • сохранить необходимые установщики в таблице Binary вашего MSI
  • создать несколько пользовательских действий , которые извлекают их из этой таблицы и запускают их
  • планируют их в InstallUISequence , например, прямо перед диалоговым окном хода выполнения
  • используют выполняет поиск , чтобы определить, установлены ли необходимые предварительные условия
  • обусловливает ваши пользовательские действия результатами поиска

Как правило, их необходимо запускать во время пользовательского интерфейса установки.Это не будет работать, если вы запустите их во время InstallExecuteSequence.

Я не думаю, что базовый проект MSI поддерживает это, но он может поддерживаться более продвинутыми типами проектов.Другие средства разработки настроек предоставляют прямую поддержку для этого.

0 голосов
/ 08 декабря 2011

Вы можете попробовать функцию InstallShield "Chained .msi Package".

...