I’m currently setting up a nightly build system for Quasar on my Linux box which is running Debian. This system also cross-compiles Quasar for Windows.
The Windows version of Quasar is going to be available in two fashions: one self-contained, portable version and one version that can be installed.
I’m not a huge fan of installers. But when it comes to creating a setup program for a given Windows application I’m quite accustomed to Inno Setup having used it for years. Unfortunately there is no native Linux version of the Inno Setup compiler available for Linux. NSIS exists as package for Debian but I am not fond of using it, largely because I am a Delphi guy. :)
So, here is a small guide on how to get the Inno Setup compiler up and running on Debian:
First step is to install Wine either as super user or by using sudo:
sudo apt-get install wine
As normal user fire up your X server and your favourite terminal application and get the latest Inno Setup QuickStart pack:
mkdir /tmp/innosetup cd /tmp/innosetup wget http://files.jrsoftware.org/ispack/ispack-5.2.3.exe wine ./ispack-5.2.3.exe
This will start the installer in Wine. Note, for the installation you will need a running X11 server since the installer obviously is graphical. If you have not set up Wine before, the default location C:\Program Files\Inno Setup 5 will install to ~/.wine/drive_c/Programme/Inno Setup 5.
Luckily the Inno Setup compiler offers a command line interface, ISCC.exe, which will run in Wine without the necessity of having a X server running. So it is ideally suited for automated runs.
Here is a simple wrapper shell script called iscc:
#!/bin/sh unset DISPLAY scriptname=$1 [ -f "$scriptname" ] && scriptname=$(winepath -w "$scriptname") wine "C:\Program Files\Inno Setup 5\ISCC.exe" "$scriptname" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
I installed this script in my local bin directory (~/bin) and added it to the PATH environment variable.
This will allow running the Inno Setup compiler from anywhere and it also makes it very easy to integrate into a build script. You can even feed a script via stdin, e.g. something like:
iscc - < ./myscript.iss
Does this work for you?
I get this error:
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
fixme:process:SetProcessDEPPolicy (1): stub
fixme:process:SetProcessDEPPolicy (1): stub
Inno Setup 5 Command-Line Compiler
Copyright (C) 1997-2012 Jordan Russell. All rights reserved.
Portions Copyright (C) 2000-2012 Martijn Laan
Inno Setup Preprocessor
Copyright (C) 2001-2004 Alex Yackimoff. All rights reserved.
Yes, it works. I am still using this very same script to produce setups.
The first few messages look like generic wine stuff. The rest looks like ISCC is starting correctly. Did you try to produce setups from any .iss files yet?
I spoke too soon! It works just fine!
Thank you!