1

我正在 IIS 中安装 WebApplication。安装运行正常,但是当我尝试卸载我的产品时,WebApplication 留在了 IIS 中。所有文件都已删除,但 WebApp 仍显示在 IIS 管理器控制台中。这是我的组件代码:

<!-- WebServices Virtual Directory -->
<Component Id="IWSVirtualDirectory" Guid="{XXXX...}" DiskId="1" KeyPath="yes" Win64="no">
    <!-- Virtual directory -->
      <iis:WebVirtualDir Id="IWSWebVirtualDirectory" Alias="[IWS_VIRTUAL_DIRECTORY_NAME]" Directory="MyWebServices" WebSite="IWSTargetWebSite">
         <!-- Web Application -->
         <iis:WebApplication Id="IWSWebApplication" Name="MyWebServices-$(var.MAJOR).$(var.MINOR).3" WebAppPool="IWSWebAppPool">
            <!-- ISAPI filter -->
            <iis:WebApplicationExtension Extension="dll" CheckPath="yes" Script="yes" Executable="[#FTIRWWSIsapi_dll]" Verbs="GET,HEAD,POST" />
            <iis:WebApplicationExtension Extension="srf" CheckPath="yes" Script="yes" Executable="[#FTIRWWSIsapi_dll]" Verbs="GET,HEAD" />
         </iis:WebApplication>
        <!-- Properties -->
        <iis:WebDirProperties Id="IWSWebDirProperties" Read="yes" LogVisits="yes" Index="yes" Script="yes" Execute="no" DefaultDocuments="FTIRWWS.htm" BasicAuthentication="no" PassportAuthentication="no" DigestAuthentication="no" IIsControlledPassword="no" WindowsAuthentication="yes" />
      </iis:WebVirtualDir>                               
    </Component>

编辑:奇怪的是,如果我删除这两个<iis:WebApplicationExtension />只是将处理程序映射到应用程序要服务的文件扩展名的两个,则实际上删除了 WebApplication。为什么处理程序映射会阻止 WebApplication 被卸载?除了 Windows Installer 日志之外,是否有任何日志可以检查正在发生的事情?

4

1 回答 1

1

您用于定义虚拟目录别名(应用程序名称)的属性在卸载时未正确设置。当您运行安装时,您可能会以IWS_VIRTUAL_DIRECTORY_NAME某种方式设置(询问用户、一些逻辑等)但是在卸载时,此属性没有设置,并且 WiX 在卸载时找不到要删除的虚拟目录。

这是人们容易犯的一个常见错误。你必须以IWS_VIRTUAL_DIRECTORY_NAME某种方式存储价值。最著名的方法由 Rob Mensching 描述,称为“记住属性”模式。按照那篇文章中的建议,您将能够在安装和卸载之间存储属性。

于 2012-10-02T05:36:50.393 回答