1

我正在使用 Wix 3.6 将 Web 应用程序安装到 IIS 7,并且安装工作正常,但是使用添加/删除程序或 MSIExec 卸载应用程序时,我在 IIS 中收到以下错误。

执行此操作时出错。详细信息:应用程序“/”不存在。

系统日志中的错误如下。

站点 1 没有定义根应用程序,因此该站点将被忽略。

使用 MSIExec 和 /qb 选项时卸载的日志文件仅显示这个错误,并且它似乎不会导致这种类型的问题,即 IIS 中的默认网站目录损坏,但也许它可以。

行动开始 7:04:40:ExitDialog。调试:错误 2726:找不到操作:ExitDialog 安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码为 2726。参数为:ExitDialog, , Action end 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="Software\Microsoft\InetStp" Name="PathWWWRoot" Type="raw" />
    </Property>
    <Property Id="WIXUI_INSTALLDIR" Value="FILEINSTALLDIR" Secure="yes" >
      <RegistrySearch Id="WIXUI_INSTALLDIR" Type="raw" Root="HKLM" Key="SOFTWARE\MyCo" Name="InstallDir" />
    </Property>
    <Property Id="WIXUI_VIRTUALDIR" Secure="yes" Value="VIRTUALDIR" >
      <RegistrySearch Id="WIXUI_VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWARE\MyCo" Name="WixUiVirtualDir" />
    </Property>
    <Property Id="VIRTUALDIR" Secure="yes" Hidden="no" >
      <RegistrySearch Id="VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWARE\MyCo" 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>
4

1 回答 1

0

我发现我做错了什么,有一个注册表设置在查找中命名不同,然后在删除中,因为我没有在原始代码中包含它,我将在下面包含错误代码示例。请注意,注册表路径不同 1) MyCo 2) MyCompany(这是出于演示目的,但您明白我的意思)。这导致默认网站损坏,必须更换。因此,简而言之,请确保您创建的注册表项名称正确命名!:) 这是一个痛苦的。

我在注册表中设置值的位置:

<Property Id="WIXUI_VIRTUALDIR" Secure="yes" Value="VIRTUALDIR" >
  <RegistrySearch Id="WIXUI_VIRTUALDIR" Type="raw" Root="HKLM" Key="SOFTWARE\MyCo" Name="WixUiVirtualDir" />
</Property>

我删除注册表设置的地方:

<DirectoryRef Id="FILEINSTALLDIR">
  <Component Id="RegistryEntries" Guid="GUID">
    <RegistryKey Root="HKLM"
                 Key="SOFTWARE\MyCompany"
          Action="createAndRemoveOnUninstall">
      <RegistryValue Type="string" Name="WixUiVirtualDir" Value="[VIRTUALDIR]" />
    </RegistryKey>
  </Component>
</DirectoryRef>
于 2011-09-13T20:32:08.907 回答