【问题标题】:Building an MSI package from Powershell从 Powershell 构建 MSI 包
【发布时间】:2019-03-19 20:35:23
【问题描述】:

我们正在建立一个新的 Azure DevOps 管道,以将我们的(糟糕的)旧版软件部署到我们的私有服务器上。我们的目标是使用修改后的 Git Flow 流程为开发、阶段和生产(或发布)服务器构建和部署我们的软件。我们使用 Cake 脚本和 Powershell 脚本来构建我们软件的不同部分。

我的软件经理提出的一项要求是为我们的软件构建 MSI 包(至少在我们发布新版本时用于生产版本)。由此产生两个问题:

1) 后端软件由几个项目组成,这些项目相互之间存在各种奇怪的依赖关系(以及外部 SSIS 项目,我们需要将其视为项目之外的“黑匣子”,我无法控制over),以及 1 个可执行文件,它使用了其他项目构建中的大部分但不是全部的 DLL。

前端软件是一个 Sitecore 项目,它只是一堆 DLL 和文件,需要从一个地方复制到另一个地方,并重启 IIS 以刷新服务器。

后端和前端可能会有单独的安装项目。但是在每个设置项目中,我是否只是将所有已构建项目的输出添加到应用程序文件夹中,并希望它们都放在 MSI 安装时的正确输出文件夹中?

2) 我如何从 Cake Build 和/或 Powershell 实例化安装项目(构建安装程序的项目)的构建?我想确保这仅适用于我们从主分支构建的发布版本。有没有我需要了解的 Azure 工具。

请理解,因为这是我第一次完整的 DevOps 实施,自从上学以来我已经有 10 年没有构建过 .NET 安装程序包了,而且我的 Powershell 技能很糟糕(来自 Web 开发/Linux 世界)。

【问题讨论】:

  • 确实有很多东西。为了提高效率,我通常使用FinalBuilder 进行自动化和构建。它是商业的。本质上是一个图形外壳,能够通过所需的任何机制(命令行、COM 等)调用几乎“任何东西”。只是更快-我的主观意见。带您从源代码签出、构建、设置分发、上传和电子邮件发送等一路走来…… WiX 很好,如果您不了解它,有一个学习曲线。有several devployment tools

标签: .net powershell azure-devops windows-installer cakebuild


【解决方案1】:

Windows Installer XML (WiX Toolset) 是一种构建 MSI 的语言/编译器。它具有 MSBuild / Visual Studio 集成支持。它可以轻松地在 Azure DevOps 管道中构建,并且不需要 Cake 或 Powershell。

我有一个名为 Industrial Strength Windows Installer XML (IsWiX) 的开源项目,它构建在 WiX 之上,并提供项目模板和图形设计器来协助大多数 WiX 开发。当您超越 IsWiX 提供的内容时,您仍然可以直接创作 WiX 以满足您的需求。我有一些教程在:

https://github.com/iswix-llc/iswix-tutorials

IsWiX 项目模板内置了自动与 Azure DevOps 集成的版本控制和主要升级模式。这一切都在教程中进行了解释。

您承担了一项艰巨的任务。有兴趣的可以使用咨询服务。

【讨论】:

  • 是的,所以我昨天花了一些时间研究 WiX,我认为这就是解决方案。据我了解,微软几乎完全贬低了旧的安装项目。 WiX 似乎也有一些 Cake 支持,并且无论如何都可以从 MSBuild 构建。是的,这可能是一项艰巨的任务,但这就是我们学习的方式。
  • 他们杀了它然后把它带回来。老实说,我不建议这样做。只是为了让您知道 WiX / MSI 有一个陡峭的学习曲线。早在 2003 年,我花了 6 个月的时间才停止把头撞到墙上,并相信这是正确的道路,而我花了 12 个月的时间才做到了那种感觉。我花了大约 5 年的时间才觉得自己是专家。
  • 是的,我看到学习曲线很陡峭。我从 Pluralsight 开始有一个教程,我可能会使用 IsWix。
  • 同意 Chris,但 MSI 本身过于复杂,本身并不是真正的 WiX。所有工具都面临同样的问题。 Here is some advice on common MSI problems。太乱了,没有任何好处,但总比没有好?除非它只是令人困惑。我不知道。
  • 也许也可以试试quick start suggestions for WiX。也很乱,但似乎有帮助。我将不得不更新我的MSI tools list 以正确包含 IsWix。
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多