我正在尝试设置临时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>
答案 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">
希望,这可以指出你正确的方向。注意,我会使用比上面的例子更短的目录/ @名称。 ;)