Установка расширения MSBuild - PullRequest
1 голос
/ 31 августа 2009

Я создал задачу для MSBuild, которая будет использоваться разработчиками, и хотел бы создать установщик для установки задачи и соответствующего файла .targets в папку расширений MSBuild в Program Files (обычно C: / Program Files / MSBuild на 32-битной XP).

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

Ответы [ 2 ]

2 голосов
/ 31 августа 2009

У самого Wix есть задача MSBuild, так что я думаю, что лучше всего посмотреть, как они это сделали, релевантным источником является Toolset.wxs (Поиск кода Google).

Посмотрите на ту часть, где они определили папку MSBuild:

<DirectoryRef Id="ProgramFilesFolder">
    <Directory Id="Dir_MSBuild" Name="MSBuild">
        <Directory Id="Dir_MSBuildMS" Name="Microsoft">
            <Directory Id="Dir_MSBuildMSWix" Name="WiX">
                <Directory Id="Dir_MSBuildMSWix35" Name="v3.5">
                    <Component Id="WixMSBuildBinaries35" 
                              Guid="2CB1EA5F-2542-4AFF-A05B-FAF576265F89" 
                              Win64="no">
                        <File Source="WixTasks.dll" Checksum="yes" 
                              KeyPath="yes" Vital="yes" />
                    </Component>
                </Directory>
            </Directory>
        </Directory>
    </Directory>
</DirectoryRef>

Это установит задачу Wix MsBuild (WixTasks.dll) в папку \ Program Files \ MSBuild \ Microsoft \ Wix

1 голос
/ 01 сентября 2009

Мы делаем именно это (и больше:)

Создайте файл wxi с чем-то вроде:

<!-- Product name as you want it to appear in Add/Remove Programs-->
<?if $(var.Platform) = x64 ?>
  <!-- Product name as you want it to appear in Add/Remove Programs-->
  <?define ProductName = "Custom MSBuild Tasks (64 bit)" ?>
  <?define Win64 = "yes" ?>
  <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
  <?define ProductName = "Custom MSBuild Tasks" ?>
  <?define Win64 = "no" ?>
  <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>

<!-- Directory name used under MSBuild -->
<?define InstallName = "CustomTasks" ?>

А потом, когда вам нужно определить ваши компоненты:

<Fragment Id="ComponentsFragment">
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="$(var.PlatformProgramFilesFolder)">
      <Directory Id="MSBuildFolder" Name="MSBuild">
        <Directory Id="INSTALLLOCATION" Name="$(var.InstallName)">
          ... Your custom .Targets and tasks go here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...