web-dev-qa-db-fra.com

Wix: comment définir les autorisations pour le dossier et tous les sous-dossiers

Je sais comment définir les autorisations pour un dossier:

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

Cependant, j'ai également besoin que les autorisations soient appliquées à tous les sous-dossiers. Est-ce possible sans lister tous les dossiers?

38
Mike

Tout d'abord, je vous recommanderais d'utiliser PermissionEx à la place. C'est une extension WiX standard et elle a un avantage vraiment énorme par rapport à l'autorisation - elle n'écrase pas, mais modifie les ACL. Et par défaut, il applique des autorisations au dossier et à tous ses fichiers et dossiers descendants, vous n'avez donc rien à ajouter.

J'espère que cela t'aides.

38
Yan Sklyarenko

J'ai résolu: différents PermissionEx sont définis dans le schéma Wix et Util ( Wix PermissionEx et til Extension PermissionEx )

J'ai utilisé la version Util:

  • Ajouter une référence à l'assembly WixUtilExtension
  • Ajoutez l'espace de noms UtilExtension à la balise Wix:
<Wix xmlns="http://schemas.Microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.Microsoft.com/wix/UtilExtension">
  • Spécifiez la version Util PermissionEx:
<CreateFolder Directory="DirectoryToManage">
    <util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>
28
Be.St.
<DirectoryRef Id="INSTALLFOLDER">
        <Component Id="INSTALLFOLDER_Permission" Guid="*">
            <CreateFolder>
                <util:PermissionEx User="Users" GenericAll="yes"/>
            </CreateFolder>
        </Component>
    </DirectoryRef>

La réponse ci-dessus est correcte et vous définirez les autorisations pour tous les dossiers et fichiers de ce dossier.

Remarque: la balise CreateFolder doit se trouver dans un composant et ce composant doit être ajouté à une fonctionnalité.

En outre, vous devez l'ajouter à la ligne de commande du compilateur et l'éditeur de liens:

-ext WixUIExtension -ext WixUtilExtension
18
cdytoby