2010-11-24 79 views
35

我知道如何設置權限的文件夾:維克斯:如何設置文件夾的權限和所有子文件夾

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

不過,我需要的權限被應用到所有子文件夾以及。這可能與列出所有文件夾?

回答

35

首先,我會建議你用PermissionEx來代替。這是一個標準的WiX擴展,它擁有超過權限的巨大優勢 - 它不會覆蓋,但會修改ACL。默認情況下,它將權限應用於文件夾及其所有後代文件和文件夾,因此您不必指定任何額外的內容。

希望這會有所幫助。

+0

可以爲用戶提供PermissionEx一個例子嗎?我在CreateFolder標籤中使用它,但收到錯誤「缺少所需的屬性SDDL」。我也有用戶和GenericAll屬性的「屬性沒有聲明」錯誤。謝謝 – 2012-12-04 13:44:16

+7

這是因爲你使用標準的`PermissionEx`元素,它支持從MSI 5.0開始支持。它具有不同的簽名,並且它期望SDDL屬性。你應該像這樣包含`UtilExtension`:`xmlns:util =「http:// schemas.microsoft.com/wix/UtilExtension`並且引用它像`` – 2012-12-04 14:06:03

21

我解決:不同PermissionEx在維克斯和的Util模式(Wix PermissionExUtil 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> 
14
<DirectoryRef Id="INSTALLFOLDER"> 
     <Component Id="INSTALLFOLDER_Permission" Guid="*"> 
      <CreateFolder> 
       <util:PermissionEx User="Users" GenericAll="yes"/> 
      </CreateFolder> 
     </Component> 
    </DirectoryRef> 

上面的答案是正確的,並且您將權限設置該文件夾中的所有文件夾和文件。

但要注意:CreateFolder標籤應該位於組件中,並且此組件需要添加到Feature中。

此外,你必須把它添加到編譯器的命令行鏈接:

-ext WixUIExtension -ext WixUtilExtension