Browse Source
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>pull/4/head
4 changed files with 305 additions and 0 deletions
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
@ -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 |
|||
Loading…
Reference in new issue