with tutorial prime msi instalador how create permissions wix installer windows-installer wix-extension

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