Patchwork w32, w64: Add build rule for installer

login
register
mail settings
Submitter Stefan Weil
Date July 15, 2013, 9:52 p.m.
Message ID <1373925172-26834-1-git-send-email-sw@weilnetz.de>
Download mbox | patch
Permalink /patch/259272/
State Accepted
Headers show

Comments

Stefan Weil - July 15, 2013, 9:52 p.m.
The new rules in Makefile allow building installers for QEMU on Windows
using NSIS, a package which is also available for Linux distributions
(so cross builds are possible).

The rules for NSIS are in qemu.nsi which also uses two new images.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---

This code is used to build my signed installers for QEMU on Windows,
see http://qemu.weilnetz.de.

Best regards
Stefan W.


 Makefile              |   55 +++++++++++
 pc-bios/qemu-nsis.bmp |  Bin 0 -> 154542 bytes
 pc-bios/qemu-nsis.ico |  Bin 0 -> 4846 bytes
 qemu.nsi              |  250 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 305 insertions(+)
 create mode 100644 pc-bios/qemu-nsis.bmp
 create mode 100644 pc-bios/qemu-nsis.ico
 create mode 100644 qemu.nsi
Stefan Weil - July 25, 2013, 7 p.m.
Am 15.07.2013 23:52, schrieb Stefan Weil:
> The new rules in Makefile allow building installers for QEMU on Windows
> using NSIS, a package which is also available for Linux distributions
> (so cross builds are possible).
>
> The rules for NSIS are in qemu.nsi which also uses two new images.
>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>
> This code is used to build my signed installers for QEMU on Windows,
> see http://qemu.weilnetz.de.
>
> Best regards
> Stefan W.
>
>
>  Makefile              |   55 +++++++++++
>  pc-bios/qemu-nsis.bmp |  Bin 0 -> 154542 bytes
>  pc-bios/qemu-nsis.ico |  Bin 0 -> 4846 bytes
>  qemu.nsi              |  250 +++++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 305 insertions(+)
>  create mode 100644 pc-bios/qemu-nsis.bmp
>  create mode 100644 pc-bios/qemu-nsis.ico
>  create mode 100644 qemu.nsi
>


Hello Anthony,

I'd appreciate if this patch could be added to QEMU 1.6.

It is valuable for users of QEMU for Windows and does
not modify anything for other hosts, so the risk is very
low.

Should I send a pull request (it's only a single patch, so
maybe a pull request is not needed)?

Thanks,
Stefan

Patch

diff --git a/Makefile b/Makefile
index c06bfab..29f1043 100644
--- a/Makefile
+++ b/Makefile
@@ -437,6 +437,61 @@  qemu-doc.dvi qemu-doc.html qemu-doc.info qemu-doc.pdf: \
 	qemu-img.texi qemu-nbd.texi qemu-options.texi \
 	qemu-monitor.texi qemu-img-cmds.texi
 
