从Powershell构建MSI程序包

时间:2019-03-19 20:35:24

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

我们正在建立一个新的Azure DevOps管道,以将(糟糕的)旧版软件部署到我们的私有服务器。我们的目标是使用经过修改的Git Flow流程为Dev,Stage,然后是Production(或Release)服务器构建和部署我们的软件。我们正在使用Cake脚本和Powershell脚本来构建我们软件的不同部分。

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

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

前端软件是一个Sitecore项目,该项目只是一堆DLL和文件,需要通过IIS重新启动将其从一个位置复制到另一个位置以刷新服务器。

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

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

请理解,因为这是我的第一个完整的DevOps实施,自从上学以来十年来我还没有构建.NET安装程序包,而且我的Powershell技能也很烂(来自Web开发/ Linux世界)。

1 个答案:

答案 0 :(得分:2)

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集成。在本教程中已对此进行了全部解释。

您承担着非常大的任务。有兴趣的人可以使用咨询服务。