Мне интересно, как включить вывод проекта, зависящий от конфигурации, в WiX Setup Project? Например, давайте посмотрим на решение Visual Studio с одним приложением .NET и одним проектом установки Wix.
Я добавил ссылку на приложение .NET в проект установки и создал компонент в источнике установки:
<Component Guid="EB0CBC32-5AE5-41B3-A343-FEBE044AC30A">
<File Source="$(var.MyApp.TargetPath)" KeyPath="yes"/>
</Component>
Итак, я ожидаю, что WiX будет включать выпуск версии MyApp в свой выпуск setup msi, а отладочную версию - в msi отладки соответственно. В противном случае ссылка на результаты проекта для меня не имеет смысла.
Но всегда есть отладочная версия. Что я делаю неправильно?
ОБНОВЛЕНИЕ.
Вот командная строка свечи из окна вывода VS:
------ Перестройка Все запущено: Проект: MySetup, Конфигурация: Выпуск x86 ------
C: \ Program Files \ WiX Toolset v3.6 \ bin \ свеча. exe -d "DevEnvDir = C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \" -dSolutionDir = D: \ Projects \ Research \ Wix_ProjectOutput \ -dSolutionExt = .sln -dSolutionFileName = Wix_ProjectOutput.sln -dSolutionName = Wix_ dSolutionPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Wix_ProjectOutput.sln -dConfiguration = Release -dOutDir = .. \ Release \ -dPlatform = x86 -dProjectDir = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ -dProjectExt =. dProjectFileName = MySetup.wixproj -dProjectName = MySetup -dProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ MySetup.wixproj -dTargetDir = D: \ Projects \ Research \ Wix_ProjectOutput \ ReleaseExt. msi -dTargetName = MySetup -dTargetPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ MySetup.msi -dMyApplication.Configuration = Debug -d "MyApplicati on.FullConfiguration = Debug | x86 "-dMyApplication.Platform = x86 -dMyApplication.ProjectDir = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ -dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectExt = .csproj -dMyApplication. MyApplication -dMyApplication.ProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MyApplication \ MyApplication.csproj -dMyApplication.TargetDir = D: \ Projects \ Research \ Wix_ProjectOutput \ Debug \ -dMyApplication.exe. exe -dMyApplication.TargetName = MyApplication -dMyApplication.TargetPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Debug \ MyApplication.exe -out obj \ Release \ -arch x86 Product.wxs
Почему для выпуска сборки MySetup использовалась отладочная конфигурация MyApplication ??
ОБНОВЛЕНИЕ 2.
И вот командная строка свечи при использовании msbuild из командной строки:
%windir%\Microsoft.NET\Framework\v4.0.30319\MsBuild.exe /verbosity:d /t:rebuild /fileLogger /p:Configuration=Release Wix_ProjectOutput.sln
In msbuild.log
:
C: \ Program Files \ WiX Toolset v3.6 \ bin \ Candle.exe -d "DevEnvDir = Не определено, если создается не из Visual Studio" -dSolutionDir = D: \ Projects \ Research \ Wix_ProjectOutput \ -dSolutionExt = .sln -dSolutionFileName = Wix_ProjectOutput.sln -dSolutionName = Wix_ProjectOutput -dSolutionPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Wix_ProjectOutput. : \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ -dProjectExt = .wixproj -dProjectFileName = MySetup.wixproj -dProjectName = MySetup -dProjectPath = D: \ Projects \ Research \ Wix_ProjectOutput \ MySetup \ Myproget- Research \ Wix_ProjectOutput \ Release \ -dTargetExt = .msi -dTargetFileName = MySetup.msi -dTargetName = MySetup -dTargetPath = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ MySetup.msi -dMyApplication <-dMyApplication. > -d "MyApplication.FullConfiguration = Release | x86" -dMyApplication.Platform = x86 -dMyApplication.ProjectDir = D: \ Projects \ Researc h \ Wix_ProjectOutput \ MyApplication \ -dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectFileName = MyApplication.csproj -dMyApplication.ProjectName = MyApplication -dMyApplication.ProjectPathlication MyApplication -dMyApplication. = D: \ Projects \ Research \ Wix_ProjectOutput \ Release \ -dMyApplication.TargetExt = .exe -dMyApplication.TargetFileName = MyApplication.exe -dMyApplication.TargetName = MyApplication -dMyApplication.TargetPath = MyApplication \ Projects \ Research .exe -out obj \ Release \ -arch x86 Product.wxs
Итак, под msbuild все в порядке.
ОБНОВЛЕНИЕ 3.
Похоже, WiX использует активную конфигурацию сборки (см. Поле со списком на панели инструментов VS).
Я имею в виду, что если там выбрано Debug
, проекты WiX будут включать отладочные данные для проектов, на которые есть ссылки. Если выбран Release
, проекты WiX будут включать выходные данные выпуска.
С моей точки зрения, такое поведение неверно. Debug
установщик должен включать вывод отладки упомянутых проектов. Release
установщик - вывод выпуска.
Сообщение об ошибке было размещено здесь, но теперь оно закрыто без каких-либо объяснений.
Любые идеи?