Wix: Как установить разрешения для папки и всех подпапок
Я знаю, как установить разрешения для папки:
<DirectoryRef Id="ProgramFilesFolder">
<Directory Id="PHPFolder" Name="PHP">
<Component Id="PHP_comp" DiskId="1" Guid="*">
<CreateFolder>
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
Однако мне нужны разрешения, которые будут применяться ко всем подпапкам. Возможно ли это с перечислением всех папок?
Ответы
Ответ 1
Прежде всего, я бы рекомендовал вместо этого использовать PermissionEx. Это стандартное расширение WiX, и у него есть одно действительно огромное преимущество перед разрешением - оно не перезаписывается, а изменяет ACL. И по умолчанию он применяет разрешения к папке и всем ее дочерним файлам и папкам, поэтому вам не нужно указывать ничего лишнего.
Надеюсь, что это поможет.
Ответ 2
Я решил: разные PermissionEx определены в схеме Wix и Util (Wix PermissionEx и Util Extension PermissionEx)
Я использовал версию Util:
- Добавить ссылку на сборку WixUtilExtension
- Добавьте пространство имен UtilExtension в тег Wix:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
- Укажите версию Util PermissionEx:
<CreateFolder Directory="DirectoryToManage">
<util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>
Ответ 3
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="INSTALLFOLDER_Permission" Guid="*">
<CreateFolder>
<util:PermissionEx User="Users" GenericAll="yes"/>
</CreateFolder>
</Component>
</DirectoryRef>
Правильный ответ, и вы установите разрешения для всех папок и файлов в этой папке.
Но обратите внимание: тег CreateFolder должен быть в компоненте, и этот компонент необходимо добавить в Feature.
Кроме того, вы должны добавить это в командную строку компилятора и компоновщика:
-ext WixUIExtension -ext WixUtilExtension