Набор инструментов Wix не устанавливает цели во всех IDE vs2017 - PullRequest
0 голосов
/ 06 января 2019

Компания, в которой я работаю, использует набор инструментов wix для создания MSI, который должен установить наше расширение в Visual Studio. Все работало нормально до Visual Studio 2017. Если на компьютере клиента установлено несколько IDE VS, например Professional и Enterprise, наше расширение будет установлено только в одной из них. Кто-нибудь знает, как решить эту проблему? Есть ли способ перебрать IDE VS2017? РЕДАКТИРОВАТЬ: код установки в VS2017 выглядит так:

<Directory Id="VS2017_IDE_DIR">
  <Directory Id="VS2017_EXTENSIONS_DIR">
    <Directory Id="VS2017_MYCOMPANY_EX" Name="MYCOMPANY">
      <Directory Id="VS2017_AUTORUNNER_EX" Name="MYCOMPANY Extension">
        <Directory Id="VS2017_AUTORUNNER_EX_VERSION" Name="$(var.MajorAndMinorVersion)">
          <Component Id="VS2017_AUTORUNNER_EXTENSIONSHORTCUTS" Guid="">

            <Condition>VS2017DEVENV</Condition>
            <CreateFolder />
            <util:RestartResource Path="[VS2017DEVENV]"/>

            <RemoveFolder Id="REMOVE_VS_VERSION_VS2017" On="uninstall" Directory="VS2017_MYCOMPANY_EX" />
            <RemoveFolder Id="REMOVE_VS2017_EXTENSIONS" On="uninstall" Directory="VS2017_AUTORUNNER_EX" />
            <RemoveFolder Id="REMOVE_VS2017_MYCOMPANY_EX" On="uninstall" Directory="VS2017_AUTORUNNER_EX_VERSION" />

            <File Source="$(var.ManagedBinariesDir)VisualStudioExtension\extension.vsixmanifest" Name="extension.vsixmanifest"
                    Id="extension.vsixmanifest_VS2017" />
            <File Source="$(var.ManagedBinariesDir)VisualStudioExtension\MYCOMPANY.VSExtension.pkgdef"
                    Name="MYCOMPANY.VSExtension.pkgdef" Id="MYCOMPANY.AutoRunner.pkgdef_VS2017" />
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Directory>

Как написано выше, этот код устанавливает расширение только в одну IDE VS 2017, и я хочу, чтобы расширение было установлено во всех IDE VS 2017.

1 Ответ

0 голосов
/ 18 марта 2019

Отказ от ответственности: я работаю в Typemock - компании, занимающейся модульным тестированием

У нас была та же проблема с нашим установщиком Wix, вот что вам нужно сделать:

• создать свойства для каждого экземпляра VS 2017:

<Property Id="VS2017_INSTANCE_1" />

<Property Id="VS2017_INSTANCE_2" />

<Property Id="VS2017_INSTANCE_3" />

• присваивать им значения с помощью vswhere (инструмента, который находит все установленные пути VS 2017):

добавить CustomAction, который активирует vswhere и назначить пути к свойствам.

• создать фрагмент кода, подобный тому, который вы написали выше, для каждого из этих свойств:

<Directory Id="VS2017_INSTANCE_1">

...

</Directory>

<Directory Id="VS2017_INSTANCE_2">

...

</Directory>

<Directory Id="VS2017_INSTANCE_3">

...

</Directory>

• Самая важная часть: поставить CustomAction перед CostFinalize в InstallUISequence

...