我使用Wix 3.6将Web应用程序安装到IIS 7,安装工作正常,但当使用添加/删除程序或MSIExec卸载应用程序时,我在IIS中得到以下错误。
执行此操作时出现错误。细节:应用程序'/'不存在。
系统日志错误如下。
站点1没有定义根应用程序,因此该站点将被忽略。
使用MSIExec和/qb选项卸载时的日志文件只显示这一个错误,它似乎不会导致IIS默认Web站点目录损坏的这种问题,但也许它可以。
动作开始7:04:40:ExitDialog。错误2726:操作不是安装程序遇到意外错误安装这个包。这可能表明有问题包中。错误码是2726。参数是:ExitDialog,,动作结束7:04:40:ExitDialog。返回值0。行动结束7:04:40:安装。返回值1.
下面是wix文件的相关部分。如果有人有任何想法,可以指出我在正确的方向,他们将不胜感激。提前谢谢。
<Product
Name="$(var.WebName)"
Id="*"
UpgradeCode="GUID"
Manufacturer="MyCo"
Version="$(var.ProductVersion)"
Language="1033">
<Package Id='*'
InstallScope="perMachine"
Manufacturer="MyCo"
InstallerVersion="200"
Languages="1033"
Compressed="yes"/>
<MajorUpgrade Schedule="afterInstallValidate"
DowngradeErrorMessage='A later version of this application is already installed. Setup will now exit'></MajorUpgrade>
<Media Id="1" Cabinet="MyProduct.cab" EmbedCab="yes" />
<Property Id="IISROOT">
<RegistrySearch Id="WEBROOT" Root="HKLM" Key="SoftwareMicrosoftInetStp" Name="PathWWWRoot" Type="raw" />
</Property>
<Property Id="WIXUI_INSTALLDIR" Value="FILEINSTALLDIR" Secure="yes" >
<RegistrySearch Id="WIXUI_INSTALLDIR" Type="raw" Root="HKLM" Key="SOFTWAREMyCo" Name="InstallDir" />
</Property>
<Property Id="WIXUI_VIRTUALDIR" Secure="yes" Value="VIRTUALDIR" >
<RegistrySearch Id="WIXUI_VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWAREMyCo" Name="WixUiVirtualDir" />
</Property>
<Property Id="VIRTUALDIR" Secure="yes" Hidden="no" >
<RegistrySearch Id="VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWAREMyCo" Name="VirtualDir" />
</Property>
<CustomAction Id="FILEINSTALLDIR" Property="FILEINSTALLDIR" Value="[IISROOT][VIRTUALDIR]" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="IISROOT" Name=".">
<Directory Id="FILEINSTALLDIR" Name="AppDirectory">
<Component Id="MyCo_AppComponent" Guid="GUID">
<File Source=...
</Component>
</Directory>
</Directory>
</Directory>
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site" SiteId="*">
<iis:WebAddress Id="AllUnassigned" Port="1" />
</iis:WebSite>
<DirectoryRef Id="FILEINSTALLDIR">
<Component Id="MyCoSiteComponent" Guid="GUID" KeyPath="yes">
<iis:WebVirtualDir Id='AppComponentVirtDir' Alias='[VIRTUALDIR]' Directory='FILEINSTALLDIR'
WebSite='DefaultWebSite'>
<iis:WebDirProperties Id="AppComponentVirtDirProperties"
AnonymousAccess="no" BasicAuthentication="no"
WindowsAuthentication="yes" />
<iis:WebApplication Id='MyAppName' Name='[VIRTUALDIR]' Isolation='medium' />
</iis:WebVirtualDir>
</Component>
</DirectoryRef>
我弄清楚我做错了什么,有一个注册表设置在查找中被命名不同,然后在删除中,因为我没有在原始代码中包含它,我将包括下面的坏代码示例。注意,注册表路径是不同的:1)MyCo 2) MyCompany(这是为了演示,但您可以理解我的意思)。这导致默认网站被破坏,必须被替换。因此,简而言之,确保您所做的注册表项名称正确命名!:)这是一个痛苦的决定。
我从注册表设置的值:
<Property Id="WIXUI_VIRTUALDIR" Secure="yes" Value="VIRTUALDIR" >
<RegistrySearch Id="WIXUI_VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWAREMyCo" Name="WixUiVirtualDir" />
</Property>
删除注册表设置:
<DirectoryRef Id="FILEINSTALLDIR">
<Component Id="RegistryEntries" Guid="GUID">
<RegistryKey Root="HKLM"
Key="SOFTWAREMyCompany"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="WixUiVirtualDir" Value="[VIRTUALDIR]" />
</RegistryKey>
</Component>
</DirectoryRef>