2009-09-01 83 views
2

我正在嘗試設置臨時ASP.NET文件夾的權限如下:維克斯 - 權限ASP.NET的臨時文件夾

<PropertyRef Id="NETFRAMEWORK20INSTALLROOTDIR"/> 
<DirectoryRef Id="NETFRAMEWORK20INSTALLROOTDIR"> 
    <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files"> 
    <Component Id="PermissionsTempAspnet" Guid="{C107EC7F-FC97-41b6-B418-EA4532949362}"> 
     <CreateFolder> 
     <util:PermissionEx GenericAll="yes" User="[WIX_ACCOUNT_NETWORKSERVICE]" /> 
     </CreateFolder> 
    </Component> 
    </Directory> 
</DirectoryRef> 

我已經包括了NETFX和UTIL擴展。我編譯時出現以下錯誤:

錯誤LGHT0094:未解決的參考符號「目錄:NETFRAMEWORK20INSTALLROOTDIR」

缺少什麼我在這裏?

更新:對WiX不太瞭解,我試過了。它編譯和鏈接。不確定它確實有效。

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="NetFramework20InstallDir" Name="[NETFRAMEWORK20INSTALLROOTDIR]"> 
    <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files"> 
     <Component Id="PermissionsTempAspnet" Guid="{C107EC7F-FC97-41b6-B418-EA4532949362}"> 
     <CreateFolder> 
      <util:PermissionEx GenericAll="yes" User="[WIX_ACCOUNT_NETWORKSERVICE]" /> 
     </CreateFolder> 
     </Component> 
    </Directory> 
    </Directory> 
</DirectoryRef> 

回答

1

第二種解決方案將在您機器上最大的驅動器上創建一個名爲「[NETWORKFRAMEWORK20INSTALLROOTDIR]」的目錄。我不認爲這是你想要的。 :)

解決方案是使用「NETFRAMEWORK20INSTALLROOTDIR」作爲目錄/ @ ID。這隻有在你意識到目錄可以像屬性一樣對待之後纔有意義。不一定直觀,但這就是Windows Installer的功能。所以,我只是將您的第一個示例更改爲如下所示:

<PropertyRef Id="NETFRAMEWORK20INSTALLROOTDIR"/> 
<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="NETFRAMEWORK20INSTALLROOTDIR" Name="This will be ignored because the DirectorySearch used by the PropertyRef above will overwrite it."> 
    <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files"> 

希望您能指出正確的方向。請注意,我會比上面的示例使用更短的Directory/@ Name。 ;)

+0

感謝您指出方式和解釋目錄可以像屬性概念一樣對待。 – 2009-09-09 11:50:11