我正在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日志之外发生了什么?
答案 0 :(得分:1)
在卸载时未正确设置用于定义虚拟目录别名(应用程序名称)的属性。当您运行安装时,您可能以某种方式设置IWS_VIRTUAL_DIRECTORY_NAME
(询问用户,某些逻辑等)但是在卸载时此属性未设置,并且WiX无法找到要删除的虚拟目录卸载。
这是人们常犯的常见错误。你必须以某种方式存储IWS_VIRTUAL_DIRECTORY_NAME
的值。最着名的方法is described by Rob Mensching and is called "Remember the property" pattern。按照该文章中的建议,您将能够在安装和卸载之间存储属性。