Step to deploy MSI

While I understand your reasoning for using NuGet packages in Octopus, I think it would be a nice feature to also be able to deploy MSI packages via Octopus.

I’d love to be able to create a deployment step that accepts an MSI (possibly select a NuGet package that wraps an MSI if it’s easier for Octopus) and then when it is pushed out to the Tentacles, a silent install is executed. Variables can be passed in via the command line arguments by specifying a list of parameters in the web interface and setting them either to specific values or referencing variables which will then be substituted at release time. (And probably worth having the ability to push out the MSI without installing it, thereby leaving that step up to customers to perform themselves.)

For me, the benefits of using MSIs is that you get a transaction-based installer which is much easier than trying to replicate the same thing in PowerShell scripts. It’s also useful when you have to produce MSIs for manual deployments in other environments and you can then be sure to use the same installer in both deployment types, as well as having the option to deploy the installer to a customer but requiring them to actually execute the installer (in this case, they can use the installer UI and customise the install as necessary). Deploying MSIs also enable users to repair or uninstall the software themselves.

+1 for this

We use MSI for prereqs atm, what we’ve done in the past though is package the MSI into a nuget package and created a powershell script to install it that lives in the Deploy.ps1

Would be convenient not to have to do this.

Also another issue we have with some of the prereqs is that they require reboots, so it would be nice if octopus supported reboots between steps


+1 for this feature.

+1 for this request

Is there anything preventing you from deploying an MSI today? Just create a NuGet-package containing the MSI, and execute the MSI with parameters using PostDeploy.ps1 ?

Yea you can, but it’s a “multi” step process and isn’t perfect.

Tried this with MS SQL for an extreme example.

SQL 2008 R2 on Win Srv 2012.

Initially it refuses to install because there is a warning that you can’t bypass from command line execution. This error is to do with SP1 being required (mS doesn’t supply a downloaded preSP’d installer)

This is solved by slip streaming the SP into the installer (instructions on a KB article), then PowerShell will finally run it.

Fails and Octopus throws up the error to a failed deploy.

Reboot target box, run again, Fails

Reboot target box, run again, Success.

Basically if you are designing a feature specifically around MSis then these things are going to get picked up and addressed, reboots during install process are a perfect example of something that is unheard of for .NET apps, but if you are using octopus to deploy non-.NET (i.e. msi for other pre-req apps) then these issues are going to be more common.