44 Stimmen

Wix: Berechtigungen für Ordner und alle Unterordner festlegen

Ich weiß, wie man die Berechtigungen für einen Ordner festlegt:

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

Allerdings müssen die Berechtigungen auch auf alle Unterordner angewendet werden. Ist dies möglich, ohne alle Ordner aufzulisten?

42voto

Yan Sklyarenko Punkte 30506

Zuallererst würde ich Ihnen empfehlen, die ErlaubnisEx stattdessen. Es handelt sich dabei um eine standardmäßige WiX-Erweiterung, die einen großen Vorteil gegenüber Permission hat: Sie überschreibt keine ACLs, sondern ändert sie. Und standardmäßig werden die Berechtigungen auf den Ordner und alle seine Nachfolgedateien und -ordner angewendet, so dass Sie nichts weiter angeben müssen.

Ich hoffe, das hilft.

36voto

Be.St. Punkte 3991

Ich habe es gelöst: in Wix und Util Schema sind unterschiedliche PermissionEx definiert ( Wix PermissionEx y Util-Erweiterung PermissionEx )

Ich habe die Util-Version verwendet:

  • Hinzufügen eines Verweises auf die Baugruppe WixUtilExtension
  • Fügen Sie den UtilExtension-Namensraum zum Wix-Tag hinzu:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  • Geben Sie die Util PermissionEx-Version an:
<CreateFolder Directory="DirectoryToManage">
    <util:PermissionEx User="Users" GenericAll="yes" />
</CreateFolder>

27voto

cdytoby Punkte 739
<DirectoryRef Id="INSTALLFOLDER">
        <Component Id="INSTALLFOLDER_Permission" Guid="*">
            <CreateFolder>
                <util:PermissionEx User="Users" GenericAll="yes"/>
            </CreateFolder>
        </Component>
    </DirectoryRef>

Die obige Antwort ist richtig, und Sie werden die Berechtigungen für alle Ordner und Dateien in diesem Ordner festlegen.

Bitte beachten Sie: Das CreateFolder-Tag sollte sich in einer Komponente befinden, und diese Komponente muss zu einem Feature hinzugefügt werden.

Außerdem müssen Sie Folgendes in die Befehlszeile des Compilers eingeben y den Linker:

-ext WixUIExtension -ext WixUtilExtension

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X