с использованием Wix 3.5 в Windows 2008 R2 x64
Я запускаю это как администратор, чтобы избежать каких-либо проблем с разрешением. Я создал установщик, который выполняет команду icacls, чтобы добавить пользователя в ACL файла c: \ windows \ system32 \ inetsrv \ config \ Administrative.config. Вот код Wixicacls запускаются из Wix CAQuietExec ведут себя иначе, чем при запуске из командной строки dos
<Property Id="QtExecExample" Value='"cmd" /c icacls "c:\windows\system32\inetsrv\config\administration.config" /Grant johndoe:M /T'/>
<CustomAction Id="QtExecExample" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="QtExecExample" Before='InstallFinalize' > NOT Installed</Custom>
</InstallExecuteSequence>
Ниже выход в MSI войти
MSI (ы) (44:88) [07: 51: 46: 872]: Выполнение ОП: CustomActionSchedule (Действие = QtExecExample, ActionType = 3073, Source = BinaryData, Target = CAQuietExec, CustomActionData = "cmd"/c icacls "c: \ windows \ system32 \ inetsrv \ config \ Administration.config"/Grant johndoe: M/T) MSI (s) (44:88) [07: 51: 46: 872]: Создание MSIHANDLE (795) типа 790536 для резьбы 1928
MSI (ы) (44:38) [07: 51: 46: 872]: Вызов удаленное пользовательское действие. DLL:
C: \ Windows \ Installer \ MSIFBCF.tmp, точка входа: CAQuietExec
MSI (ы) (44! 68) [07: 51: 46: 888]: Создание MSIHANDLE (796) типа 790531 для потока 2920
CAQuietExec: успешно обработано 0 файлов; Неудачная обработка 0 файлов
Как видите, файл не изменяется почти так, как если бы команда была проигнорирована. Пользователь не добавляется в ACL. Я знаю, что команда работает, потому что, если я запускаю команду из приглашения dos, я получаю следующее.
C: \ Users \ Administrator \ Desktop> CMD/с Icacls "C: \ Windows \ system32 \ Inetsrv \ Config \ administration.config"/Грант JohnDoe: M/T
обработанный файл: C: \ Windows \ system32 \ inetsrv \ config \ Administration.config
Успешно обработано 1 файл; Не удалось обработать 0 файлов
Похоже, что ACL для файлов в каталоге inetsrv \ config не может быть изменен, если команда запущена из WIX, но не знаете почему. Если команда работает через командную строку, то не должна ли она работать через Wix CAQuietExec? Кто-нибудь знает, что я делаю неправильно или что мне не хватает?