WiX未正确配置IIS站点

12

我有一个安装程序,可以配置两个网站,其中一个网站在根目录下有一些应用程序。顶层网站仅配置为Windows身份验证,如下所示:

<iis:WebSite Id="WebSite"
             Description="Application"
             Directory="WEBSITE_INSTALLLOCATION"
             AutoStart="yes"
             ConfigureIfExists="yes"
             StartOnInstall="yes">

        <iis:WebAddress Id="AllUnassigned" Port="80" />

        <iis:WebApplication Id="WebApplication"
                            Name="Console"
                            WebAppPool="WebAppPool"/>

        <iis:WebDirProperties Id="WebProperties"
                              AnonymousAccess="no"
                              WindowsAuthentication="yes"
                              AuthenticationProviders="NTLM,Negotiate"/>

</iis:WebSite>

安装程序中的其他(可选)组件随后声明应用程序/虚拟目录如下:

<iis:WebVirtualDir Id="HelpWebSite" Alias="Help" Directory="ApexHelpDir" WebSite="WebSite">
    <iis:WebApplication Id="HelpApp" Name="Help" WebAppPool="WebAppPool"/>
    <iis:WebDirProperties Id="HelpProps" AnonymousAccess="yes" WindowsAuthentication="no"/>
</iis:WebVirtualDir>

我观察到的行为大多数情况下都符合预期,但是不时地安装程序会将“网站”网站以匿名身份验证Windows身份验证一起安装,而不仅仅是带有匿名身份验证的帮助应用程序。我能想到的唯一解释是,在根站点下添加虚拟目录/应用程序的操作偶尔会导致根站点继承子认证设置以及自己的认证设置。

注意: 我试图在wixtoolset.org网站上报告此问题,但每次尝试时都出现错误。


你是否解决了这个问题? - Oren Hizkiya
@Oren,很抱歉,我仍然没有找到解决方法。我们目前正在使用WiX 3.7,所以我无法确定它是否在3.8中得到修复。 - Joe
现在我想起来了,我见过这种行为。我有一个安装程序,偶尔两个认证都启用。嗯。。。 - Christopher Painter
在寻找解决方案方面有所进展。我部署到两个不同的环境中,其中一个环境存在这个问题,但不是每天都会出现。有些日子,我们启用了anon和windows,而另一些日子则仅启用Windows(按设计要求)。 - Kurt Johnson
截至Wix v3.11,我仍然看到这种行为。 - Timothy Schoonover
2个回答

3

或者,您可以编写批处理脚本来创建一个网站,并将其作为自定义操作从WIX调用。

批处理文件

%systemroot%\system32\inetsrv\appcmd.exe add site /name:YourWebSite /PhysicalPath:%systemdrive%\inetpub\wwwroot /bindings:http/*:80:

WIX(product.wxs)

<CustomAction Id="CreateWebsite" Execute="deferred" Impersonate="no" Return="check" Directory="TARGETDIR" PatchUninstall="no" ExeCommand="Batchfilepath" />

<InstallExecuteSequence>
<Custom Action="CreateWebsite" Before="InstallFinalize">NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>

将ExeCommand属性值更改为正确的批处理文件路径。

0
我的解决方法是在服务器级别禁用匿名身份验证。
似乎当出现这种不稳定性时,它会继承服务器级别的设置,尽管我不知道为什么它只会有时发生。
以下是 Powershell 脚本:
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/anonymousAuthentication" -Name Enabled -Value False -PSPath IIS:\

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接