Wix: How to set permissions for folder and all sub folders
I know how to set the permissions for a folder:
<DirectoryRef Id="ProgramFilesFolder"开发者_如何学JAVA>
<Directory Id="PHPFolder" Name="PHP">
<Component Id="PHP_comp" DiskId="1" Guid="*">
<CreateFolder>
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
However I need the permissions to be applied to all subfolders as well. Is this possible with out listing all the folders?
First of all, I would recommend you using PermissionEx instead. It is a standard WiX extension and it has one really huge advantage over Permission - it doesn't overwrite, but modifies ACLs. And by default, it applies permissions to the folder and all its descendant files and folders, so you don't have to specify anything extra.
Hope this helps.
I solved: different PermissionEx are defined in Wix and Util schema (Wix PermissionEx and Util Extension PermissionEx)
I used the Util version:
- Add a reference to WixUtilExtension assembly
- Add the UtilExtension namespace to the Wix tag:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
- Specify the Util PermissionEx version:
<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>
The answer above is correct, and you will set the permissions to all the folders and files in this folder.
Please note: The CreateFolder tag should be in a component, and this component must be added to a Feature.
Also, you have to add this to the command line of the compiler and the linker:
-ext WixUIExtension -ext WixUtilExtension
精彩评论