Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Wix工具集中创建网站时,如何设置IIS应用池标识的权限?_Iis_Wix_Wix3 - Fatal编程技术网

在Wix工具集中创建网站时,如何设置IIS应用池标识的权限?

在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

我正在编写一个Wix工具集安装程序,以便在Windows Server 2016的IIS中安装Angular+asp.net核心应用程序。我创建了一个新网站和一个新的应用程序池。我想在新创建的网站文件夹路径上授予应用程序池标识的完全权限。 我遵循这里给出的步骤:?所以我有3个文件:

  • Setup.wxs
  • IISConfiguration.wxs
  • WebSiteContent.wxs
我在IISConfiguration.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>