41

我知道如何设置文件夹的权限:

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

但是,我也需要将权限应用于所有子文件夹。如果不列出所有文件夹,这可能吗?

4

3 回答 3

40

首先,我建议您改用PermissionEx。它是一个标准的 WiX 扩展,与 Permission 相比,它有一个非常巨大的优势——它不会覆盖,而是修改 ACL。默认情况下,它会将权限应用于文件夹及其所有后代文件和文件夹,因此您无需指定任何额外内容。

希望这可以帮助。

于 2010-11-25T07:20:57.873 回答
32

我解决了:在 Wix 和 Util 模式中定义了不同的 PermissionEx(Wix PermissionExUtil 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>
于 2012-12-04T14:24:47.137 回答
23
<DirectoryRef Id="INSTALLFOLDER">
        <Component Id="INSTALLFOLDER_Permission" Guid="*">
            <CreateFolder>
                <util:PermissionEx User="Users" GenericAll="yes"/>
            </CreateFolder>
        </Component>
    </DirectoryRef>

上面的答案是正确的,你会设置这个文件夹中所有文件夹和文件的权限。

请注意: CreateFolder 标签应该在一个组件中,并且这个组件必须添加到一个 Feature 中。

此外,您必须将其添加到编译器链接器的命令行:

-ext WixUIExtension -ext WixUtilExtension
于 2014-03-29T19:35:24.637 回答