在Wix工具集中创建网站时,如何设置IIS应用池标识的权限?
我正在编写一个Wix工具集安装程序,以便在Windows Server 2016的IIS中安装Angular+asp.net核心应用程序。我创建了一个新网站和一个新的应用程序池。我想在新创建的网站文件夹路径上授予应用程序池标识的完全权限。 我遵循这里给出的步骤:?所以我有3个文件:在Wix工具集中创建网站时,如何设置IIS应用池标识的权限?,iis,wix,wix3,Iis,Wix,Wix3,我正在编写一个Wix工具集安装程序,以便在Windows Server 2016的IIS中安装Angular+asp.net核心应用程序。我创建了一个新网站和一个新的应用程序池。我想在新创建的网站文件夹路径上授予应用程序池标识的完全权限。 我遵循这里给出的步骤:?所以我有3个文件: Setup.wxs IISConfiguration.wxs WebSiteContent.wxs 我在IISConfiguration.wxs中设置了网站和权限 <DirectoryRef Id="WEB
- Setup.wxs
- IISConfiguration.wxs
- WebSiteContent.wxs
<DirectoryRef Id="WEBSITE">
<Component Id="WebSiteSiteNameCmp" Guid="{ED376FD7-D4DB-4675-8BF4-1DCC1AF1C66B}" KeyPath="yes" >
<iis:WebSite Id="WebSiteName"
Description='WebSiteName'
Directory="WEBSITE"
AutoStart="no"
ConfigureIfExists="yes"
StartOnInstall="no" >
<iis:WebAddress Id="WebSiteAdressHttps" Port="443" IP="*" Secure="yes"/>
<iis:WebAddress Id="WebSiteAdressHttp" Port="80" IP="*" Secure="no"/>
<iis:WebDirProperties Id="WebSiteProperties" AnonymousAccess="yes"
BasicAuthentication="no" WindowsAuthentication="no" />
<iis:WebApplication Id="WebSiteNameSite" Name="WebSite" WebAppPool="WebSiteAppPool" />
</iis:WebSite>
</Component>
<!-- Configuring app pool -->
<Component Id="WebSiteAppPoolCmp" Guid="{009052A8-19AE-452e-AE34-6DC8E929DA08}"
KeyPath="yes" Permanent="yes" Win64="yes">
<iis:WebAppPool Id="WebSiteAppPool" Name="WebSiteAppPoolName" ManagedPipelineMode="integrated" />
</Component>
<Component Id="WebSitePermissionCmp" Guid="{4425EFB0-A580-44B7-9C04-54EBD2E4ECB1}">
<CreateFolder>
<util:PermissionEx User="IIS AppPool\WebSiteAppPoolName" GenericAll="yes"/>
</CreateFolder>
</Component>
</DirectoryRef>
如何在“正常”时间设置权限?我最终使用自定义操作解决方案和icalcs来管理新创建的应用程序池上的权限。这是我在Setup.wxs中添加的内容:
<CustomAction Id='AppPoolPermission' Directory='WEBSITE'
ExeCommand='"[SystemFolder]icacls.exe" "[INSTALLDIR]." /grant "IIS AppPool\WebSiteAppPoolName:(OI)(CI)F" /T' Return='check'/>
<InstallExecuteSequence>
<Custom Action='AppPoolPermission' After='InstallFinalize' />
</InstallExecuteSequence>
我还从IISConfiguration.wxs中删除了WebSitePermissionCmp。
这不是理想的解决方案,但对我来说是有效的。我不知道这是否可以实现只有与WIX没有自定义操作
关于这个问题的另一个帖子:
我不完全理解答案,但它似乎也在使用自定义操作。当PremisseOnex尝试授予权限时,似乎还没有创建应用程序池。您是否检查了脚本是否能够创建新的应用程序池?如果我删除组件“WebSitePermissionCmp”。安装完成后,将创建应用程序池。我尝试在“WebSiteNameCMP”内设置应用程序池组件,但仍有相同的回滚,错误为:ExecSecureObjects:错误0x80070534:无法获取帐户的sid:IIS AppPool\WebSiteAppPoolName。我做了大量研究,但到目前为止还没有找到解决方法。您是否尝试使用特定用户而不是应用程序池标识?我希望我可以这样做,但是安装程序适用于具有相同数量不同服务器的多个客户端。我不知道将用于安装的任何凭据。是否可以在wix工具集中创建一个用户来管理应用程序池?
<CustomAction Id='AppPoolPermission' Directory='WEBSITE'
ExeCommand='"[SystemFolder]icacls.exe" "[INSTALLDIR]." /grant "IIS AppPool\WebSiteAppPoolName:(OI)(CI)F" /T' Return='check'/>
<InstallExecuteSequence>
<Custom Action='AppPoolPermission' After='InstallFinalize' />
</InstallExecuteSequence>