Я хочу выполнить пользовательское действие в установщике Windows (со скриптом WiX), который создает символические ссылки в конце установки. mklink требует прав администратора, поскольку установщик ограничивает. Вот что я написал:
<CustomAction Id="mklink_cmdline" Property="QtExecCmdLine" Value='"[SystemFolder]cmd.exe" /c mklink "[SystemFolder]my_app.dll" "[INSTALLDIR]my_app.dll"' />
<CustomAction Id="mklink_exec" BinaryKey="WixCA" DllEntry="CAQuietExec" Return="ignore" />
...
<InstallExecuteSequence>
<Custom Action="mklink_cmdline" Before="InstallFinalize">
...
</Custom>
<Custom Action="mklink_exec" After="mklink_cmdline">
...
</Custom>
...
</InstallExecuteSequence>
Это прекрасно работает, если UAC полностью отключен. Однако при включении контроля учетных записей на любом уровне это настраиваемое действие завершается с
CAQuietExec: You do not have sufficient privilege to perform this operation.
, даже если я позволил в окне согласия. Я попытался изменить Выполнение на отложенное, Олицетворение на Нет или изменить InstallPrivileges пакета на повышенные, ни один из них не работает.
Любое предложение, которое я могу обойти? Спасибо!
Редактировать : исправлен код с отложенным настраиваемым действием
<CustomAction Id="mklink_cmdline" Property="mklink_exec" Value='"[SystemFolder]cmd.exe" /c mklink "[SystemFolder]my_app.dll" "[INSTALLDIR]my_app.dll"' />
<CustomAction Id="mklink_exec" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Impersonate="no" Return="ignore" />
...
<InstallExecuteSequence>
<Custom Action="mklink_exec" Before="InstallFinalize">
...
</Custom>
<Custom Action="mklink_cmdline" Before="mklink_exec">
...
</Custom>
...
</InstallExecuteSequence>