Я хочу выполнить пользовательское действие в установщике Windows (с помощью скрипта WiX), которое создает символические ссылки в конце установки. mklink требует прав администратора, поскольку установщик ограничивает. Это то, что я написал:WiX: сделать символическую ссылку с включенным UAC
<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 полностью отключен. Однако при включении UAC на любом уровне это пользовательское действие прекращается с
CAQuietExec: You do not have sufficient privilege to perform this operation.
, даже если я позвонил в окне согласия. Я попытался сменить Execute на отложенный, выдавать себя за безлимитный или изменить настройки 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>
Я попробовал ваше предложение, и получить ту же ошибку. Ниже приводится то, что я изменил: 1) свойства действий cmdline становятся Идентификатором действий exec; 2) Добавить Execute = "offferred" и Impersonate = "no" ко всем действиям exec; 3) исправить последовательность выполнения. Я подтвердил последовательность с Оркой. Все это до InstallFinalize. –