Wix MSI安装程序:如何在applicationHost.Config中设置为override =“deny”时允许匿名身份验证

时间:2017-10-30 11:28:09

标签: iis wix wix3.11

我有一个通过Wix MSI项目安装的Web应用程序。 web.config包括下面的身份验证节点。一切安装正确但安装后,我收到错误消息: “配置部分不能在此路径中使用”。这是由于applicationHost.config中的配置锁定所致。

<system.webServer>
    <security>
        <authentication>
            <anonymousAuthentication enabled="false" />
            <basicAuthentication enabled="true" />
            <windowsAuthentication enabled="false" />
        </authentication>
    </security>
</system.webServer>

如何在安装过程中覆盖applicationHost.config设置?我在安装过程中安装了所需的Windows功能,但我错过了一个吗?

2 个答案:

答案 0 :(得分:0)

这是适用于我的解决方案,在InstallFinalize之前从自定义操作调用appcmd。

var childProcess = require('child_process');

var commitMessage = (function() {
    var spawn = childProcess.spawnSync('git', ['log', '--format=%B', '-n', '1']);
    var errorText = spawn.stderr.toString().trim();

    if (errorText) {
      console.log('Fatal error from `git log`.  You must have one commit before deploying.');
      throw new Error(errorText);
    }
    else {
      return spawn.stdout.toString().trim();
    }
})();

希望这有助于某人。

答案 1 :(得分:0)

目前,这是一种使用WiX IIS扩展WebDirProperties元素直接执行此操作的方法:

https://wixtoolset.org/documentation/manual/v3/xsd/iis/webdirproperties.html

类似的事情应该起作用。请注意,关键的是WebDirProperties 指定的元素 AnonymousAccess="yes" BasicAuthentication="no" WindowsAuthentication="no"进行了修改 在安装过程中要更改的IIS属性。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension" >

    <Fragment>

    <!-- Install to default web site -->
    <iis:WebSite Id="DefaultWebSite" Description='Default Web Site'>
      <iis:WebAddress Id="AllUnassigned" Port="80" />
    </iis:WebSite>


    <!-- References the installation folder specified in the Product.wxs file under the INSTALLFOLDER -->
    <DirectoryRef Id="WEB_INSTALLFOLDER">

      <!-- Configure virtual dir -->
      <Component Id="VirtualDirectoryComponent"
             Guid="{INSERT-YOUR-OWN-GUID-2C27-427A-A7B1-DA4DBCC79117}"
             KeyPath="yes" >
        <iis:WebVirtualDir Id="VirtualDirectory"
                  Alias="[WEB_DIRECTORY_ALIAS]" Directory="WEB_INSTALLFOLDER"
                  WebSite="DefaultWebSite">
          <iis:WebDirProperties Id="VirtualDirectoryProperties"
             AnonymousAccess="yes" BasicAuthentication="no"
             WindowsAuthentication="no" />
          <iis:WebApplication
             Id="MyWebApplication"
             Name="MyWebApplication" />
        </iis:WebVirtualDir>
      </Component>

    </DirectoryRef>

    </Fragment>

</Wix>