Basic framework for NSIS.
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 7 Jan 2008 11:19:38 +0000 (11:19 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 7 Jan 2008 11:19:38 +0000 (11:19 +0000)
.hgignore
Makefile.in
README
configure.ac
wininstaller.nsis [new file with mode: 0755]
winlicense.rtf [new file with mode: 0755]

index 3ecf0c1..33d3be5 100755 (executable)
--- a/.hgignore
+++ b/.hgignore
@@ -1,6 +1,7 @@
 syntax: glob
 META
 ocaml-libvirt-*.tar.gz
+ocaml-libvirt-*.exe
 html
 configure
 config.log
index 703d14e..3d3f561 100755 (executable)
@@ -20,6 +20,8 @@ VERSION               = @PACKAGE_VERSION@
 
 INSTALL                = @INSTALL@
 
+MAKENSIS       = @MAKENSIS@
+
 OCAMLDOC        = @OCAMLDOC@
 OCAMLDOCFLAGS  := -html -sort
 
@@ -65,6 +67,18 @@ doc:
          libvirt.{ml,mli} libvirt_version.{ml,mli}
 endif
 
+# Windows installer (requires NSIS).
+
+ifneq ($(MAKENSIS),)
+wininstaller: $(PACKAGE)-$(VERSION).exe
+
+$(PACKAGE)-$(VERSION).exe: wininstaller.nsis all # opt
+       "$(MAKENSIS)" \
+         //DPACKAGE=$(PACKAGE) //DVERSION=$(VERSION) \
+         //DOUTFILE=$@ //V2 $<
+       ls -l $@
+endif
+
 # Update configure and rerun.
 
 configure: force
diff --git a/README b/README
index b3001a3..3bcaa7e 100755 (executable)
--- a/README
+++ b/README
@@ -48,6 +48,10 @@ To build the manpages (optional):
 
   perldoc (part of Perl)
 
+To build a Windows installer (optional):
+
+  NSIS (http://nsis.sf.net)
+
 OCaml packages are available for Fedora 7 and above (ocaml,
 ocaml-findlib, ocaml-findlib-devel, ocaml-ocamldoc, ocaml-extlib,
 ocaml-extlib-devel, ocaml-lablgtk, ocaml-lablgtk-devel, ocaml-curses,
@@ -88,6 +92,16 @@ I have built libvirt (the bindings), examples, mlvirsh and
 mlvirtmanager on Windows using the MinGW port of OCaml.  It's quite
 likely that it will also work under VC++, but I have not tested this.
 
+To build the Windows installer, you will need NSIS.  Then do:
+
+  ./configure --with-nsis=/c/Progra~1/NSIS
+  make all opt
+  make wininstaller
+
+This should build a Windows binary installer called
+ocaml-libvirt-$VERSION.exe which includes the bindings, all required
+DLLs and all programs that can be built under Windows.
+
 
 mlvirsh
 ----------------------------------------------------------------------
index 63ef06f..f0ec22a 100755 (executable)
@@ -147,6 +147,21 @@ AC_SUBST(subdirs)
 dnl Check for optional perldoc (for building manual pages).
 AC_CHECK_PROG(HAVE_PERLDOC,perldoc,perldoc)
 
+dnl Check for optional NSIS.
+AC_ARG_WITH([nsis],
+       [AS_HELP_STRING([--with-nsis],
+           [use NSIS to build a Windows installer])],
+       [],
+       [with_nsis=no])
+MAKENSIS=
+if test "x$with_nsis" != "xno"; then
+    AC_PATH_PROG(MAKENSIS,makensis,[],[$with_nsis:$PATH])
+    if test "x$MAKENSIS" = "x"; then
+       AC_MSG_FAILURE([--with-nsis was given, but could not find MAKENSIS.EXE])
+    fi
+fi
+AC_SUBST(MAKENSIS)
+
 dnl Summary.
 echo "------------------------------------------------------------"
 echo "Thanks for downloading" $PACKAGE_STRING
diff --git a/wininstaller.nsis b/wininstaller.nsis
new file mode 100755 (executable)
index 0000000..e3c8fd9
--- /dev/null
@@ -0,0 +1,103 @@
+#!Nsis Installer Command Script\r
+# Copyright (C) 2008 Red Hat Inc., Richard W.M. Jones\r
+#\r
+# This library is free software; you can redistribute it and/or\r
+# modify it under the terms of the GNU Lesser General Public\r
+# License as published by the Free Software Foundation; either\r
+# version 2 of the License, or (at your option) any later version.\r
+#\r
+# This library is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+# Lesser General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU Lesser General Public\r
+# License along with this library; if not, write to the Free Software\r
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA\r
+\r
+# To build the installer:\r
+#\r
+# ./configure --with-nsis=/c/Progra~1/NSIS\r
+# make all opt\r
+# make wininstaller\r
+\r
+# Installer name.\r
+Name "OCaml Libvirt ${VERSION}"\r
+\r
+# This is where we will write the installer to, set by Makefile.\r
+OutFile "${OUTFILE}"\r
+\r
+# Target directory, or use value from the registry.\r
+InstallDir "c:\${PACKAGE}"\r
+InstallDirRegKey HKLM SOFTWARE\OCAML-LIBVIRT "Install_Dir"\r
+\r
+# Hide details.\r
+ShowInstDetails hide\r
+ShowUninstDetails hide\r
+\r
+# BZip2-compressed files are smaller but use more memory at runtime.\r
+SetCompressor bzip2\r
+\r
+# Include an XP manifest.\r
+XPStyle on\r
+\r
+# Pages in the installer wizard.\r
+Page license\r
+Page components\r
+Page directory\r
+Page instfiles\r
+\r
+# Title, data for license page.\r
+LicenseText "Continue"\r
+LicenseData "winlicense.rtf"\r
+\r
+# Title for components page.\r
+ComponentText "This will install OCaml libvirt bindings, dependent libraries and programs on your computer. Select which optional components you want installed."\r
+\r
+# Title for the install directory page.\r
+DirText "Please select the installation folder."\r
+\r
+# Installer section.\r
+Section "OCaml Libvirt bindings (required)"\r
+       SectionIn RO\r
+SectionEnd\r
+\r
+Section "Libraries (required)"\r
+       SectionIn RO\r
+SectionEnd\r
+\r
+Section "Programs (recommended)"\r
+       SetOutPath $INSTDIR\r
+       File "/oname=mlvirsh.exe" "mlvirsh\mlvirsh.opt"\r
+SectionEnd\r
+\r
+Section "Start Menu Shortcuts"\r
+       CreateDirectory "$SMPROGRAMS\${PACKAGE}"\r
+       CreateShortCut "$SMPROGRAMS\${PACKAGE}\Uninstall.lnk" "$INSTDIR\Uninstall ${PACKAGE}.exe" "" "$INSTDIR\Uninstall ${PACKAGE}.exe" 0\r
+       CreateShortCut "$SMPROGRAMS\${PACKAGE}\Virt Shell.lnk" "$INSTDIR\mlvirsh.exe" "" "$INSTDIR\mlvirsh.exe" 0\r
+SectionEnd\r
+\r
+Section "Desktop Icons"\r
+       CreateShortCut "$DESKTOP\Virt Shell.lnk" "$INSTDIR\mlvirsh.exe" "" "$INSTDIR\mlvirsh.exe" 0\r
+SectionEnd\r
+\r
+Section "Uninstall"\r
+       # Desktop icons\r
+       Delete /rebootok "$DESKTOP\Virt Shell.lnk"\r
+\r
+       # Menu shortcuts\r
+       Delete /rebootok "$SMPROGRAMS\${PACKAGE}\Virt Shell.lnk"\r
+       Delete /rebootok "$SMPROGRAMS\${PACKAGE}\Uninstall.lnk"\r
+       RMDir "$SMPROGRAMS\${PACKAGE}"\r
+\r
+       # Files in installation directory.\r
+       Delete /rebootok "$INSTDIR\mlvirsh.exe"\r
+       Delete /rebootok "$INSTDIR\Uninstall ${PACKAGE}.exe"\r
+\r
+       RMDir "$INSTDIR"\r
+SectionEnd\r
+\r
+# Write an uninstaller into the installation directory.\r
+Section -post\r
+       WriteUninstaller "$INSTDIR\Uninstall ${PACKAGE}.exe"\r
+SectionEnd\r
diff --git a/winlicense.rtf b/winlicense.rtf
new file mode 100755 (executable)
index 0000000..5333b43
Binary files /dev/null and b/winlicense.rtf differ