WiX - ASP.NET临时文件夹的权限

时间:2009-09-01 13:18:57

标签: asp.net wix

我正在尝试设置临时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 个答案:

答案 0 :(得分: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">

希望,这可以指出你正确的方向。注意,我会使用比上面的例子更短的目录/ @名称。 ;)