Rules

Secret ingredients to quality software

Edit
Info

Rules to Better Installers

4 Rules

Since 1990, SSW has supported the developer community by publishing all our best practices and rules for everyone to see.

If you still need help, visit SSW Consulting Servicesand book in a consultant.

  1. Do you know how to add a version number to setup package in Advanced Installer?

    Developers should add a version number at the end of the out package. E.g. SSWCodeAuditor_v14.0.0.exe

    Here is how you do it in Advanced Installer:

    1. In the navigation pane look for Media
    2. Choose Configuration tab and click in MSI name text box which is located under Output section
    3. Next to the text add [|ProductVersion]. If the text-box is empty you may want to start it with [|ProductName]

    installer add version number
    Figure: Advanced Installer - Add version to output package

  2. Do you know how to include or exclude files when syncing a folder in Advanced Installer?

    If you are syncing your Application Folder (or any other) with a local folder on a disk, you can specify which file or folders you want to sync. This is a very convenient way to keep your package smaller and clean.

    Here is how you do it:

    1. Right click the Application Folder and choose Properties
    2. Click on Filters button to open the Edit Filters dialog
    3. Click on New button to create Include pattern. Alternatively you can switch to Exclude Filters tab
    4. Enter the Pattern and press OK on each screen

    installers include exclude 1
    Figure: Edit Filters dialog

    installers include exclude 2
    Figure: Bad Example - Synced folder contains files that are not supposed to be deployed

    installers include exclude 3
    Figure: Good Example - Synced folder is filtered so that it includes only files we want to deploy

  3. Do you know what tools to use to create Setup packages?

    Market is full of tools that can create Setup packages, but only a few are really good.

    WiX is the ultimate tool which gives you complete freedom and control over Setup packages.

    Here are reasons why WiX is the way to go:

    • It is all done in XML
    • It integrates with Visual Studio
    • Full control over packages logic and UI
    • It is a recommended choice by Microsoft
    • It is FREE

    setup packages tool
    Figure: Good Example - WiX Installer for Code Auditor

    But WiX has one bad side as well – learning curve is high. Not everyone can afford learning it. The alternative is Advanced Installer.

    Advanced Installer makes it easy for you to create Setup packages using a very sophisticated GUI.

    A few reasons why Advanced Installer could be your choice:

    • It has a very sophisticated and easy to use GUI
    • It gives you wide range of options (IIS, Dialog Editor, Custom Actions, Digital Signature, Auto Updater, App Virtualization, SCCM, etc)
    • Price vs performance ratio is great + it has a FREE version which is in many cases more than enough

    advanced installer
    Figure: Good Example - Advanced Installer

  4. Do you share code using packages? (Binary and source sharing)

    Devs need a way of sharing and consuming the source code or binaries.

    VSTS is the best home to put it and share it across their organization because:

    • it caches your packages
    • it's a centralized place for your packages
    • it's constantly evolving (some really cool features are coming...check the video below)

    Sharing source or binaries via File Shares or Version Control

    Bad example

    Sharing source or binaries via 3rd party tools like ProGet, MyGet

    **OK example**

    Sharing source or binaries via packages created using VSTS Team Build

    Good example

    package management site
    Figure: Start from https://marketplace.visualstudio.com/items?itemName=ms.feed

    VSTS is about to add benefits like Component Governance, which allows policies to be set over who can and cannot use the source or binaries E.g. Licensing (MIT might be ok and GPL not ok), security - in development

    Good example: Sharing source or binaries via packages created using Sonatype Nexus. Already supports Component Governance

    Additional info

    • At 2:50 Mario Rodriguez talks about the bad ways customers share code
    • At 6:30 Mario explains to Danijel Malik how VSTS helps with the nasty problem of Diamond Dependencies (aka Binary Consumption Hell) (E.g. That's when devs are trying to get the new version of say Newtonsoft v1.9 in all projects, but one at a time)
We open source. This page is on GitHub