Я хочу выполнить настраиваемое действие в установщике 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 полностью отключен. Однако при включении UAC на любом уровне это настраиваемое действие не работает с
CAQuietExec: You do not have sufficient privilege to perform this operation.
даже если я разрешил в окне согласия. Я попытался изменить Execute на отложенный, Impersonate на no или изменить 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>