Настраиваемое действие проекта установщика Visual Studio на основе конфигурации сборки

Возможно ли в проекте установщика условно запустить пользовательское действие на основе конфигурации сборки проекта (например, отладка, выпуск и т. д.)?

Также включать/исключать файлы на основе конфигурации сборки?

Могу ли я сделать что-либо из этого в Visual Studio 2017 или вручную отредактировав файл .vdproj?


comment
Если имя вашего файла .msi различается в выпусках и отладочных сборках (например, mysetup.msi и mysetupdebug.msi), вы можете использовать его в качестве условий установщика Windows (для настраиваемого действия и файла).   -  person Simon Mourier    schedule 25.03.2018
comment
Не могли бы вы написать пример кода, как этого добиться? Я ничего не могу найти по нему в гугле.   -  person Bedford    schedule 28.03.2018
comment
Нет никакой разницы между выпускной и отладочной сборками MSI. Нет добавленной отладочной информации. Чего вы надеетесь достичь с помощью идеи, что сборки разные? Есть ли реальная основная проблема, которую, по вашему мнению, решит эта идея отладки/релиза?   -  person PhilDW    schedule 31.03.2018


Ответы (1)


После того как вы определили свой проект, давайте предположим, что настраиваемое действие является проектом установщика .NET (это не обязательно, но в моем примере это похоже на это).

Просто перейдите к списку настраиваемых действий (щелкните правой кнопкой мыши проект/представление/настраиваемые действия), выберите свое специальное настраиваемое действие, а в свойстве «Условие» в сетке свойств вы можете использовать следующий тест:

  OriginalDatabase >< "Debug"

Забавный синтаксис (>‹ означает «содержит») описан в Синтаксис условного оператора, OriginalDatabase (с учетом регистра) — это свойство, которое содержит полное имя пути к устанавливаемому файлу .msi.

Это описано в Справочнике по свойствам установщика Windows. Вы можете использовать этот тип синтаксиса во всех Condition свойствах, определенных для различных элементов (настраиваемых действий, файлов и т. д.). Обратите внимание, что «Отладка» может быть слишком простой, как дискриминантный фрагмент текста, но вы поняли идею.

введите здесь описание изображения

Конечно, это предполагает, что вы изменили выходное имя .msi, включив в него текст «Отладка» в конфигурации отладки, примерно так:

введите здесь описание изображения

Другой вариант — всегда встраивать настраиваемое действие, но ничего не делать в нем, если установлено какое-либо свойство (например, для указания режима выпуска). Вы можете использовать CustomActionData для передачи информации в настраиваемые действия.

person Simon Mourier    schedule 29.03.2018