+ifdef CONFIG_WIN32
+
+INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
+
+nsisflags = -V2 -NOCD
+
+ifneq ($(wildcard $(SRC_PATH)/dll),)
+ifeq ($(ARCH),x86_64)
+# 64 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w64
+nsisflags += -DW64
+else
+# 32 bit executables
+DLL_PATH = $(SRC_PATH)/dll/w32
+endif
+endif
+
+.PHONY: installer
+installer: $(INSTALLER)
+
+INSTDIR=/tmp/qemu-nsis
+
+$(INSTALLER): $(SRC_PATH)/qemu.nsi
+	make install prefix=${INSTDIR}
+ifdef SIGNCODE
+	(cd ${INSTDIR}; \
+         for i in *.exe; do \
+           $(SIGNCODE) $${i}; \
+         done \
+        )
+endif # SIGNCODE
+	(cd ${INSTDIR}; \
+         for i in qemu-system-*.exe; do \
+           arch=$${i%.exe}; \
+           arch=$${arch#qemu-system-}; \
+           echo Section \"$$arch\" Section_$$arch; \
+           echo SetOutPath \"\$$INSTDIR\"; \
+           echo File \"\$${BINDIR}\\$$i\"; \
+           echo SectionEnd; \
+         done \
+        ) >${INSTDIR}/system-emulations.nsh
+	makensis $(nsisflags) \
+                $(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
+                $(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
+                -DBINDIR="${INSTDIR}" \
+                $(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
+                -DSRCDIR="$(SRC_PATH)" \
+                -DOUTFILE="$(INSTALLER)" \
+                $(SRC_PATH)/qemu.nsi
+	rm -r ${INSTDIR}
+ifdef SIGNCODE
+	$(SIGNCODE) $(INSTALLER)
+endif # SIGNCODE
+endif # CONFIG_WIN
+
 # Add a dependency on the generated files, so that they are always
 # rebuilt before other object files
 ifneq ($(filter-out %clean,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
diff --git a/pc-bios/qemu-nsis.bmp b/pc-bios/qemu-nsis.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..ae82cd2697ab688137c1758c724c2e2597cf8121
GIT binary patch
literal 154542
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

literal 0
HcmV?d00001

diff --git a/pc-bios/qemu-nsis.ico b/pc-bios/qemu-nsis.ico
new file mode 100644
index 0000000000000000000000000000000000000000..1d0128cd4c37f9c845f19c499febd61f85af5961
GIT binary patch
literal 4846
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
X6&Oj5#*Cyur7}_?l4W8%9QXeKCmz*e

literal 0
HcmV?d00001

diff --git a/qemu.nsi b/qemu.nsi
new file mode 100644
index 0000000..1d57455
--- /dev/null
+++ b/qemu.nsi
@@ -0,0 +1,250 @@ 
+;!/usr/bin/makensis
+
+; This NSIS script creates an installer for QEMU on Windows.
+
+; Copyright (C) 2006-2012 Stefan Weil
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation, either version 2 of the License, or
+; (at your option) version 3 or any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+; NSIS_WIN32_MAKENSIS
+
+!define PRODUCT "QEMU"
+!define URL     "http://www.qemu.org/"
+
+!define UNINST_EXE "$INSTDIR\qemu-uninstall.exe"
+!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"
+
+!ifndef BINDIR
+!define BINDIR nsis.tmp
+!endif
+!ifndef SRCDIR
+!define SRCDIR .
+!endif
+!ifndef OUTFILE
+!define OUTFILE "qemu-setup.exe"
+!endif
+
+; Optionally install documentation.
+!ifndef CONFIG_DOCUMENTATION
+!define CONFIG_DOCUMENTATION
+!endif
+
+; Use maximum compression.
+SetCompressor /SOLID lzma
+
+!include "MUI2.nsh"
+
+; The name of the installer.
+Name "QEMU"
+
+; The file to write
+OutFile "${OUTFILE}"
+
+; The default installation directory.
+!ifdef W64
+InstallDir $PROGRAMFILES64\qemu
+!else
+InstallDir $PROGRAMFILES\qemu
+!endif
+
+; Registry key to check for directory (so if you install again, it will
+; overwrite the old one automatically)
+InstallDirRegKey HKLM "Software\qemu" "Install_Dir"
+
+; Request administrator privileges for Windows Vista.
+RequestExecutionLevel admin
+
+;--------------------------------
+; Interface Settings.
+;!define MUI_HEADERIMAGE "qemu-nsis.bmp"
+; !define MUI_SPECIALBITMAP "qemu.bmp"
+!define MUI_ICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_UNICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "${SRCDIR}\pc-bios\qemu-nsis.bmp"
+; !define MUI_HEADERIMAGE_BITMAP "qemu-install.bmp"
+; !define MUI_HEADERIMAGE_UNBITMAP "qemu-uninstall.bmp"
+; !define MUI_COMPONENTSPAGE_SMALLDESC
+; !define MUI_WELCOMEPAGE_TEXT "Insert text here.$\r$\n$\r$\n$\r$\n$_CLICK"
+
+;--------------------------------
+; Pages.
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!define MUI_FINISHPAGE_LINK "Visit the QEMU Wiki online!"
+!define MUI_FINISHPAGE_LINK_LOCATION "${URL}"
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+; Languages.
+
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+
+;--------------------------------
+
+; The stuff to install.
+Section "${PRODUCT} (required)"
+
+    SectionIn RO
+
+    ; Set output path to the installation directory.
+    SetOutPath "$INSTDIR"
+
+    File "${SRCDIR}\Changelog"
+    File "${SRCDIR}\COPYING"
+    File "${SRCDIR}\COPYING.LIB"
+    File "${SRCDIR}\README"
+    File "${SRCDIR}\VERSION"
+
+    File "${BINDIR}\*.bmp"
+    File "${BINDIR}\*.bin"
+    File "${BINDIR}\*.dtb"
+    File "${BINDIR}\*.rom"
+    File "${BINDIR}\openbios-*"
+
+    File /r "${BINDIR}\keymaps"
+!ifdef CONFIG_GTK
+    File /r "${BINDIR}\share"
+!endif
+
+!ifdef W64
+    SetRegView 64
+!endif
+
+    ; Write the installation path into the registry
+    WriteRegStr HKLM SOFTWARE\${PRODUCT} "Install_Dir" "$INSTDIR"
+
+    ; Write the uninstall keys for Windows
+    WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "QEMU"
+    WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"${UNINST_EXE}"'
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1
+    WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1
+    WriteUninstaller "qemu-uninstall.exe"
+SectionEnd
+
+Section "Tools" SectionTools
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-img.exe"
+    File "${BINDIR}\qemu-io.exe"
+SectionEnd
+
+SectionGroup "System Emulations" SectionSystem
+
+!include "${BINDIR}\system-emulations.nsh"
+
+SectionGroupEnd
+
+!ifdef DLLDIR
+Section "Libraries (DLL)" SectionDll
+    SetOutPath "$INSTDIR"
+    File "${DLLDIR}\*.dll"
+SectionEnd
+!endif
+
+!ifdef CONFIG_DOCUMENTATION
+Section "Documentation" SectionDoc
+    SetOutPath "$INSTDIR"
+    File "${BINDIR}\qemu-doc.html"
+    File "${BINDIR}\qemu-tech.html"
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" "$INSTDIR\qemu-doc.html" "" "$INSTDIR\qemu-doc.html" 0
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk" "$INSTDIR\qemu-tech.html" "" "$INSTDIR\qemu-tech.html" 0
+SectionEnd
+!endif
+
+; Optional section (can be disabled by the user)
+Section "Start Menu Shortcuts" SectionMenu
+    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
+    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0
+SectionEnd
+
+;--------------------------------
+
+; Uninstaller
+
+Section "Uninstall"
+    ; Remove registry keys
+!ifdef W64
+    SetRegView 64
+!endif
+    DeleteRegKey HKLM "${UNINST_KEY}"
+    DeleteRegKey HKLM SOFTWARE\${PRODUCT}
+
+    ; Remove shortcuts, if any
+    Delete "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk"
+    Delete "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk"
+    RMDir "$SMPROGRAMS\${PRODUCT}"
+
+    ; Remove files and directories used
+    Delete "$INSTDIR\Changelog"
+    Delete "$INSTDIR\COPYING"
+    Delete "$INSTDIR\COPYING.LIB"
+    Delete "$INSTDIR\README"
+    Delete "$INSTDIR\VERSION"
+    Delete "$INSTDIR\*.bmp"
+    Delete "$INSTDIR\*.bin"
+    Delete "$INSTDIR\*.dll"
+    Delete "$INSTDIR\*.dtb"
+    Delete "$INSTDIR\*.rom"
+    Delete "$INSTDIR\openbios-*"
+    Delete "$INSTDIR\qemu-img.exe"
+    Delete "$INSTDIR\qemu-io.exe"
+    Delete "$INSTDIR\qemu.exe"
+    Delete "$INSTDIR\qemu-system-*.exe"
+    Delete "$INSTDIR\qemu-doc.html"
+    Delete "$INSTDIR\qemu-tech.html"
+    RMDir /r "$INSTDIR\keymaps"
+    RMDir /r "$INSTDIR\share"
+    ; Remove generated files
+    Delete "$INSTDIR\stderr.txt"
+    Delete "$INSTDIR\stdout.txt"
+    ; Remove uninstaller
+    Delete "${UNINST_EXE}"
+    RMDir "$INSTDIR"
+SectionEnd
+
+;--------------------------------
+
+; Descriptions (mouse-over).
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionSystem}  "System emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alpha}  "Alpha system emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_alphaw} "Alpha system emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386}   "PC i386 system emulation."
+    !insertmacro MUI_DESCRIPTION_TEXT ${Section_i386w}  "PC i386 system emulation (GUI)."
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionTools} "Tools."
+!ifdef DLLDIR
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDll}   "Runtime Libraries (DLL)."
+!endif
+!ifdef CONFIG_DOCUMENTATION
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDoc}   "Documentation."
+!endif
+    !insertmacro MUI_DESCRIPTION_TEXT ${SectionMenu}  "Menu entries."
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+; Functions.
+
+Function .onInit
+    !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd