Как создать msi с помощью wix без пересборки проектов, на которые ссылаются?

У меня есть wixproj, который создает MSI со ссылками на csproj. Это строится на teamcity, с несколькими этапами сборки:

  • Установка NuGet
  • Сборка csproj (цели по умолчанию)
  • Запустите signtool на встроенном .exe
  • Сборка wixproj (цели по умолчанию)
  • Запускаем signtool на встроенном .msi

MSI подписывается, но после установки .exe - нет.

Исследуя это, выясняется, что запуск msbuild с целями по умолчанию на wixproj перестраивает exe, перезаписывая подписанный.

Я попытался изменить цели на этапе сборки wixproj, но «Свеча» неизвестна, а «Компиляция» выдает ошибку «Неопределенная переменная препроцессора '$ (var.App.TargetPath)'».


person Morten Nilsen    schedule 07.07.2017    source источник
comment
Как вы используете signtool для подписи встроенного исполняемого файла? Можете ли вы поместить это подписание exe как setp в цель AfterBuild?   -  person Brian Sutherland    schedule 07.07.2017
comment
У меня есть шаг сборки, который выполняется %SdkPath%\signtool sign /a %WorkDir%\%Project%\bin\%Configuration%\%Executable%. Я бы предпочел не помещать его в файл проекта, так как он относится только к серверу сборки, а не к машине разработки.   -  person Morten Nilsen    schedule 07.07.2017
comment
Я решаю эту проблему, удаляя ссылку csproj из файла wixproj и используя только путь к файлу в wix.   -  person Pavel Anikhouski    schedule 15.02.2019
comment
С тех пор я перепроектировал цепочки сборки на нашем сервере сборки, так что это больше не проблема, с которой я сталкиваюсь.   -  person Morten Nilsen    schedule 04.03.2019


Ответы (1)


Я нашел обходной путь благодаря Создать цель MSBuild без зависимостей.

Добавление параметра командной строки /p:BuildProjectReferences=false к шагу сборки устранило мою проблему.

Однако журнал сборки теперь дает это уведомление:

MSBuild command line parameters contain "/property:" or "/p:". It is recommended to define System Property on Build Parameters instead.

Но поскольку я не могу добавить этот параметр ко всем этапам сборки, для меня это не вариант.

person Morten Nilsen    schedule 10.07.2017