Установите выпуск пользовательских действий Shield 2009 Premier в Vista Home / Premium / Ultimate

StackOverflow https://stackoverflow.com/questions/876734

  •  22-08-2019
  •  | 
  •  

Вопрос

Окружающая среда:Установить Shield 2009 Premier, Vista (Home / Premium, Ultimate)

У меня есть пользовательское действие в Install Shield 2009, которое срабатывает во время установки.Если setup.exe выполняется нормально, но при запуске MyApplication.msi в Vista (обратите внимание, что в других ОС пользовательские действия работают просто отлично) отображается исключение, при выполнении пользовательского действия.Пользовательское действие - это просто выполнение exe-файла с аргументами командной строки.

Этот exe-файл отлично выполняется индивидуально в этой ОС.Но когда MyApplication.msi хочет запустить его, оно показывает исключение.

Я думаю, что:MyApplication.msi не может предоставить этому пользовательскому действию (exe-файлу) надлежащие привилегии (административные) для запуска.Но setup.exe могу.

Как это можно решить ...?


В мастере пользовательских действий для моего пользовательского действия в качестве значения "Выполнение в скрипте" я выбрал "Отложенное выполнение в системном контексте".

Это было полезно?

Решение

Вы не указали, но похоже, что у вашего setup.exe есть манифест, для которого требуются права администратора (если вы получаете приглашение UAC при запуске setup.exe, это так).Также кажется вероятным, что исполняемый файл, который вы пытаетесь запустить из своего пользовательского действия, имеет аналогичные требования к административным привилегиям.Пользовательское действие exe в MSI использует CreateProcess, который не может быть повышен.

Если ваше действие выполняется в последовательности пользовательского интерфейса, вам нужно каким-то образом использовать ShellExecute или ShellExecuteEx - это можно сделать с помощью пользовательского действия InstallScript, использующего LaunchApplication с флагом LAAW_OPTION_USE_SHELLEXECUTE, или с помощью C ++, который вызывает ShellExecuteEx напрямую.

Если ваше действие выполняется в последовательности выполнения, вы должны пометить его как "Отложенное в системном контексте", чтобы для начала оно запускалось из контекста с повышенными правами.Обычно это предпочтительнее (по крайней мере, с точки зрения пользовательского опыта), поскольку позволяет избежать дополнительного запроса UAC, который будет отображаться другим методом.Однако любое отложенное действие имеет ограничения (например, минимальный доступ к собственности), с которыми вам, возможно, потребуется ознакомиться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top