permissions - prime - wix msi tutorial
Wix: cómo establecer permisos para la carpeta y todas las sub carpetas (3)
Sé cómo configurar los permisos para una carpeta:
<DirectoryRef Id="ProgramFilesFolder">
<Directory Id="PHPFolder" Name="PHP">
<Component Id="PHP_comp" DiskId="1" Guid="*">
<CreateFolder>
<Permission User="Everyone" GenericAll="yes" />
</CreateFolder>
Sin embargo, necesito que los permisos se apliquen a todas las subcarpetas también. ¿Es esto posible sin enumerar todas las carpetas?
En primer lugar, le recomendaría que use PermissionEx lugar. Es una extensión de WiX estándar y tiene una gran ventaja sobre el permiso: no sobrescribe, sino que modifica las ACL. Y de forma predeterminada, aplica permisos a la carpeta y todos sus archivos y carpetas descendientes, por lo que no tiene que especificar nada adicional.
Espero que esto ayude.
Lo solucioné: diferentes PermisosEx están definidos en Wix y en el esquema Util ( Wix PermissionEx y PermissionEx )
Usé la versión Util:
- Agregue una referencia al ensamblaje WixUtilExtension
- Agregue el espacio de nombres UtilExtension a la etiqueta Wix:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
- Especifique la versión Util PermissionEx:
<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>
La respuesta anterior es correcta y establecerá los permisos para todas las carpetas y archivos en esta carpeta.
Pero tenga en cuenta: la etiqueta CreateFolder debe estar en un componente y este componente debe agregarse en la característica.
Además, debe agregar esto a la línea de comando del compilador y del enlazador:
-ext WixUIExtension -ext WixUtilExtension