Reputation: 1252
We are setting up a new Azure DevOps pipeline to deploy our (awful) legacy software to our private server. Our goal is to use a modified Git Flow process to build and deploy our software for the Dev, Stage, and then Production (or Release) servers. We are using Cake scripts and Powershell scripts for the building of the different pieces of our software.
One of the requirements from my Software Manager is to build MSI packages for our software (at least for the Production builds when we version a new release). There are two problems that arise from this:
1) Back end software is made up of several projects with all kinds of weird dependencies off of each other (and on external SSIS project which we need to consider as a "black box" outside of our project that I have no control over), and 1 executable which uses most, but not all of the DLLs from the building of the other projects.
The front end software is a Sitecore project which is simply a bunch of DLLs and files that need to be copied from one place to another with an IIS restart to refresh the servers.
The back end and the front end will likely have separate Setup projects. But in each setup project, do I just add in all of the built projects' output to the Application Folder and hope for the best that they all get put in the right output folders on MSI install?
2) How do I instantiate the build of the Setup project (the project which builds the installer) from Cake Build and/or Powershell? I want to make sure this only runs for the Release builds that we build from the master branch. Is there an Azure tool I need to be made aware of.
Please be understanding as this is my first full DevOps implementation, I haven't built an .NET installer package in 10 years since school, and my Powershell skills suck (came from a Web development/Linux world).
Upvotes: 1
Views: 2713
Reputation: 55600
Windows Installer XML (WiX Toolset) is a language / compiler that builds MSIs. It has MSBuild / Visual Studio integration support. It can easily be built in an Azure DevOps pipeline and doesn't require Cake or Powershell to do do.
I have an open source project called Industrial Strength Windows Installer XML (IsWiX) which builds on top of WiX and provides project templates and graphical designers to assist with most of the WiX development. When you go past what IsWiX provides you can still author the WiX directly to meet your needs. I have some tutorials at:
https://github.com/iswix-llc/iswix-tutorials
The IsWiX project templates have built in versioning and major upgrade patterns that automatically integrate with Azure DevOps. It's all explained in the tutorial.
Your taking on a pretty big task. Consulting services are available for those interested.
Upvotes: 4