WiX未正确配置IIS站点
我有一个安装程序,它配置了两个网站,其中一个在根站点下有一些应用程序。顶级站点仅配置为Windows身份验证,如下所示:WiX未正确配置IIS站点,iis,wix,iis-7.5,wix-extension,Iis,Wix,Iis 7.5,Wix Extension,我有一个安装程序,它配置了两个网站,其中一个在根站点下有一些应用程序。顶级站点仅配置为Windows身份验证,如下所示: <iis:WebSite Id="WebSite" Description="Application" Directory="WEBSITE_INSTALLLOCATION" AutoStart="yes" ConfigureIfExists="yes"
<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网站上提出此错误,但在尝试这样做时不断出错。或者,您可以编写一个批处理脚本来创建网站,并作为自定义操作从WIX调用 批处理文件
%systemroot%\system32\inetsrv\appcmd.exe add site /name:YourWebSite /PhysicalPath:%systemdrive%\inetpub\wwwroot /bindings:http/*:80:
WIX(product.wxs)
未安装且未修补
更改execomand属性值以指向正确的批处理文件路径。我的解决方法是在服务器级别禁用匿名身份验证 看起来,当这种片状发生时,它确实继承了服务器级别的设置,尽管我不知道为什么它只是偶尔发生 下面是Powershell脚本:
设置WebConfigurationProperty-Filter“/system.webServer/security/authentication/anonymousAuthentication”-启用名称-值False-PSPath IIS:\是否找到此问题的解决方案?@Oren否,不幸的是,我尚未找到此问题的解决方案。我们目前正在使用WIX3.7,所以我不能说它是否在3.8版本就已经被修复了。现在我想起来了,我已经看到了这种行为。我有一个安装,每隔一段时间都会启用两个身份验证。嗯~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~。我部署到两个不同的环境,其中一个环境的问题不一致。有些时候,我们启用了anon和windows,而有些时候仅启用windows(按设计)。从Wix v3.11开始,我仍然看到这种行为。
<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>