Подтвердить что ты не робот

Wix: Как установить разрешения для папки и всех подпапок

Я знаю, как установить разрешения для папки:

<DirectoryRef Id="ProgramFilesFolder">
  <Directory Id="PHPFolder" Name="PHP">
    <Component Id="PHP_comp" DiskId="1" Guid="*">
      <CreateFolder>
        <Permission User="Everyone" GenericAll="yes" />
      </CreateFolder>

Однако мне нужны разрешения, которые будут применяться ко всем подпапкам. Возможно ли это с перечислением всех папок?

4b9b3361

Ответ 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