从 Powershell 构建 MSI 包

Building an MSI package from Powershell

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

我的软件经理的要求之一是为我们的软件构建 MSI 包(至少在我们对新版本进行版本化时用于生产构建)。由此产生的问题有两个:

1) 后端软件由多个项目组成,这些项目彼此之间存在各种奇怪的依赖关系(以及在外部 SSIS 项目上,我们需要将其视为 "black box" 在我的项目之外无法控制)和 1 个可执行文件,它使用大部分但不是所有来自其他项目构建的 DLL。

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

后端和前端可能会有不同的安装项目。但是在每个安装项目中,我是否只是将所有构建项目的输出添加到应用程序文件夹中,并希望最好将它们全部放入 MSI 安装的正确输出文件夹中?

2) 如何从 Cake Build and/or Powershell 实例化安装项目(构建安装程序的项目)的构建?我想确保这只对我们从 master 分支构建的发布版本运行。有没有我需要了解的 Azure 工具。

请理解,因为这是我的第一个完整的 DevOps 实施,自从学校毕业以来,我已经 10 年没有构建 .NET 安装程序包,而且我的 Powershell 技能很烂(来自 Web development/Linux 世界) .

Windows 安装程序 XML (WiX 工具集) 是一种构建 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 集成。教程里都有说明。

你的任务很艰巨。有兴趣的人可以咨询服务。