Как установить папку установки MSI динамически - PullRequest
0 голосов
/ 15 сентября 2010

Я создаю установщик веб-приложения с помощью WiX.Я хочу позволить пользователю выбрать веб-сайт из списка сайтов на сервере IIS, а затем установить приложение в подкаталог корневой папки этого веб-сайта.

Я закончил "выберите часть сайта ".У меня есть пользовательское действие, которое устанавливает кучу свойств на основе выбранного сайта.Одним из этих свойств (WEB_SITE_ROOT_PHYSICAL_PATH) является путь к корневой папке веб-сайта.

Однако я не могу заставить приложение установить по этому пути.

Моя структура каталогов следующая:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="IIS_WEB_ROOT">
    <Directory Id="WEB_SITE_ROOT" Name=".">
      <Directory Id="INSTALLLOCATION" Name="$(var.ProductName)">

IIS_WEB_ROOT определяется как:

<Property Id="IIS_WEB_ROOT">
  <RegistrySearch Id="Search" Root="HKLM" Key="Software\Microsoft\InetStp" Name="PathWWWRoot" Type="raw" />
</Property>

WEB_SITE_ROOT_PHYSICAL_PATH имеет значение WEB_SITE_ROOT, как показано ниже:

<Property Id="WEB_SITE_ROOT_PHYSICAL_PATH" Value="WEB_SITE_ROOT"/>

Ранее отображался диалог выбора веб-сайтадиалог установки папки.В диалоговом окне папки установки используется следующее «стандартное свойство»:

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/>

Результатом всего этого является то, что приложение устанавливается в корневую папку веб-сайта IIS, а не в корневую папку веб-сайта.

Я просто не уверен, как установить в моей папке установки мое динамически определенное свойство WEB_SITE_ROOT_PHYSICAL_PATH.Мне нужно несколько указателей в правильном направлении.Нужно ли другое настраиваемое действие для установки папки установки после установки свойства WEB_SITE_ROOT_PHYSICAL_PATH?Если да, то как мне установить этот параметр первым после завершения диалога выбора веб-сайта?Или я получил все кусочки, но просто неправильно их подключил.

1 Ответ

1 голос
/ 15 сентября 2010

Чтобы присвоить свойству значение другого свойства, вам необходимо создать пользовательское действие:

<CustomAction Property="WEB_SITE_ROOT_PHYSICAL_PATH" Value="[WEB_SITE_ROOT]" />

Конечно, вы должны запланировать это действие после определения исходного свойства WEB_SITE_ROOT.

Надеюсь, это поможет.

...