我知道如何设置文件夹的权限:
<DirectoryRef Id="ProgramFilesFolder">
<Directory Id="PHPFolder" Name="PHP">
<Component Id="PHP_comp" DiskId="1" Guid="*">
<CreateFolder>
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
但是,我还需要将权限应用于所有子文件夹。是否可以列出所有文件夹?
首先,我建议你改用PermissionEx。它是一个标准的WiX扩展,它比Permission有一个非常大的优势 - 它不会覆盖,但会修改ACL。默认情况下,它会将权限应用于文件夹及其所有后代文件和文件夹,因此您无需指定任何额外内容。
希望这可以帮助。
我解决了:在Wix和Util架构中定义了不同的PermissionEx(Wix PermissionEx和Util Extension PermissionEx)
我使用了Util版本:
<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>
上面的答案是正确的,您将设置该文件夹中所有文件夹和文件的权限。
请注意:CreateFolder标记应位于组件中,并且必须将此组件添加到功能部件中。
此外,您必须将此添加到编译器和链接器的命令行:
-ext WixUIExtension -ext WixUtilExtension