New Windows installer nearly ready

dinkypumpkin dinkypumpkin at
Sun Aug 21 16:20:49 EDT 2011

Thanks to a very delayed and very long flight with a very broken 
in-flight entertainment system, I finally had an opportunity to finish 
up and document some work I've been doing on a new Windows installer for 
get_iplayer.  It should be ready to go as soon as it can be tested with 
a new release of get_iplayer and the associated server infrastructure. 
For the few who may be interested, some info about the changes is below. 
  If you have any comments, questions, bugs - please reply to this thread.

Main Goals:

1. Update the installer to use more recent versions of Perl and the 
various helper applications.
2. Incorporate additional Perl modules used for MP3 tagging.
2. Automate and document the installer build process.
3. Make it possible to to build the installer on Windows with a minimum 
of additional dependencies.
4. Incorporate some improvements from a "private label" installer I put 
together a while back.


1. The main improvement is in how the installer handles the download and 
install of the helper applications.  The goal was to enable the 
installer to deal with changes in format or structure of the helper app 
distributions without the need to change the actual installer code.

a. It should now handle PKZIP and 7-ZIP archives, as well as standalone 
EXE files, without the need to know the file type beforehand.

b. In the case of archives, it can do a simple search for the relevant 
EXE in the expanded archive, so it doesn't need to know the archive 
structure beforehand.

c. There are limitations.  I've restricted it to only locate 32-bit 
Windows executables.  I needed some way to disambiguate 
multi-architecture archives, and I thought it simplest to keep 
get_iplayer a 32-bit zone.  It also only looks for simple EXE names 
(ffmpeg.exe, rtmpdump.exe, etc.).

2. The new installer should look and work the same for an end user.  It 
should also be capable of performing a clean update install over a clean 
install of the previous version.

3. Although it isn't visible in the end product, I did a fair amount of 
code cleanup in the installer script.   I also instrumented the 
installer script so it is more configurable and a little easier to work 
with in development.

4. The build scripts are bog-standard Windows batch files that hopefully 
should run anywhere (I used WinXP SP3).  They work in various 
permutations, but the bottom line is that they should make it possible 
for someone to:

- install the prerequisites
- download a snapshot of get_iplayer
- run a single command
- get a ready-to-run installer

See the link to documentation below.

5. It is also possible to build just the required Perl support with a 
single command. The archived Perl support can then be kept and used for 
builds on other platforms.  I also adjusted the Linux/OSX build script 


A pre-release version of the code can be found in the "installer" branch 
of my Github repository:

The new code is in the "windows" folder.  I've also moved the installer 
script (get_iplayer_setup.nsi) from "windows\get_iplayer" to "windows" 
in order to keep all the installer source together.

Also in the "windows" folder is documentation in Markdown format 
(  The documentation can also be viewed here:

I've kept everything in a separate branch for now.  I'll squash the 
final release version into a single commit before bringing it back into 
the master branch.

A Warning to the Brave:

If you should decide to try out the build process for yourself, be aware 
that this pre-release version of the code hard-wires the installer in 
several ways:

- It pops up a "pre-release version" warning message on launch
- It does not check for updated versions of itself.
- The download URLs for the helper applications are fixed in the 
installer code, rather than using the CGI redirect system at  The resources currently referenced by the redirects have 
not yet been updated.
- It embeds the latest patched version of get_iplayer, along with the 
web pvr manager and plugins.  It will not download or update those files 
from the internet.  Not much point in using the old code with a new 
installer and new helper apps.

More information about the get_iplayer mailing list