【问题标题】:Is it possible to avoid local installation and use flat files for WiX?是否可以避免本地安装并为 WiX 使用平面文件?
【发布时间】:2010-10-05 05:52:47
【问题描述】:

背景:

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

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

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

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

假设/限制

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

问题:

是否可以避免在本地安装 WiX 工具集而改用平面文件?如果是,请说明方法。

另见:

【问题讨论】:

    标签: msbuild automation wix


    【解决方案1】:

    首先,构建您的 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 大。

    【讨论】:

    • 亲爱的。感谢您的详细说明,这就像一个魅力。
    • 您至少可以参考您的来源,即 wix 随附的 CHM 文件中的“将 WiX 项目集成到日常构建中”主题。
    • @wcoenen:是在 CHM 中吗?实际上,我通过阅读 Wix.targets、找到编译指令、确定变量的名称以及在我的父 XML 文件中定义它们来实现它。不过感谢您的参考:很高兴知道如果我阅读了文档,我就不必费力去做。
    【解决方案2】:

    我知道使用 WiX 2,您只需将可执行文件和 dll 下载到项目所在的任何目录即可。然后您创建一个 .bat 文件以使用您需要构建的参数运行烛台.exe 和 light.exe您的安装程序。

    这样,您的所有项目都可以拥有自己的 WiX 版本,每个项目的磁盘驱动器访问量仅为 4 兆。

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

    【讨论】:

    • 我要试试这个,看看它是否有效。我会带着结果回来。谢谢格兰特!
    • 是的,你可以做到。 Antik 给出了详细的解释,所以我接受了他的回答,但感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多