"Marko Kocić" <marko.kocic@...> writes:
> I created binary installer script for SBCL using Inno Setup, which
> could be used for windows binary distribution.
Nice work! Inspired by this I made one with Wix.
WiX is an msi compiler and linker that eats XML, and spits out
the msi. I generate the input for WiX from lisp:
(Both links good for a limited time only.)
> - Let user choose install dir (defaults to Program Files\$version$).
> - Copy all files to install_dir\bin and install_files\lib\sbcl
This one installs both the runtime and core the the same folder,
and also puts all the contribs that passed their tests there.
> - sets SBCL_HOME user environment variable
> - adds bin dir at the beginning of user PATH
The same, except mine adds to the end.
> - Create quick launch and destop items
Not done yet. I think it's time for an icon contest!
> - Creates Menu group with icons to start sbcl.exe, http://www.sbcl.org and
Not done yet.
> - Uninstaller removes SBCL_HOME and deletes program folder.
Ditto (unsintall from the Add/Remove Programs).
> I decied to use Program Files\$version$ as default install dir in
> order to allow multiple versions of SBCL to be installed without
I went with $PROGRAMFILES/Steel Bank Common Lisp/$version.
My motivation for the name was to ensure people installing on Windows
have to deal with spaces in pathnames, so bugs get shaken out. ;-)
> conflict. I think it is generaly ready to be used for binary
> distribution of sbcl because it creates self containing enstaller,
> without need for end user to install msys/mingw on windows just to be
> able to install SBCL.
Right. I think an installer is good even for tech-savvy people.
> Steps to create installer:
Install WiX 2.0. (Available from Sourceforge.)
Download wxs.lisp to tools-for-build/.
Build sbcl. Do not run install.sh.
Run wxs.lisp in tools-for-build with the freshly built sbcl. This
Run "candle sbcl.wxs"
Run "light sbcl.wixobj %WIX_PATH%/wixui.wixlib \
-loc %WIX_PATH%/WixUI_en-us.wxl \
The way I see it, WiX has the great benefit of having an input format
we can easily generate from Lisp while keeping the lisp itself in CVS.
One thing that is probably very wrong with my installer is that it
generates new GUIDs every time it is built.
As far as I can figure it out the Deep Idea is that a GUIDs should
refer to a specific version of the an Installer Component (eg. SBCL
runtime + core). So the right thing would be to keep authoritative
GUIDs in CVS and update them for each release.
-- Nikodemus Schemer: "Buddha is small, clean, and serious."
Lispnik: "Buddha is big, has hairy armpits, and laughs."