Rules to Better Installers

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 Services ​and book in a consultant.​​​

Hold on a second! How would you like to view this content?
Just the title! A brief blurb! Gimme everything!
  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]
    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
    Figure: Edit Filters dialog
    Figure: Bad Example - Synced folder contains files that are not supposed to be deployed
    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
    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​
    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)
    Bad example: Sharing source or binaries via File Shares or Version Control
    OK example: Sharing source or binaries via 3rd party tools like ProGet, MyGet
    Good example: Sharing source or binaries via packages created using VSTS Team Build
              
    package-management-site.png
    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)