【问题标题】:Help with one step build all projects + installer (.NET + WiX)帮助一步构建所有项目 + 安装程序 (.NET + WiX)
【发布时间】:2020-09-14 03:20:44
【问题描述】:

我在安装程序上有预构建事件,以使用适当的配置等重新构建项目。

如果我在 Visual Studio 中的 WiX (3.0) 项目上右键单击构建/重建,它一切构建正常,但如果我尝试在 wixproj 文件上运行 MSBuild,预构建事件将引发错误。

我可以改为在 wixproj 上调用 Candle 和 Light,但它不会运行预构建事件。

预构建事件依赖于 VS 提供的宏,除了创建另一个项目之外,我不知道如何解决这个问题,基本上只是使用项目的预构建事件,这简直是骇人听闻。

另一个问题是我需要从命令行向 WiX 输入一个自我更新的版本号。

我原本打算只使用一个 csproj 来处理版本号并更新它,然后只使用 MSBuild 和 Candle 和 Light,但问题是我不知道如何从代码访问解决方案目录硬编码

【问题讨论】:

  • 还有什么错误?我花了很长时间让 WiX 路径在开发和构建机器上工作。如果这是你的问题,有办法做到这一点。至于版本控制,我不知道...

标签: visual-studio msbuild build-process wix


【解决方案1】:

我们发现使用实用程序编辑项目本身并在使用我们的自动构建器(在我们的例子中为 VisualBuild)构建它之前转储所有预构建和构建后事件是最简单的。

这给我们留下了一个漂亮而多汁的构建过程,它不依赖于 IDE 中的任何讨厌的 hack,让我们可以完全控制源代码的来源和构建组件的去向。

【讨论】:

    【解决方案2】:

    我正在使用另一种适合我的方式,which I described here

    • 我维护版本号in a batch file,它只是将其写入环境变量
    • 我通过运行a batch file 创建我的发布版本,它首先调用“版本号”批处理文件(所以我在一个名为%VersionNumber% 的环境变量中有版本号),然后执行MSBuild project file
    • MSBuild 项目文件构建解决方案,如果存在,我通过从环境变量读取它来获取the .csproj file 中.exe 的版本号(然后我使用MSBuild Community Tasks 创建一个AssemblyInfo 文件带有预构建事件中的版本号)
      这意味着从 Visual Studio 构建时 .exe 的版本为 0.0,但我对此很好,因为我从批处理文件创建了所有版本。
    • 要使用 WiX 设置创建一个发布版本,我执行another batch file,它只调用上面提到的“构建”批处理文件,然后调用 WiX 实用程序candlelight构建实际设置。
    • candle 使用 this .wxs file 创建设置,我再次从环境变量中获取版本号:$(env.VersionNumber)
    • light 创建的最终.msi 文件在其文件名中包含版本号,因为我将文件名(包括带有版本号的环境变量)作为参数传递:@ 987654339@

    一开始我花了一段时间才弄清楚这一切,但现在我以类似的方式发布我的所有项目。

    【讨论】:

    • 回购已删除!sdsfdsfds
    • 所有链接现在都已修复。该 repo 现在在 GitHub 上 - Bitbucket 上的一个是 Mercurial repo,在 BB 完全放弃对 Mercurial 的支持后消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多