WiX无法正确配置IIS站点

时间:2013-09-25 13:27:09

标签: iis wix iis-7.5 wix-extension

我有一个配置2个网站的安装程序,其中一个在根网站下有一些应用程序。顶级站点仅配置为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>

我所看到的行为是我期望的9/10次,但间歇性地安装程序将安装“网站”网站,同时使用匿名身份验证 Windows身份验证,而不仅仅是使用匿名身份验证帮助应用程序我能想到的唯一解释是,在根网站下添加虚拟目录/应用程序的行为偶尔会导致root继承子身份验证设置以及它自己的身份验证设置。

注意:我试图将此作为wixtoolset.org网站上的错误提出,但在尝试时仍然出错。

2 个答案:

答案 0 :(得分: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属性值更改为指向正确的批处理文件路径。

答案 1 :(得分:0)

我的解决方法是在服务器级禁用匿名身份验证。

似乎当发生这种瑕疵时,它确实从服务器级别继承了设置,虽然我不知道为什么它只是偶尔发生。

以下是Powershell脚本:

Set-WebConfigurationProperty -Filter“/system.webServer/security/authentication/anonymousAuthentication” - Name Enabled -Value False -PSPath IIS:\