如何在WiX 3.6中包含依赖于配置的项目输出

Den*_*nis 6 wix visual-studio-2010 wix3.6

我想知道,如何在WiX安装项目中包含依赖于配置的项目输出?例如,让我们看看带有一个.NET应用程序和一个Wix安装项目的Visual Studio解决方案.

我在安装项目中添加了对.NET应用程序的引用,并在安装源中创建了组件:

  <Component Guid="EB0CBC32-5AE5-41B3-A343-FEBE044AC30A">
    <File Source="$(var.MyApp.TargetPath)" KeyPath="yes"/>
  </Component>
Run Code Online (Sandbox Code Playgroud)

因此,我预计,WiX将在其发布设置msi中包含MyApp 的发行版本,并在调试msi中分别包含调试版本.否则,对项目输出的引用对我来说没有意义.

但总有调试版本.我究竟做错了什么?

UPDATE.

这是来自VS输出窗口的蜡烛命令提示符:

------ Rebuild All started:项目:MySetup,配置:发布x86 ------
C:\ Program Files\WiX Toolset v3.6\bin\candle.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_ProjectOutput -dSolutionPath = D:\ Projects\Research\Wix_ProjectOutput\Wix_ProjectOutput.sln -dConfiguration = Release -dOutDir = ..\Release\-dPlatform = x86 -dProjectDir = D:\ Projects\Research\Wix_ProjectOutput\MySetup\-dProjectExt = .wixproj -dProjectFileName = MySetup.wixproj -dProjectName = MySetup - dProjectPath = D:\ Projects\Research\Wix_ProjectOutput\MySetup\MySetup.wixproj -dTargetDir = D:\ Projects\Research\Wix_ProjectOutput\Release\-dTargetExt = .msi -dTargetFileName = MySetup.msi -dTargetName = MySetup -dTargetPath = D:\Projects\Research\Wix_ProjectOutput\Release\MySetup.msi -dMyApplication.Configuration = Debug -d"MyApplication.FullConfiguration = Debug | x86"-dMyApplication.Pl atform = x86 -dMyApplication.ProjectDir = D:\ Projects\Research\Wix_ProjectOutput\MyApplication\-dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectFileName = MyApplication.csproj -dMyApplication.ProjectName = MyApplication -dMyApplication.ProjectPath = D:\ Projects\Research\Wix_ProjectOutput\MyApplication\MyApplication.csproj -dMyApplication.TargetDir = D:\ Projects\Research\Wix_ProjectOutput\Debug\-dMyApplication.TargetExt = .exe -dMyApplication.TargetFileName = MyApplication.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 
Run Code Online (Sandbox Code Playgroud)

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.sln -dConfiguration = Release -dOutDir = ..\Release\-dPlatform = x86 -dProjectDir = D:\ Projects\Research\Wix_ProjectOutput\MySetup\-dProjectExt = .wixproj -dProjectFileName = MySetup.wixproj -dProjectName = MySetup -dProjectPath = D:\ Projects\Research\Wix_ProjectOutput\MySetup\MySetup.wixproj -dTargetDir = D:\ Projects\Research\Wix_ProjectOutput\Release\ - dTargetExt = .msi -dTargetFileName = MySetup.msi -dTargetName = MySetup -dTargetPath = D:\ Projects\Research\Wix_ProjectOutput\Release\MySetup.msi -dMyApplication.Configuration = Release -d"MyApplication.FullConfiguration = Release | x86"-dMyApplication .Platform = x86 -dMyApplication.ProjectDir = D:\ Projects\Research\Wix_ProjectOutput\MyAp plication\-dMyApplication.ProjectExt = .csproj -dMyApplication.ProjectFileName = MyApplication.csproj -dMyApplication.ProjectName = MyApplication -dMyApplication.ProjectPath = D:\ Projects\Research\Wix_ProjectOutput\MyApplication\MyApplication.csproj -dMyApplication.TargetDir = D:\ Projects\Research\Wix_ProjectOutput\Release\-dMyApplication.TargetExt = .exe -dMyApplication.TargetFileName = MyApplication.exe -dMyApplication.TargetName = MyApplication -dMyApplication.TargetPath = D:\ Projects\Research\Wix_ProjectOutput\Release\MyApplication.exe -out obj\Release\-arch x86 Product.wxs

所以,在msbuild下一切都还可以.

更新3.

看起来WiX使用主动构建配置(请参阅VS工具栏中的组合框).
我的意思是,如果Debug在那里选择,WiX项目将包括引用项目的调试输出.如果Release选中,则WiX项目将包括发布输出.

从我的角度来看,这种行为是不正确的.Debug安装程序必须包含引用项目的调试输出.Release安装程序 - 释放输出.

在这里发布了bug ,但现在关闭没有任何解释.

有任何想法吗?

BBR*_*BBR 9

您可以使用$(var.Configuration),它被设置为解决方案配置(Debug,Release等...):

<File Id="MyApp.exe" KeyPath="yes" Source="..\MyApp\$(var.Configuration)\MyApp.exe" />
Run Code Online (Sandbox Code Playgroud)


Deq*_*ing 0

尝试添加变量 ofMyApplication.Configuration并将其设置Release为以下步骤:

  1. 在解决方案资源管理器中右键单击项目的“引用”节点,然后选择“添加引用...”
  2. 在“添加 WiX 库引用”对话框中,单击“项目”选项卡。
  3. 选择所需的项目并单击“添加”按钮,然后单击“确定”关闭该对话框。

详细信息请参见此处