Как применить разрешения для папок в WiX, сохранив существующие разрешения, но без рекурсии?

Следующее будет применять (изменять) разрешения рекурсивно и уважать текущие разрешения:

<util:PermissionEx User="[MYUSER]" Domain="[NT_DOMAIN]" GenericRead="yes" GenericWrite="yes" GenericExecute="yes" Delete="yes" DeleteChild="yes" />

Но я не хочу применять это рекурсивно!

Я хочу это не рекурсивно, то есть только эта папка и никаких детей.

(Я считаю, что более старый элемент очищает наследование разрешений от родительской папки, что означает, что это не подходит для моих целей, так как я должен сохранить существующие разрешения).

Есть ли способ сказать PermissionsEx, чтобы не применять разрешения рекурсивно? Могу ли я каким-то образом объединить узлы PermissionEx и Permission, чтобы получить желаемый эффект? Или это мой единственный способ выполнить вызов командной строки с настраиваемым действием для cacls.exe?

1 ответ

Решение

Я не уверен, что какой-либо из трех встроенных шаблонов (два от MSI и один от расширения WiX) справятся с этим сценарием. FWIW, я думаю, что на самом деле это не функция объекта, для которого вы устанавливаете разрешения, а функция всех дочерних объектов, которые были выбраны для наследования. Другими словами, родитель не предписывает распространение, которое дети принимают в наследство.

Таким образом, вам, возможно, придется поразмышлять над всеми детьми, а затем настроить их на блокирование распространения. Усилие и риск велики, поэтому я удивляюсь, почему это действительно необходимо, и если вы не можете просто создать свой собственный дочерний каталог и установить там разрешения таким образом, чтобы вам не пришлось беспокоиться об этой проблеме.

Другие вопросы по тегам