web-dev-qa-db-ja.com

Wix:フォルダーとすべてのサブフォルダーのアクセス許可を設定する方法

フォルダーのアクセス許可を設定する方法を知っています。

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

ただし、すべてのサブフォルダーにも権限を適用する必要があります。これは、すべてのフォルダーを一覧表示せずに可能ですか?

38
Mike

まず、代わりに PermissionEx を使用することをお勧めします。これは標準のWiX拡張であり、Permissionよりも非常に大きな利点があります。上書きはしませんが、ACLを変更します。また、デフォルトでは、フォルダーとそのすべての子孫ファイルおよびフォルダーにアクセス許可を適用するので、追加で何も指定する必要はありません。

お役に立てれば。

38
Yan Sklyarenko

私は解決しました:WixとUtilスキーマで異なるPermissionExが定義されています( Wix PermissionEx および til Extension PermissionEx

私はUtilバージョンを使用しました:

  • WixUtilExtensionアセンブリへの参照を追加する
  • UtilExtension名前空間をWixタグに追加します。
<Wix xmlns="http://schemas.Microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.Microsoft.com/wix/UtilExtension">
  • 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>

上記の答えは正解です。このフォルダー内のすべてのフォルダーとファイルにアクセス許可を設定します。

注:CreateFolderタグはコンポーネント内にある必要があり、このコンポーネントはフィーチャーに追加する必要があります。

また、これをコンパイラーのコマンドラインに追加する必要がありますandリンカー:

-ext WixUIExtension -ext WixUtilExtension
18
cdytoby