Насколько гибкой может быть моя структура каталогов при автоматическом сборе файлов для установщика WIX? - PullRequest
3 голосов
/ 21 декабря 2011

Прости меня за мое невежество - я немного читал, но пока не совсем готов что-нибудь попробовать.

В настоящее время у нас есть файл .wxs, который трудно поддерживать. Все файлы добавляются / удаляются вручную каждый раз, когда новый файл добавляется / удаляется из SVN. Мы постоянно ломали установочные сборки из-за несоответствия между созданием нового файла и обновлением установочного файла .wxs.

Поэтому я бы хотел автоматически собрать файлы в решении. КАК ПОТРЕБИТЬ ВЫПУСК MSDEPLOY СТАБИЛЬНОГО ВЕБ-САЙТА В WIX INSTALLER , кажется, описывает то, что я хочу сделать, но это не решает одну из моих главных задач. То есть - позволяет ли сбор таких файлов настраивать структуру каталогов или установщик теперь будет устанавливать файлы в местах, имитирующих наше решение?

Я изо всех сил пытаюсь сделать логический переход от «автоматически определять новые файлы и папки» к «знать, куда автоматически помещать новые файлы». Есть ли способ настроить некоторые заранее определенные действия, говоря что-то вроде «Все файлы и папки в этой родительской папке должны быть установлены в [другой определенный каталог]»

Спасибо.

1 Ответ

4 голосов
/ 22 декабря 2011

Я использую WiX на объекте ASP.net, который динамически включает все файлы веб-сайта и сценарии базы данных, которые запускаются во время установки.

Я извлекаю файлы из решения, используя задачу высокой температуры, вот так

  <HeatDirectory
                  ToolPath="$(WixToolPath)"
                  Directory="$(WebRoot)"
                  GenerateGuidsNow="yes"
                  ComponentGroupName="MasterPlanWeb"
                  OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\wwwfiles.wxs"
                  SuppressFragments="yes"
                  DirectoryRefId="WEBROOT"
                  KeepEmptyDirectories="yes"
                  PreprocessorVariable="var.WebRoot"
                  SuppressRegistry="yes"
                  SuppressRootDirectory="yes"
                  SuppressCom="yes" />

, а затем в моем основном сценарии wix на них ссылаются как

  <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="INSTALLLOCATION" Name="MasterPlan">
        <Directory Id="WEBROOT" Name="wwwroot" />
        <Directory Id="DATABASESRC" Name="databasesrc" />
      </Directory>
    </Directory>

Связь между этими двумя частями, если DirectoryRefId в первом фрагменте xml и Directory Id во второй.

Таким образом, структура решения непосредственно в моем каталоге HEATed копируется, как и я, однако я могу изменить корень.

Например, если я запускаю HEAT через c: \ mywebsite и этот каталог содержит

  • \ people \
  • \ счета \
  • \ Сценарии \

эти подкаталоги будут включены.

Вторая часть позволяет мне установить корневой каталог во время установки, поэтому, если пользователь выберет c: \ test, в качестве каталога для установки будут созданы следующие каталоги (с их горячим содержимым)

  • C: \ тест \ люди \
  • C: \ Test \ счета \
  • C: \ Test \ Scripts \

Если вы действительно хотите, чтобы подкаталоги помещали все свои данные, например, в корневой каталог, вы могли бы сделать цикл для каждой папки и выполнить одну и ту же команду, указав один и тот же DirectoryRefId для всех них.

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