12

我有一个安装程序,它配置了 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 身份验证的“网站”站点,而不仅仅是具有匿名身份验证的帮助应用程序。我能想到的唯一解释是,在根站点下添加虚拟目录/应用程序的行为偶尔会导致根继承子身份验证设置以及它自己的身份验证设置。

注意:我试图在 wixtoolset.org 网站上将此作为错误提出,但在尝试这样做时不断收到错误消息。

4

2 回答 2

3

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

批处理文件

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

WIX(产品.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 属性值以指向正确的批处理文件路径。

于 2015-06-03T12:53:07.243 回答
0

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

似乎当这种片状发生时,它确实从服务器级别继承了设置,尽管我不知道为什么它只是有时会发生。

这是 Powershell 脚本:

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

于 2017-06-15T09:20:22.593 回答