AppInstaller details

So here’s a little more about the AppInstaller software repository and installer. It simplifies package management.

Applications often have pre-requisites or dependencies on each other. For example, an application written in JAVA will have a dependency on a specific Java Runtime Environment version. The application installer may fail if the pre-requisite hasn’t been installed first.

A naming convention is used to organise packages. This naming convention is used because following vendor software naming breaks down quickly as vendors change name due to purchases/takeovers and marketing departments go off-piste with product naming (Office XP, Office 2010, Office 2013, Office 365).

The naming convention goes something like this:

  • Applications are assigned a number: App 1, APP2 etc..
    • The first packaged major version of an application is V01. The next is V02. Major versions of software can often be installed side by side.
      • The first release of an application version is R001. The next is R002. Any change to the package is a new release. This can be a new minor version of an app, a change of configuration or just an improvement to the install routine.
        • Releases are tagged with the operating systems for which this release is compatible
        • Releases can have a pre-install command line (useful for removing old versions)
        • Releases have a command line to install the software unattended
        • Releases can have a post-install command line (useful for applying application configuration, changing folder permissions etc..)
        • Releases can have a user 1st logon action (Microsoft ActiveSetup). This adds default app configuration to user profile during next logon.
    • Bundles are collections of applications. They’re used to collect groups of software together for deployment as a suite. This is useful for desktop baselines (eg Desktop standard apps, IT dept apps, trading apps suite)

So here is an example software repository with applications and some bundles:
APP00001V01R001 – Internet Explorer 9 (XP 32bit)
APP00001V01R002 – Internet Explorer 9 (Windows 7 32bit)
APP00001V01R003 – Internet Explorer 9 (Windows 7 64bit)
APP00001V02R001 – Internet Explorer 10 (Windows 7 32bit)
APP00001V02R002 – Internet Explorer 10 (Windows 7 64bit)
APP00002V01R001 – RDP 8.1 (Windows 7 32bit)
APP00002V01R002 – RDP 8.1 (Windows 7 64bit)
APP00003V01R001 – Office 2010 RTM (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00003V01R001 – Office 2010 SP1 (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00003V01R002 – Office 2010 SP2 (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00003V02R002 – Office 2013 RTM (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00004V01R001 – VMware Tools 32bit (Windows 7 32bit)
APP00004V01R002 – VMware Tools 64bit (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00005V01R001 – Install and configure SNMP (Windows Server 2012 R2)
APP00006V01R001 – Oracle Java Runtime 6 update 20 (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00006V01R002 – Oracle Java Runtime 6 update 42 (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2)
APP00007V01R001 – In House Java app (Windows 7 32bit, Windows 7 64bit, Windows Server 2012 R2). Dependency on APP0006 JRE6
APP00008V01R001 – Bloomberg Professional Feb 2015 (Windows 7 64bit). Dependencies on APP00003V01, APP0009 .Net4
APP00009V01R001 – .Net Framework 4

    • BUNDLE 1 – Desktop core apps
        • APP00001
    • APP00002
    • APP00003V01
    • APP00007
  • Bundle 2 – Server core apps
      • APP00005
  • Bundle 3 – Software for VMware VMs
      • APP00004
  • Bundle 4 – Trader PC apps
      • APP00008

Requesting BUNDLE1 on an XP desktop will install APP00001V001R001 only since that is the only release compatible with that platform

Requesting BUNDLE1 on a windows 7 32bit will install:

  • IE 10 32bit (because that’s the latest compatible release)
  • Followed by RDP8.1 for Windows 7 32bit
  • Followed by Office 2010 SP2 (because that’s the latest compatible release of V01. Office 2013 is in the repository but bundle 1 specifically requests Office 2010)
  • Followed by JRE6u42 (latest compatible JRE6 release, required for APP00007)
  • Followed by the In House Java app

Requesting Bundle 8 on a Windows 7 64bit will install

  • Office 2010 SP2 (because that’s the latest compatible release of V01, first dependency of Bloomberg)
  • .Net Framework 4 (dependency of Bloomberg)
  • Bloomberg Profession (latest packaged release)

If a new JRE6 or Bloomberg update is packaged, there is no need to update any dependency links. The loose coupling between bundles and app dependencies means the new release will automatically be picked up by future installs. If you manage dependencies between programs in Microsoft System Centre Configuration Manager you’ll know how laborious maintaining package independencies can be.

Software installer source files are stored in a directory structure, typically presented via a Distributed File System (DFS) as a read-only share. This directory structure can be replicated between sites (DFSR or filer level replication). For example Office 2010 SP2 would be store in \\\IT\packages\APP00003V01\R002

The software repository metadata is an XML document \\\IT\packages\db\apps.xml

In future I’ll probably hook into Microsoft OneGet, especially if it can be back-ported to Win7 and 2012R2.

Find more IT Infrastructure tips at

Leave a Reply