WIX 3.6 Установщик IIS 7, вызывающий «На сайте 1 не определено корневое приложение, поэтому сайт будет игнорироваться».ошибка при удалении - PullRequest
1 голос
/ 13 сентября 2011

Я использую Wix 3.6 для установки веб-приложения на IIS 7, и установка работает правильно, но при удалении приложения с помощью «Установка и удаление программ» или с MSIExec я получаю следующую ошибку в IIS.

Произошла ошибка при выполнении этой операции. Подробности: Приложение '/' не существует.

Ошибка в системном журнале выглядит следующим образом.

На сайте 1 не определено корневое приложение, поэтому сайт будет игнорироваться.

Файл журнала при удалении при использовании MSIExec и параметра / qb показывает только эту одну ошибку, и не похоже, что это может вызвать проблему такого типа, когда каталог веб-сайта по умолчанию в IIS поврежден, но, возможно, может. *

Начало действия 7:04:40: ExitDialog. ОТЛАДКА: Ошибка 2726: действие не выполнено Найдено: ExitDialog Установщик обнаружил непредвиденную ошибку установка этого пакета. Это может указывать на проблему с этим пакет. Код ошибки 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="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>

1 Ответ

0 голосов
/ 14 сентября 2011

Я понял, что я делаю неправильно, был параметр реестра, который был назван по-другому в поиске, чем при удалении, так как я не включил это в исходный код, я приведу ниже пример плохого кода , Обратите внимание, что путь к реестру отличается 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>
...