我正在为.NET 4.0和IIS 7.5更新我们的一个安装程序,其中一个任务是将AppPool切换到使用其自己的身份。在使用WiX和IIS扩展时,我发现这相当简单,但是我遇到了两组额外的权限问题,主要是为了授予AppPool身份写入权限:
<Directory Id="LOGS_LOCATION" Name="logs">
<!-- SourceDir\logs -->
<Component Id="LogsFolder" Guid="{3A7C38C7-6604-4063-A425-D62427B21AEE}" KeyPath="yes" DiskId="1">
<CreateFolder>
<!-- SYSTEM account is automatically given access, but set other ACEs here to avoid Users having access -->
<Permission User="Administrators" GenericAll="yes"/>
<Permission User="[ASPNET_USER]" Domain="[ASPNET_DOMAIN]" GenericRead="yes" GenericWrite="yes" Read="yes" Delete="yes" DeleteChild="yes" Traverse="yes"/>
<!-- IIS5: ASPNET, IIS6: NetworkService, IIS7: AppPool identity -->
</CreateFolder>
</Component>
</Directory>
ASPNET_USER
和ASPNET_DOMAIN
被定义为AppPoolName
和IIS APPPOOL
,其中AppPoolName
完全匹配应用程序池的名称。
当我运行安装程序时,我收到一个1609错误,指出IIS APPOOL\AppPoolName
不是有效的标识,安装失败了。我该如何将应用程序池标识指定给权限元素,以便Web应用程序可以写入日志目录?我需要使用不同的标识吗?
<Custom Action="ConfigureIIS" Before="SchedSecureObjects" />
但是这一直在抱怨关于未解决的对CustomAction:ConfigureIIS的引用问题。我的wixproj文件中引用了WixUtilExtension和WixIIsExtension两个扩展。 - alastairs