У меня есть установщик с InstallPrivileges="elevated"
. Я включаю в таблице файлов в App.exeПовышенный установщик с повышенным пользовательским действием не поднимает исполняемый файл
<Component Id="myapp" Guid="*">
<File Id="myapp" Source="myapp.exe"/>
</Component>
используя эти CA, чтобы запустить его в elevcated состоянии:
<CustomAction Id="SetProp" Property="Launch" Value =""[INSTALLDIR]myapp.exe""/>
<CustomAction Id="Launch" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
запланирован так:
<Custom Action="SetProp" Before="Launch">NOT Installed</Custom>
<Custom Action="Launch" Before="InstallFinalize">NOT Installed</Custom>
но согласно Uachelper class (C#) и отсутствующий результат, этот процесс не повышен, но подробный журнал и журнал myapp.exe не показывают ошибок.
Я также попытался использовать пользовательское действие типа 2 (binarykey и т. Д.), Пользовательское действие типа 18 (файл и т. Д.) И включить app.manifest в myapp.exe с обязательным администратором.
Ничего не работало, чтобы поднять myapp.exe .. во время установки.
Обходной путь, который я нашел, заключается в том, чтобы запустить myapp.exe вручную после завершения установки (перейдите к [INSTALLDIR] и doubleclick myapp.exe, предложите uac и т. Д.), Но я хочу этого избежать. Я также думал о попытке использовать runas
, но не уверен, что это сработает или это возможно.
Все это основано на http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html, https://stackoverflow.com/a/10028939/4096653 и еще много вопросов здесь, на SO.
Что мне не хватает или что еще я могу попробовать?
Чтобы уточнить: у меня есть все требования для повышенного центра сертификации, и мой MSI также запускается как администратор. Но даже при этом тип 2, тип 18 CA и quiet exec не работают, чтобы поднять myapp.exe. Чтобы он был повышен как текущий пользователь (а не системная учетная запись), я должен создать еще один CA с высоким разрешением, который будет вызывать приложение Launcher. Это приложение для запуска будет вызывать myapp.exe, используя shellexecute, запрашивая текущего пользователя с окнами UAC. Правильно ли я это понял? – sceiler
Это звучит правильно - это должно быть довольно легко сделать проверку работоспособности, и вам нужно будет решить, должна ли продолжаться вся установка, когда ваша пусковая установка завершена, или если запускающий ЦС должен ждать. – PhilDW