Wix 3.5& IIS7 - WriteIIS7ConfigChanges失败 - 尝试将三个Web应用程序作为虚拟目录安装到默认网站

时间:2011-07-27 16:42:23

标签: iis-7 wix wix3.5

我希望有人可以帮助我解决我在 Windows Server 2008 上使用 Wix 3.5.2519.0 时遇到的问题 IIS7 < / strong>&amp; 已安装IIS6兼容性功能。

MSI日志文件

我们在尝试在默认网站下定义三个虚拟Web应用程序目录时遇到以下错误,使用/log <filename>的{​​{1}}选项记录:

msiexec.exe

Wix组件声明

有三个网站需要安装,它们每个都在Action 17:05:57: StartIIS7ConfigTransaction. Starting IIS Config Transaction Action 17:05:57: RollbackIIS7ConfigTransaction. Rolling back IIS Config Transaction Action 17:05:57: CommitIIS7ConfigTransaction. Committing IIS Config Transaction Action 17:05:57: ConfigureIIs7Exec. Configuring IIS ConfigureIIs7Exec: Error 0x800700b7: Failed get sites section ConfigureIIs7Exec: Error 0x800700b7: Failed to search for Website ConfigureIIs7Exec: Error 0x800700b7: Failed get sites section ConfigureIIs7Exec: Error 0x800700b7: Failed to search for Website ConfigureIIs7Exec: Error 0x800700b7: Failed get sites section ConfigureIIs7Exec: Error 0x800700b7: Failed to search for Website Action 17:05:57: WriteIIS7ConfigChanges. Installing Config Keys and Values WriteIIS7ConfigChanges: Error 0x800700b7: Failed get sites section WriteIIS7ConfigChanges: Error 0x800700b7: Failed to read sites from config WriteIIS7ConfigChanges: Error 0x800700b7: Failed to configure IIS application. WriteIIS7ConfigChanges: Error 0x800700b7: WriteIIS7ConfigChanges Failed. Action ended 17:05:57: InstallFinalize. Return value 3. Action 17:05:57: Rollback. Rolling back action: Rollback: Installing Config Keys and Values Rollback: Configuring IIS Rollback: Committing IIS Config Transaction Rollback: Rolling back IIS Config Transaction 文件中使用组件xml语法声明如下(它们不相同但它们非常接近):

wxs

网站声明

同样,它们使用以下<Component Id="DataServiceVirtualDir" Guid="9AC00BDC-D710-429f-B68B-8130DB17C90C"> <CreateFolder/> <iis:WebVirtualDir Id="OurApplicationDataService" Alias="OurApplicationDataService" Directory="DATASERVICEDIR" WebSite="OurApplicationDataService" DirProperties="OurApplicationDirProperties"> <iis:WebApplication Id="OurApplicationDataService" Name="OurApplicationDataService"> </iis:WebApplication> </iis:WebVirtualDir> </Component> 元素和支持元素声明:

website

迄今为止的总结和结论

所以这个神秘的安装程序错误<iis:WebSite Id="OurApplicationDataService" Directory="DATASERVICEDIR" Description="OurApplication Data Service"> <iis:WebAddress Id="AllUnassignedData" IP="*" Port="80"/> </iis:WebSite> <iis:WebSite Id="OurApplicationSecurityService" Directory="SECURITYSERVICEDIR" Description="OurApplication Security Service"> <iis:WebAddress Id="AllUnassignedSecurity" IP="*" Port="80"/> </iis:WebSite> <iis:WebSite Id="OurApplicationProcessingFacades" Directory="PROCESSINGFACADESDIR" Description="OurApplication Processing Facades"> <iis:WebAddress Id="AllUnassignedFacades" IP="*" Port="80"/> </iis:WebSite> <iis:WebDirProperties Id="OurApplicationDirProperties" WindowsAuthentication="no" AnonymousAccess="yes" AnonymousUser="OurApplicationUserID" /> <iis:WebDirProperties Id="SecurityDirProperties" WindowsAuthentication="yes" AnonymousAccess="no" /> 似乎正在搞砸了。

有趣的是,安装程序的早期迭代安装得很好,并且之前已经多次卸载了。但是,现在尝试卸载以前的安装程序并安装新的安装程序时,卸载失败并出现完全相同的错误,卸载日志文件的失败部分几乎与上面的日志部分完全相同。

