From f53ec6999287bfdc4f0dfdb6427baa1853f8952a Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Mon, 15 Jul 2013 23:49:57 +0200 Subject: [PATCH] w32, w64: Add build rule for installer 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 --- 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 diff --git a/Makefile b/Makefile index c06bfaba205..29f10436f85 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 Hc-jL100001 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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 ov>Tmw(r6q+;a+q0Vf{SVgLXD literal 0 Hc-jL100001 diff --git a/qemu.nsi b/qemu.nsi new file mode 100644 index 00000000000..1d574559560 --- /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 . + +; 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 -- 2.39.5