Permissions Wix:如何设置文件夹和所有子文件夹的权限

Permissions Wix:如何设置文件夹和所有子文件夹的权限,permissions,wix,installation,windows-installer,wix-extension,Permissions,Wix,Installation,Windows Installer,Wix Extension,我知道如何设置文件夹的权限: <DirectoryRef Id="ProgramFilesFolder"> <Directory Id="PHPFolder" Name="PHP"> <Component Id="PHP_comp" DiskId="1" Guid="*"> <CreateFolder> <Permission User="Everyone" GenericAll="yes" />

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

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


但是,我也需要将权限应用于所有子文件夹。如果不列出所有文件夹,是否可以执行此操作?

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


希望这有帮助。

我解决了:Wix和Util模式中定义了不同的PermissionEx(和)

我使用了Util版本:

  • 添加对WixUtilExtension程序集的引用
  • 将UtilExtension命名空间添加到Wix标记:

  • 指定Util PermissionEx版本:


你能举一个PermissionEx的例子吗?我在CreateFolder标记中使用它,但收到错误“缺少必需的属性SDDL”。我还发现User和GenericAll属性有一个“attributeisnotdeclared”错误。感谢这是因为您使用的是标准的
PermissionEx
元素,它从MSI 5.0开始就受支持。它具有不同的签名,并且需要SDDL属性。您应该像这样包括
UtilExtension
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension
并引用它,就像
在阅读您的评论之前,我写了回复。非常感谢你帮助了我。在一个房间里用过tag@YanSklyarenko考虑从评论中更新你的答案。一个人不需要阅读评论就能理解整个情况。此外,您的回答非常简洁,举个例子会有所帮助。:)只使用
PermissionEx
不需要添加对
WixUIExtension
的引用,而是+1来提供命令行参数,以便像我这样的WiX新手也能理解添加这样的参数。他这样做是因为他使用的是WixUIExtension中指定的PermissionEx,不是以SDDL作为属性的基于MSI的PermissionEx。它们具有相同的名称,但非常不同。我是否需要在任何地方引用该组件Id
INSTALLFOLDER\u权限
?这不会编译。错误如下:Component/@Guid属性的值“*”对此组件无效,因为它不符合自动生成Guid的条件。将目录用作键路径或包含ODBCDataSource子元素的组件不能使用自动生成的guid。(...)
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<CreateFolder Directory="DirectoryToManage">
    <util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>
<DirectoryRef Id="INSTALLFOLDER">
        <Component Id="INSTALLFOLDER_Permission" Guid="*">
            <CreateFolder>
                <util:PermissionEx User="Users" GenericAll="yes"/>
            </CreateFolder>
        </Component>
    </DirectoryRef>
-ext WixUIExtension -ext WixUtilExtension