New Windows installer nearly ready
dinkypumpkin at gmail.com
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.
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
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
(INSTALLER.md). 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
- It pops up a "pre-release version" warning message on launch
- It does not check infreadead.org 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
infradead.org. 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