2016-03-08 9 views
4

У меня есть сценарий настройки для моего собственного Windows EXE с использованием InstallShield Premium 2012. Однако мой EXE в конечном итоге полагается на компоненты присутствия, предоставленные Microsoft EXE, называемые AccessDatabaseEngine .Exe.MSI Error 1500: InstallShield Premium не может выполнить дополнительную встроенную установку EXE

Чтобы запустить этот исполняемый файл AccessDatabaseEngine.exe с моей установкой, я добавил его как встроенный двоичный ресурс, а затем использовал мастер настраиваемых действий для запуска AccessDatabaseEngine.exe как «Отложенное выполнение в системном контексте» в качестве «После публикации данных», Установите Exec Sequence. Это работало так, как ожидалось: AccessDatabaseEngine.exe запускается после того, как моя установка завершает большую часть своей работы.

Однако, как только я вижу пользовательский интерфейс для AccessDatabaseEngine.exe и подтверждаю его приглашения пользовательского интерфейса, я вижу «Ошибка 1500», в котором говорится, что выполняется другая установка.

Я понимаю, что два пакета MSI не могут работать одновременно, если вы не настроите реестр, чтобы разрешить его, что я не хочу делать на рабочих станциях моих клиентов, которые являются 32-разрядными машинами Windows 7.

Я хотел бы, чтобы успешно реализовать один из следующих вариантов:

один вариант: Попросите пользователя запустить мою программу Setup.exe, которая в какой-то момент запуска Microsoft AccessDatabaseEngine.exe без создания каких-либо сообщение об ошибке. Я просто не знаю, как это сделать, не вызывая появления ошибки 1500 ...

ВАРИАНТ ДВА: Если можно каким-либо образом обернуть файл Setup.exe вместе с Microsoft AccessDatabaseEngine.exe в один EXE, тогда я может предоставить моим конечным пользователям этот единственный EXE, и он сначала выполнит встроенный файл Setup.exe, и, как только это будет сделано, он выполнит AccessDatabaseEngine.exe.

Я понимаю, что я могу реализовать OPTION TWO в качестве .bat (пакетного) файла, но я хочу доставить только один EXE для моих конечных пользователей и установить этот единственный EXE, необходимый для правильной работы моего программного обеспечения.

Любые идеи?

ответ

0

По-видимому, существуют ДВА настройки, которые определяют, заканчивается ли предварительное условие в отдельной отдельной папке (папке выпуска под папкой, содержащей файл setup.exe), или если она внедрена в один файл setup.exe.

Первый параметр доступен в конструкторе установки в разделе «Данные приложения» | Практические результаты.Найдите предварительное условие PRQ, указанное там с галочкой, щелкните правой кнопкой мыши и просмотрите свойства. Вы увидите раскрывающееся меню Build Location - одним из вариантов является Extract From Setup.exe. Так меня установили.

Но тогда есть ВТОРАЯ настройка, и это находится в разделе «Медиа-конструктор установщика» в разделе «Релизы». В моем проекте у меня был root Release, а затем ветвь PROJECT_ASSISTANT, а затем ветвь SINGLE_EXE_IMAGE. Я нажал SINGLE_EXE_IMAGE и просмотрел его лист свойств. В этом списке находится запись в нижней части списка, в которой указано «Место установки предустановки». Дважды щелкните правый столбец (где указано его значение), и вы увидите там выбор, который также говорит «Извлечь из Setup.exe».

Этот второй параметр OVERRIDES - тот, который указан в разделе «Конечные результаты», и поэтому он не работал, как указано в настройке предварительного условия. Это потому, что я использовал настройку «Копировать из исходного материала».

Итак, если у вас есть несколько предварительных условий, и вы хотите, чтобы все они были включены в файл setup.exe, тогда можно использовать настройки Extract From Setup.exe. Но если вы предпочитаете настраивать, где заканчивается предварительное условие, затем выберите опцию «Следовать за отдельными выборами» в разделе «Место установки предварительных условий выпуска», а затем убедитесь, что вы выбрали правильный вариант для каждого из ваших предварительных условий.

Даже если другие предложили сделать это в предыдущих ответах, эти объяснения были непонятны мне, и я потратил много времени, прежде чем, в конечном счете, обнаружил, что происходит на самом деле.

2

Что вы здесь описали, это именно то, для чего предназначены предпосылки InstallShield. Запустите предварительный редактор из меню «Сервис» и добавьте файлы, командные строки и условия, которые несут, устанавливают и обнаруживают установленный след AccessDatabaseEngine.exe; затем используйте представление «Распространяемые материалы», чтобы включить это новое предварительное условие в ваш проект.

Как только вы это сделаете правильно, установщик установки InstallShield проверит, присутствует ли необходимый предварительный след, а если нет, он выполнит необходимое условие, как описано. Поскольку это делается до того, как он запустит основной файл .msi, он избегает одновременного установки двух файлов .msi.

См. Defining InstallShield Prerequisites, Creating an InstallShield Prerequisite и Setting Installation Conditions for an InstallShield Prerequisite в справке для более подробной информации. Для определения, где они находятся в вашем встроенном установщике, см. Specifying the Run-Time Location for InstallShield Prerequisites at the Release Level или Specifying a Run-Time Location for a Specific InstallShield Prerequisite. Обратите внимание, что при добавлении зависимостей предварительного условия они часто используют настройку уровня выпуска, поэтому, если вам действительно не нужна комбинация местоположений, лучше всего указать это в выпуске.

+0

Спасибо - это приемлемое решение, но AccessDatabaseEngine.exe попадает в папку как отдельный EXE, и (в идеале) мне нужен один файл Setup.exe без внешних зависимостей; также, у меня есть пароль в моем Setup.exe (прямой редактор | ISRelease | столбец паролей), а подсказка пароля появляется до появления Setup.exe, а затем снова до того, как будет запущено предварительное условие AccessDatabaseEngine.exe (в идеале мне бы понадобилось приглашение pw появляться только один раз). В этот момент я буду открыт для стороннего инструмента, который может обернуть файл Setup.exe и папку с другим exe, если такой инструмент существует. – Jazimov

+0

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

+0

Что касается внешнего файла, то свойства redistributables позволяют выбрать либо локальный путь, либо местоположение в Интернете (что не является для меня вариантом из-за клиентских брандмауэров и ограниченных прокси); релиз позволяет мне изменить имя/расположение AccessDatabaseEngine.exe, но я не вижу способа его встраивания. В идеале я хотел бы добавить AccessDatabaseEngine.exe в качестве двоичного ресурса, а затем программа установки извлечет его, чтобы он мог выполнить его как необходимое условие. Это позволит мне предоставить один файл setup.exe моему клиенту. – Jazimov