Writing an installer for GNU Octave

It’s time I updated my blog about the recent things I have been working on. After my last post, I have moved back to my college for a new academic semester (I am in 3rd semester now). During the last weekend, I was without an active internet connection since our Internet backbone was disrupted due to heavy lightning. Luckily, Internet has been restored now.

With more and more features being added into mxe-octave, I thought it was time to look into the installer that will be used to distribute Octave. Initially, I had started my work on NSIS. Patrick Noffke who has offered to be my backup mentor for this project suggested me to use Windows Installer XML (WiX) because of some reasons which I did find valid. Unlike NSIS which produces .exe installers, WiX produces an MSI file (.msi) which is more stable if built properly.  According to me, WiX is more customizable if compared with NSIS, which needs external plugins for adding most features. Uninstalls are automatically handled by the MSI and is very reliable.

I have written a working installer for Octave which can perform a  basic installation. I will add some option for letting the user choose the BLAS library (reference BLAS or OpenBLAS) during the next week. The WXS file which I composed can be found here. Before building the MSI file from it, you must make sure the path to all the files are set correctly. The installer has Mondo user interface with red and white colour scheme. All the contents of Octave are compressed inside an archive octave.cab. WiX provides us the choice to either embed the CAB file in the MSI installer or keep it separate. I chose to keep it embedded in order to produce a single file output, which will be easier to download.

There are two challenges I am facing right now. One is to find some way to automate the process of adding new files to the WXS file for new builds from mxe-octave. We already have a shell script in mxe-octave to generate an NSI file from the built octave directory. The other problem is to eliminate the need of a Windows installation to build an MSI from the WXS file. I am not sure if it is even needed since the XML file doesn’t need to be written from scratch. I also don’t know how to implement this as of now. I will try to complete the deliverables of the project first.

That’s all for now. See you next week.

Leave a comment