The Windows Installer for Jenkins has been around for many years as a way for users to install a Jenkins controller on Windows as a service. Since it’s initial development, it has not received a lot of updates or features, but that is about to change.

First, let’s take a look at the current installer experience.

Step 1

Installer Startup

This is the default look and feel for a Windows Installer using the WiX Toolset, not very pretty and doesn’t give much branding information as to what the installer is for.

Step 2

Installation Directory

Again, not much branding information.

Step 3

Install It

The installer in general does not give many options for installing Jenkins, other than selecting the installation location.

Issues

The current installer has a few issues that the Platform SIG wanted to fix in a new install experience for users.

  1. The installer only supports 32-bit installations.

  2. The user could not select ports or user accounts to run the service on.

  3. The installer bundled a 32-bit version of the Java runtime instead of using a pre-existing JRE

  4. The installer did not support the experimental support in Jenkins for Java 11

  5. The JENKINS_HOME directory was not placed in a good spot for modern Windows

  6. There is no branding in the installer.

Road Forward

With the experimental Jenkins Windows Installer, most of these issues have been resolved!

  1. The installer will only support 64-bit systems going forward. This is the vast majority of Windows systems these days, so this will help more users install Jenkins using the installer package.

  2. The user is now able to enter user information for the service and select the port that Jenkins will use and verify that the port is available.

  3. The installer no longer bundles a JRE, but will search for a compatible JRE on the system. If the user wants to use a different JRE, they can specify during install.

  4. The installer has support for running with a Java 11 JRE, including the components listed on the Java 11 Preview Page.

  5. the JENKINS_HOME directory is placed in the LocalAppData directory for the user that the service will run as, this aligns with modern Windows file system layouts.

  6. The installer has been updated with branding to make it look nicer and provide a better user experience.

Screenshots

Below are screenshots of the new installer sequence:

Step 1

Installer Startup

The Jenkins logo is now a prominent part of the UI for the installer.

Step 2

Installation Directory

The Jenkins logo and name are now in the header during all phases of the installer.

Step 3

Account Selection

The installer now allows you to specify the username/password for the account to run as and checks that the account has LogonAsService rights.

Step 4

Port Selection

The installer also allows you to specify the port that Jenkins should run on and will not continue until a valid port is entered and tested.

Step 5

JRE Selection

Instead of bundling a JRE, the installer now searches for a compatible JRE on the system (JRE 8 is the current search). If you want to use a different JRE on the system than the one found by the installer, you can browse and specify it. Only JRE 8 and JRE 11 runtimes are supported. The installer will automatically add the necessary arguments and additional jar files for running under Java 11 if the selected JRE is found to be version 11.

Step 6

Install It

All of the items that users can enter in the installer should be overridable on the command line for automated deployment as well. The full list of properties that can be overridden will be available soon.

Next Steps

The new installer is under review by the members of the Platform SIG, but we need people to test the installer and give feedback. If you are interested in testing the new installer, please join the Platform SIG gitter room for more information.

There are still some things that are being researched and implemented in the new installer (e.g., keeping port and other selections when doing an upgrade), but it is getting close to release.

In addition to updates to the MSI based Windows installer, the Platform SIG is working on taking over the Chocolatey Jenkins package and releasing a version for each update.

About the Author
Alex Earl

Alex comes from a .NET background but likes to get his hands dirty in many different languages and frameworks. He currently does embedded development in a silicon validation group. He is an internal evangelist for Jenkins at his company. Alex is a community contributor to Jenkins, working on plugin hosting and maintaining several plugins. He is also involved in a few SIGS. Alex enjoys working on open source software in his "free" time as well as spending time with his family.