是否可以避免本地安装并使用WiX的平面文件?

时间:2009-02-03 19:29:15

标签: msbuild automation wix

背景:

我总是试图在我的项目中确保以下原则:

在结帐后,开发人员应该能够仅使用组合文件夹的内容完成所有与项目相关的任务。

显然,这并不总是可行的(例如Visual Studio for Windows开发)。但是,我真的不喜欢安装任何第三方库或特定项目的工具,如log4net,NHibernate,NUnit等。这有很多原因,包括:

  • 对于给定的开发机器,您可以使用多个不同的项目,所有项目都利用同一第三方库或工具的不同版本。
  • 最大限度地减少环境设置要求,可以更轻松地设置新的开发人员或计算机
  • 便于维护自动构建

假设/约束上

  • 我目前正在使用WiX 3测试版,但如果有2.0或3.0的方式请回复
  • 我使用的是Visual Studio 2005
  • 不需要IDE语法突出显示。

问题:

是否可以避免本地安装WiX工具集并使用平面文件?如果是,请解释如何。

另见:

2 个答案:

答案 0 :(得分:6)

首先,构建您的WiX安装程序:

  • 在Visual Studio 2005中创建新的WiX安装程序项目。
  • 相应地构建您的WiX XML。

现在,要将WiX工具包集成到源树中:

  • c:\Program Files\Windows Installer XML v3\bin复制到源树中的子目录。我使用WiX\bin相对于我的.wixproj文件。
  • c:\Program Files\MSBuild\WiX\v3.0\复制到源树中的子目录。我使用WiX\v3.0相对于我的.wixproj文件。
  • 添加以下代码或替换后面的行:

<WixTargetsPath Condition=" '$(WixTargetsPath)' == ''>$(MSBuildExtensionsPath)\Microsoft\WiX\v3.0\Wix.targets</WixTargetsPath>

使用以下行:

<WixToolPath>$(MSBuildProjectDirectory)\WiX\bin\</WixToolPath> <WixTasksPath>$(MSBuildProjectDirectory)\WiX\v3.0\WixTasks.dll</WixTasksPath> <WixTargetsPath>$(MSBuildProjectDirectory)\WiX\v3.0\Wix.targets</WixTargetsPath>

如您所见,WixToolPathWixTasksPathWixTargetsPath指令反映了我指示您复制的文件夹的位置。

  • 将.wixproj重命名为.csproj。这可以确保Visual Studio不会被.wixproj文件混淆,但因为.wixproj是一个有效的MSBuild项目,Visual Studio将能够使用它。

使用此方法,所描述的WiX目录大约为9MB。

答案 1 :(得分:2)

我知道使用WiX 2,你可以将可执行文件和dll下载到你的项目所在的任何目录中。然后你创建一个.bat文件来运行candle.exe和light.exe以及你需要构建的参数你的安装人员

这样,您的所有项目都可以拥有自己的WiX版本,磁盘驱动器每个只能达到4兆。

我不是肯定的,但我认为你可以对WiX 3做同样的事情。