我们的团队正处于MVC Web应用程序的交付状态-带有Wix工具集V3.11和用于VS2019的Wix扩展(Votive(的ASP.NET。要求是客户端只需要使用我们提供的.msi在自己的一侧安装网站,并且可以从IIS管理器进行浏览。
我很难在Product.wxs.中正确配置IIS(使用端口、IP等(
从Wix安装项目创建的.msi安装后,在IIS管理器中创建了一个网站,但当我浏览该网站时,页面显示";访问被拒绝";。考虑到我已将所有权限分配给";IUSR";正如其他人所建议的那样。
此外,我们的网页也支持windows身份验证和授权,我如何在Product.wxs中指定?
我是Windows、Wix安装程序领域的新手。
编辑:卸载并重新安装后,授予"的权限;IUSR";到文件夹,验证ApplicationPool是否正确,浏览网页并";HTTP错误503:服务不可用";发生。
我错过了什么?
<Component Id="IISConfigure" Guid="[GUID]" KeyPath="yes" Directory="INSTALLFOLDER">
<util:User Id="MyWebsite_AppPoolUser" Name="domainusername" Password="pwd"/>
<!--define application pool-->
<iis:WebAppPool Id="MyWebsite_AppPool" Name="MyWebsiteApplication"
Identity="other" User="MyWebsite_AppPoolUser"
RecycleMinutes="120" />
<!--define web site-->
<iis:WebSite Id="MyWebsite_Website" Description="[Descript]"
AutoStart="yes" StartOnInstall="yes" ConfigureIfExists="yes"
Directory="INSTALLFOLDER" ConnectionTimeout="360" >
<iis:WebAddress Id="AllUnassigned" IP="*" Port="81" />
<iis:WebApplication Id="MyWebsite_WebApp" Name="MyWebsite" WebAppPool="MyWebsite_AppPool"
ScriptTimeout="360" />
<iis:WebDirProperties Id="MyWebsite_Properties" AnonymousAccess="yes" WindowsAuthentication="no"
DefaultDocuments="[path]Index.cshtml" />
</iis:WebSite>
</Component>
为了设置windows身份验证,您需要编写一个自定义操作:
<CustomAction Id="SetWindowsAuthentication"
Execute="deferred"
Impersonate="no"
Return="check"
Directory="TARGETDIR"
ExeCommand="appcmd.exe set config "MyWebsite" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost" />
<InstallExecuteSequence>
<Custom Action="SetWindowsAuthentication" Before="InstallFinalize"><![CDATA[NOT Installed]]></Custom>
</InstallExecuteSequence>
此自定义操作应推迟,并且必须在InstallInitialize和InstallFinalize之间执行。
我有一个名为IsWiX的FOSS工具。请参阅本页的网站教程。
https://github.com/iswix-llc/iswix-tutorials
不应该需要自定义操作。我将大部分默认设置烘焙到web.config中,其余使用WiX IIS Extension元素。我很少需要调用appcmd.exe.
如果你想让我带你参观,我总是可以免费咨询一个小时。我创建的网络应用程序一直使用windows身份验证,所以这是一条非常平坦的道路。