2013-12-04 4 views
0

У меня есть приложение для форм Windows (Add-In Express Solution), для которого я создал проект установки InstallShield, который использует настраиваемые действия (Auto, созданный Add-In Express) , Пользовательские действия запускают исполняемые файлы (исполняемые файлы используются для регистрации Add In).InstallShield Professional Edition - Custom Action - Setup.exe vs MSI

Когда я создаю файл setup.exe для проекта, все работает хорошо. Выполняются пользовательские действия, и надстройка устанавливается правильно.

Когда я создаю файл msi (снимите флажок «Создать установочный пусковой механизм» в Мастере выпуска Installshield), пользовательские действия не выполняются (надстройка не установлена, но программа отображается в списке программ в Панель управления), когда я пытаюсь установить продукт.

Должен ли я использовать версию setup.exe при использовании пользовательских действий, или я не правильно настраиваю свой проект при попытке сгенерировать файл msi?

+1

Запустите MSI с помощью «/ L C: \ LOG.txt». В Logfile вы найдете свой CustomAction «Пропуск действия: ...» и почему действие не выполняется. (например, Setup.exe передает параметр в msi:/v «RUNCA = true». Без Setup.exe «RUNCA» является ложным) – Marc

+0

Благодарим вас за помощь Марка. Журналы показывают, что пользовательские действия запускаются. Я заметил, что когда я запускаю MSI через командную строку в режиме администратора, он работает нормально. Если я запустил MSI через командную строку без прав администратора, он попросит меня о привилегиях, но не будет устанавливать добавление, и в журналах нет ошибок. Я думаю, что с этим я смогу. – DDA

ответ

3

Разница между запуском MSI напрямую или использованием файла Setup.exe - это точка в последовательности, в которой права пользователя становятся повышенными.

Если вы запустите Exe, вы, вероятно, получите всплывающее окно UAC, запрашивающее больше прав, нажмите «ОК», и все будет работать с повышенными правами (с правами администратора).

Если вы запустили его из уже приведенной командной строки, все будет работать с повышенным уровнем.

, если вы запустите MSI обычно (например, дважды щелкните на нем) он будет проходить через весь installUIsequence то она будет проходить через последовательность installexecute и , когда он достигает InstallInitialize Действие он будет запрашивать повышенные права.

и как только InstallFinalize действие запускается, права отбрасываются.

поэтому вам нужно разместить пользовательские действия, которые необходимы права администратора после InstallInitialize и перед действием InstallFinalize

0

То, что я в конечном итоге делает, чтобы решить мой вопрос задать собственные действия для запуска в системном контексте.

In-Script Execution: Deferred Execution in System Context 

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

  • Нет связанных вопросов^_^