Отказ от ответственности: я работаю в 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