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.

Changes/Additions:

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 accordingly.

Code/Documentation:

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

https://github.com/dinkypumpkin/get_iplayer/tree/installer

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:

https://github.com/dinkypumpkin/get_iplayer/wiki/installer

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 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.


_______________________________________________
get_iplayer mailing list
get_iplayer@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/get_iplayer

Reply via email to