在Build Drop Path上的WiX输出中创建文件夹

时间:2012-04-03 07:57:14

标签: msbuild wix tfsbuild votive

我对WiX有疑问。但是让我先描述一下我的情况: 我有一个VS2010解决方案并添加了一个WiX(Votive)项目来进行安装。我正在TFS构建服务器上构建此安装程序。不幸的是,我的所有文件(* .dll,* .sql,*。msi,* .whatever)被盲目地复制到相同的输出路径中!我已经将一个带有Move-Task的msbuild目标添加到我的Setup.csproj文件中,将我的msi,bat和sql文件移动到一个单独的文件夹中,但不幸的是,这对TFS-Build不起作用。

这是问题(imho): 我在Votive所做的是一个早期阶段。我可以制作文件夹并移动文件,但我在csproj文件中写的内容是在TFS随机取出所有二进制文件并将它们放入放置位置之前完成的。

我是如何解决的:

  1. 我在wix2010.targets文件中搜索了一个移动或复制命令,其中被移动到build_drop但我找不到它。
  2. 我查看了构建流程模板,但我不知道语言或语法。有什么关系吗?
  3. 在Build Defaults中的Build defintion中,选中“This build将输出文件复制到drop文件夹”,我必须添加我的放置位置。我有什么可以改变的吗?
  4. 我的问题: 如何使用WiX安装文件创建子文件夹并在TFS Build上将某些文件移入其中?

    希望你能帮忙! 在此先感谢!

2 个答案:

答案 0 :(得分:1)

如果您只需要移动文件以便安装程序知道从哪里获取它们,那么另一种方法是将config.wxi文件添加到安装程序,该文件指向源文件的位置。您可以阅读有关此here的更多信息。虽然使用这种方法,您可能必须在安装程序编译时修改config.wxi以指向新的构建位置或删除位置。如果您熟悉MSBuild,Tranxition Build Tasks可以帮助您轻松修改WiX .wxi文件。您也可以编写自己的脚本来执行此操作,但无论哪种方式,您都必须从运行构建的构建定义中启动脚本或构建任务。

如果您正在使用Team Build 2010并且只想在构建过程中复制文件和文件夹,那么您将需要修改运行构建过程的.xaml Team Build定义。埃瓦尔德霍夫曼在Customizing Team Build definitions上写了一篇精彩的系列文章。

答案 1 :(得分:1)

我不确定我是否按照您的提问,但我认为您抱怨您的DLL / EXE / et all和MSI都存档在一个目录中。是的,我也不喜欢这个。

我所做的是创建称为应用程序,合并模块和设置的解决方案平台。然后我告诉TFS建立:

发布|应用 发布|合并模块(选项,您可能没有任何构建) 发布|设置

这会导致我的所有DLL / EXE / Content都归档到\ Application \ Release,我的所有合并模块都要归档到\ Merge Modules \ Release和我的MSI归档到\ Setup \ Release

这适合我。

相关问题