Физический путь к сайту IIS становится пустым при удалении wix - PullRequest
8 голосов
/ 18 января 2011

Справочная информация. У меня есть установщик Wix, в котором создается виртуальный каталог на существующем веб-сайте IIS. Виртуальный каталог создан (он не существует до установки), но веб-сайт IIS уже должен быть создан (пользователь просто выбирает веб-сайт для установки в ListBox).

Проблема: при удалении физический путь к установленному веб-сайту IIS становится пустым, значение этого атрибута отсутствует. Ниже приведена урезанная версия моего основного файла wix. Я не уверен, почему удаление влияет на веб-сайт IIS, но любые мысли приветствуются.

Примечания. Я использую Wix 3.5 и Windows Server 2008 R2, IIS 7.

<Product>

    <Property Id='WEBSITE_DESCRIPTION'>
      <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKCU'
        Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription'
        Type='raw' />
    </Property>

    <Property Id='WEBSITE_PORT'>
      <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKCU'
        Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort'
        Type='raw' />
    </Property>


    <Component Id='PropertiesToSave' Directory='ApplicationFolder'>
      <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product'
        Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]'
        Type='string' />
      <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product'
        Name='InstalledWebsitePort' Value='[WEBSITE_PORT]'
        Type='string' />

      <RemoveFolder Id='CleanupApplicationFolder' On='uninstall' />
    </Component>


    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Component Id='TestWebVirtualDirComponent' Guid='12345678-6304-410E-A808-E3585379EADB'>
        <CreateFolder />
        <iis:WebVirtualDir Id='TestWebVirtualDir' Alias='[WEBSITE_VIRTUALDIR]' Directory='TARGETDIR' WebSite='MyWebsite'>
          <iis:WebApplication Id='TestWebApplication' Name='Test' />
        </iis:WebVirtualDir>
      </Component>
    </Directory>

    <iis:WebSite Id="MyWebsite" Description="[WEBSITE_DESCRIPTION]" SiteId="*">
      <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" />
    </iis:WebSite>

    <Feature>
      <ComponentRef Id='TestWebVirtualDirComponent'/>
      <ComponentRef Id='PropertiesToSave'/>
    </Feature>
</Product>

1 Ответ

5 голосов
/ 19 января 2011

WiX IIsExtension распознает атрибут WebSite по описанию и атрибуту Port дочернего элемента WebAddress .Поэтому, когда вы устанавливаете ваше приложение, вы каким-то образом устанавливаете WEBSITE_DESCRIPTION и WEBSITE_PORT.Однако при запуске удаления указанные свойства не устанавливаются, и вы получаете поведение, которое вы описали.

Решение этой проблемы - сохранить требуемые значения свойств в системном реестре и использовать RegistrySearch * 1010.* элемент для чтения значений и установки соответствующих свойств.Это называется паттерном «Помни свойство» и прекрасно объясняется Робом Меншингом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...