如果我将Web应用程序二进制文件复制到所需的安装目录并通过IIS7管理控制台手动连接虚拟目录,则一切正常,网站会正确响应请求。

据我所知,IIS7网站和目标安装目录都是空的,空白的,并在安装前进行了清理。

谷歌关于这个问题并不多,我想我可能只需要在盒子上重新安装IIS7,看它是否会让问题消失,但这就是核选择。

有人有什么想法吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

由于您已经重建了服务器,因此可能有点晚了,但我收到了同样的错误。

错误的最终原因是apppool在我的应用程序中使用了错误版本的.NET。我通过为应用程序分配自己的应用程序池而不是使用服务器上的默认应用程序池来解决它。您可能将服务器上的默认apppool设置为应用程序所需的版本,这就是它最终工作的原因。

<Directory Id='WebAppFiles' Name='WebApp'>
<!-- The component to define the Virtual Directory.-->
<Component Id="WebVirtualDirApp"
    Guid="your-guide-goes-here">
    <!-- The virtual directory we are installing. -->
    <!-- The Alias attribute is the name thata will be put into IIS.-->
    <!-- The Directory attribute is the "Physical Path" property in
         IIS and needs to tie to an ID specified in the setup. -->
    <!-- The WebSite attribute ties to a <WebSite> element in the 
         setup file. As this is an example of installing into the 
         "Default Web Site" that element is not under a component.-->
    <iis:WebAppPool Id="YourWebAppPoolId" Name="YourWebAppPool" 
             ManagedRuntimeVersion="v2.0" />
    <iis:WebVirtualDir Id="VDirApp" Alias="[VDIRNAME]" 
             Directory="WebAppFiles" WebSite="DefaultWebSite">
        <!-- Turn the Virtual Directory into a web application. -->
        <iis:WebApplication Id="TheWebApplication"  
            WebAppPool="YourWebAppPoolId"
            Name="[VDIRNAME]" />
    </iis:WebVirtualDir>
    <!-- This is pretty important. If the CreateFolder isn't there the
         WebVirtualDir won't get created as there's no files in this
         component.
         http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03483.html -->
    <CreateFolder/>                 
</Component>
</Directory>

答案 1 :(得分:2)

我最近一直在努力解决类似的错误;主要区别在于我们在“WriteIIS7ConfigChanges”错误中提到了应用程序池。很多在线搜索(我如何看到这篇文章)表明你的问题可能是由于Wix已经修复过的各种错误。我们正在使用Wix 3.7.1119.0,但是,截至撰写本文时,这是最新的RC,因此至少有另一种方法可以解决此错误。

我最终发现一些不相关的权限问题导致我们的安装失败,然后回滚也在其中一个步骤上无声地失败,弄乱了服务器配置。我们正在插入

<system.transactions><machineSettings maxTimeout="00:30:00"/><defaultSettings timeout="00:30:00"/></system.transactions>

进入C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config,但应该删除它的回滚步骤是错误输出“访问被拒绝”消息。在初始尝试失败后的任何安装尝试都会导致ConfigureIIS7Exec错误。进入并从machine.config手动删除事务超时设置导致“无法搜索网站”错误消失,我们的安装再次成功完成。

答案 2 :(得分:2)

我也碰到了这个。我在安装日志中看到以下消息:

MSI (s) (B8:74) [11:11:24:699]: Invoking remote custom action. DLL: C:\Windows\Installer\MSICF14.tmp, Entrypoint: WriteIIS7ConfigChanges
WriteIIS7ConfigChanges:  Error 0x80070002: Failed get AnonymousAuthentication section for DirProp
WriteIIS7ConfigChanges:  Error 0x80070002: Failed set Authentication for DirProps
WriteIIS7ConfigChanges:  Error 0x80070002: Failed to configure IIS DirProperties.
WriteIIS7ConfigChanges:  Error 0x80070002: WriteIIS7ConfigChanges Failed.

我打开了IIS管理器,当我点击我试图安装到的网站时,我收到一条关于/指向无效目录的错误。

我点击了网站 - &gt;转到右侧窗格,右键单击相关站点,“应用程序池”和“物理路径”均为空白。一旦我设置并应用了这些更改,我就能够顺利前进。不知道我的默认网站配置是如何被borked,但在IIS管理器下修复它解决了这个问题。