1f53ec699SStefan Weil;!/usr/bin/makensis 2f53ec699SStefan Weil 3f53ec699SStefan Weil; This NSIS script creates an installer for QEMU on Windows. 4f53ec699SStefan Weil 5f53ec699SStefan Weil; Copyright (C) 2006-2012 Stefan Weil 6f53ec699SStefan Weil; 7f53ec699SStefan Weil; This program is free software: you can redistribute it and/or modify 8f53ec699SStefan Weil; it under the terms of the GNU General Public License as published by 9f53ec699SStefan Weil; the Free Software Foundation, either version 2 of the License, or 10dc86dd55SPhilippe Mathieu-Daudé; (at your option) any later version. 11f53ec699SStefan Weil; 12f53ec699SStefan Weil; This program is distributed in the hope that it will be useful, 13f53ec699SStefan Weil; but WITHOUT ANY WARRANTY; without even the implied warranty of 14f53ec699SStefan Weil; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15f53ec699SStefan Weil; GNU General Public License for more details. 16f53ec699SStefan Weil; 17f53ec699SStefan Weil; You should have received a copy of the GNU General Public License 18f53ec699SStefan Weil; along with this program. If not, see <http://www.gnu.org/licenses/>. 19dc86dd55SPhilippe Mathieu-Daudé; 20dc86dd55SPhilippe Mathieu-Daudé; SPDX-License-Identifier: GPL-2.0-or-later 21f53ec699SStefan Weil 22f53ec699SStefan Weil; NSIS_WIN32_MAKENSIS 23f53ec699SStefan Weil 24f53ec699SStefan Weil!define PRODUCT "QEMU" 2570b7fba9SStefan Hajnoczi!define URL "https://www.qemu.org/" 26f53ec699SStefan Weil 27f53ec699SStefan Weil!define UNINST_EXE "$INSTDIR\qemu-uninstall.exe" 28f53ec699SStefan Weil!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" 29f53ec699SStefan Weil 30f53ec699SStefan Weil!ifndef BINDIR 31f53ec699SStefan Weil!define BINDIR nsis.tmp 32f53ec699SStefan Weil!endif 33f53ec699SStefan Weil!ifndef SRCDIR 34f53ec699SStefan Weil!define SRCDIR . 35f53ec699SStefan Weil!endif 36f53ec699SStefan Weil!ifndef OUTFILE 37f53ec699SStefan Weil!define OUTFILE "qemu-setup.exe" 38f53ec699SStefan Weil!endif 39f53ec699SStefan Weil 406b98e86eSPeter Maydell; Build a unicode installer 416b98e86eSPeter MaydellUnicode true 426b98e86eSPeter Maydell 43f53ec699SStefan Weil; Use maximum compression. 44f53ec699SStefan WeilSetCompressor /SOLID lzma 45f53ec699SStefan Weil 46f53ec699SStefan Weil!include "MUI2.nsh" 47f53ec699SStefan Weil 48f53ec699SStefan Weil; The name of the installer. 49f53ec699SStefan WeilName "QEMU" 50f53ec699SStefan Weil 51f53ec699SStefan Weil; The file to write 52f53ec699SStefan WeilOutFile "${OUTFILE}" 53f53ec699SStefan Weil 54f53ec699SStefan Weil; The default installation directory. 55f53ec699SStefan Weil!ifdef W64 56f53ec699SStefan WeilInstallDir $PROGRAMFILES64\qemu 57f53ec699SStefan Weil!else 58f53ec699SStefan WeilInstallDir $PROGRAMFILES\qemu 59f53ec699SStefan Weil!endif 60f53ec699SStefan Weil 61f53ec699SStefan Weil; Registry key to check for directory (so if you install again, it will 62f53ec699SStefan Weil; overwrite the old one automatically) 6340b9cc5eSStefan Weil!ifdef W64 6440b9cc5eSStefan WeilInstallDirRegKey HKLM "Software\qemu64" "Install_Dir" 6540b9cc5eSStefan Weil!else 6640b9cc5eSStefan WeilInstallDirRegKey HKLM "Software\qemu32" "Install_Dir" 6740b9cc5eSStefan Weil!endif 68f53ec699SStefan Weil 69f53ec699SStefan Weil; Request administrator privileges for Windows Vista. 70f53ec699SStefan WeilRequestExecutionLevel admin 71f53ec699SStefan Weil 72f53ec699SStefan Weil;-------------------------------- 73f53ec699SStefan Weil; Interface Settings. 74f53ec699SStefan Weil;!define MUI_HEADERIMAGE "qemu-nsis.bmp" 75f53ec699SStefan Weil; !define MUI_SPECIALBITMAP "qemu.bmp" 76f53ec699SStefan Weil!define MUI_ICON "${SRCDIR}\pc-bios\qemu-nsis.ico" 77f53ec699SStefan Weil!define MUI_UNICON "${SRCDIR}\pc-bios\qemu-nsis.ico" 78f53ec699SStefan Weil!define MUI_WELCOMEFINISHPAGE_BITMAP "${SRCDIR}\pc-bios\qemu-nsis.bmp" 79f53ec699SStefan Weil; !define MUI_HEADERIMAGE_BITMAP "qemu-install.bmp" 80f53ec699SStefan Weil; !define MUI_HEADERIMAGE_UNBITMAP "qemu-uninstall.bmp" 81f53ec699SStefan Weil; !define MUI_COMPONENTSPAGE_SMALLDESC 82f53ec699SStefan Weil; !define MUI_WELCOMEPAGE_TEXT "Insert text here.$\r$\n$\r$\n$\r$\n$_CLICK" 83f53ec699SStefan Weil 84f53ec699SStefan Weil;-------------------------------- 85f53ec699SStefan Weil; Pages. 86f53ec699SStefan Weil 87f53ec699SStefan Weil!insertmacro MUI_PAGE_WELCOME 88f53ec699SStefan Weil!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING" 89f53ec699SStefan Weil!insertmacro MUI_PAGE_COMPONENTS 90f53ec699SStefan Weil!insertmacro MUI_PAGE_DIRECTORY 91f53ec699SStefan Weil!insertmacro MUI_PAGE_INSTFILES 92f53ec699SStefan Weil!define MUI_FINISHPAGE_LINK "Visit the QEMU Wiki online!" 93f53ec699SStefan Weil!define MUI_FINISHPAGE_LINK_LOCATION "${URL}" 94f53ec699SStefan Weil!insertmacro MUI_PAGE_FINISH 95f53ec699SStefan Weil 96f53ec699SStefan Weil!insertmacro MUI_UNPAGE_CONFIRM 97f53ec699SStefan Weil!insertmacro MUI_UNPAGE_INSTFILES 98f53ec699SStefan Weil 99f53ec699SStefan Weil;-------------------------------- 100f53ec699SStefan Weil; Languages. 101f53ec699SStefan Weil 102f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "English" 103f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "French" 104f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "German" 105f53ec699SStefan Weil 106f53ec699SStefan Weil;-------------------------------- 107f53ec699SStefan Weil 108f53ec699SStefan Weil; The stuff to install. 109e54ecc70SPhilippe Mathieu-Daudé; 110e54ecc70SPhilippe Mathieu-Daudé; Remember to keep the "Uninstall" section in sync. 111e54ecc70SPhilippe Mathieu-Daudé 112f53ec699SStefan WeilSection "${PRODUCT} (required)" 113f53ec699SStefan Weil 114f53ec699SStefan Weil SectionIn RO 115f53ec699SStefan Weil 116f53ec699SStefan Weil ; Set output path to the installation directory. 117f53ec699SStefan Weil SetOutPath "$INSTDIR" 118f53ec699SStefan Weil 119f53ec699SStefan Weil File "${SRCDIR}\COPYING" 120f53ec699SStefan Weil File "${SRCDIR}\COPYING.LIB" 121f64f598aSPaolo Bonzini File "${SRCDIR}\README.rst" 122f53ec699SStefan Weil File "${SRCDIR}\VERSION" 123f53ec699SStefan Weil 124f53ec699SStefan Weil File /r "${BINDIR}\keymaps" 125f53ec699SStefan Weil File /r "${BINDIR}\share" 126f53ec699SStefan Weil 127f53ec699SStefan Weil!ifdef W64 128f53ec699SStefan Weil SetRegView 64 129f53ec699SStefan Weil!endif 130f53ec699SStefan Weil 131f53ec699SStefan Weil ; Write the installation path into the registry 132f53ec699SStefan Weil WriteRegStr HKLM SOFTWARE\${PRODUCT} "Install_Dir" "$INSTDIR" 133f53ec699SStefan Weil 134f53ec699SStefan Weil ; Write the uninstall keys for Windows 135f53ec699SStefan Weil WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "QEMU" 136805d8a67SStefan Weil!ifdef DISPLAYVERSION 137805d8a67SStefan Weil WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${DISPLAYVERSION}" 138805d8a67SStefan Weil!endif 139f53ec699SStefan Weil WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"${UNINST_EXE}"' 140f53ec699SStefan Weil WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1 141f53ec699SStefan Weil WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1 142f53ec699SStefan Weil WriteUninstaller "qemu-uninstall.exe" 143f53ec699SStefan WeilSectionEnd 144f53ec699SStefan Weil 145f53ec699SStefan WeilSection "Tools" SectionTools 146f53ec699SStefan Weil SetOutPath "$INSTDIR" 147f53ec699SStefan Weil File "${BINDIR}\qemu-img.exe" 148f53ec699SStefan Weil File "${BINDIR}\qemu-io.exe" 149f53ec699SStefan WeilSectionEnd 150f53ec699SStefan Weil 151f53ec699SStefan WeilSectionGroup "System Emulations" SectionSystem 152f53ec699SStefan Weil 153f53ec699SStefan Weil!include "${BINDIR}\system-emulations.nsh" 154f53ec699SStefan Weil 155f53ec699SStefan WeilSectionGroupEnd 156f53ec699SStefan Weil 157f53ec699SStefan Weil!ifdef DLLDIR 158f53ec699SStefan WeilSection "Libraries (DLL)" SectionDll 159f53ec699SStefan Weil SetOutPath "$INSTDIR" 160f53ec699SStefan Weil File "${DLLDIR}\*.dll" 161f53ec699SStefan WeilSectionEnd 162f53ec699SStefan Weil!endif 163f53ec699SStefan Weil 164f53ec699SStefan Weil!ifdef CONFIG_DOCUMENTATION 165f53ec699SStefan WeilSection "Documentation" SectionDoc 16670903cc2SPaolo Bonzini SetOutPath "$INSTDIR\doc" 16770903cc2SPaolo Bonzini File /r "${BINDIR}\doc" 168373c7068SPeter Maydell SetOutPath "$INSTDIR" 169f53ec699SStefan Weil CreateDirectory "$SMPROGRAMS\${PRODUCT}" 17070903cc2SPaolo Bonzini CreateShortCut "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" "$INSTDIR\doc\index.html" "" "$INSTDIR\doc\index.html" 0 171f53ec699SStefan WeilSectionEnd 172f53ec699SStefan Weil!endif 173f53ec699SStefan Weil 174f53ec699SStefan Weil; Optional section (can be disabled by the user) 175f53ec699SStefan WeilSection "Start Menu Shortcuts" SectionMenu 176f53ec699SStefan Weil CreateDirectory "$SMPROGRAMS\${PRODUCT}" 177f53ec699SStefan Weil CreateShortCut "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0 178f53ec699SStefan WeilSectionEnd 179f53ec699SStefan Weil 180f53ec699SStefan Weil;-------------------------------- 181f53ec699SStefan Weil 182f53ec699SStefan Weil; Uninstaller 183f53ec699SStefan Weil 184f53ec699SStefan WeilSection "Uninstall" 185f53ec699SStefan Weil ; Remove registry keys 186f53ec699SStefan Weil!ifdef W64 187f53ec699SStefan Weil SetRegView 64 188f53ec699SStefan Weil!endif 189f53ec699SStefan Weil DeleteRegKey HKLM "${UNINST_KEY}" 190f53ec699SStefan Weil DeleteRegKey HKLM SOFTWARE\${PRODUCT} 191f53ec699SStefan Weil 192f53ec699SStefan Weil ; Remove shortcuts, if any 193f53ec699SStefan Weil Delete "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" 194f53ec699SStefan Weil Delete "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk" 195f53ec699SStefan Weil Delete "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" 196f53ec699SStefan Weil RMDir "$SMPROGRAMS\${PRODUCT}" 197f53ec699SStefan Weil 198f53ec699SStefan Weil ; Remove files and directories used 199f53ec699SStefan Weil Delete "$INSTDIR\Changelog" 200f53ec699SStefan Weil Delete "$INSTDIR\COPYING" 201f53ec699SStefan Weil Delete "$INSTDIR\COPYING.LIB" 202f64f598aSPaolo Bonzini Delete "$INSTDIR\README.rst" 203f53ec699SStefan Weil Delete "$INSTDIR\VERSION" 204f53ec699SStefan Weil Delete "$INSTDIR\*.bmp" 205f53ec699SStefan Weil Delete "$INSTDIR\*.bin" 206f53ec699SStefan Weil Delete "$INSTDIR\*.dll" 207e54ecc70SPhilippe Mathieu-Daudé Delete "$INSTDIR\*.fd" 208e54ecc70SPhilippe Mathieu-Daudé Delete "$INSTDIR\*.img" 209e54ecc70SPhilippe Mathieu-Daudé Delete "$INSTDIR\*.lid" 210e54ecc70SPhilippe Mathieu-Daudé Delete "$INSTDIR\*.ndrv" 211f53ec699SStefan Weil Delete "$INSTDIR\*.rom" 212f53ec699SStefan Weil Delete "$INSTDIR\openbios-*" 213f53ec699SStefan Weil Delete "$INSTDIR\qemu-img.exe" 214f53ec699SStefan Weil Delete "$INSTDIR\qemu-io.exe" 215f53ec699SStefan Weil Delete "$INSTDIR\qemu.exe" 216f53ec699SStefan Weil Delete "$INSTDIR\qemu-system-*.exe" 217*12963e79SBALATON Zoltan RMDir /r "$INSTDIR\dtb" 21870903cc2SPaolo Bonzini RMDir /r "$INSTDIR\doc" 219f53ec699SStefan Weil RMDir /r "$INSTDIR\share" 220f53ec699SStefan Weil ; Remove generated files 221f53ec699SStefan Weil Delete "$INSTDIR\stderr.txt" 222f53ec699SStefan Weil Delete "$INSTDIR\stdout.txt" 223f53ec699SStefan Weil ; Remove uninstaller 224f53ec699SStefan Weil Delete "${UNINST_EXE}" 225f53ec699SStefan Weil RMDir "$INSTDIR" 226f53ec699SStefan WeilSectionEnd 227f53ec699SStefan Weil 228f53ec699SStefan Weil;-------------------------------- 229f53ec699SStefan Weil 230f53ec699SStefan Weil; Descriptions (mouse-over). 231f53ec699SStefan Weil!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 232f53ec699SStefan Weil !insertmacro MUI_DESCRIPTION_TEXT ${SectionSystem} "System emulation." 233c0879637SPeter Maydell!include "${BINDIR}\system-mui-text.nsh" 234f53ec699SStefan Weil !insertmacro MUI_DESCRIPTION_TEXT ${SectionTools} "Tools." 235f53ec699SStefan Weil!ifdef DLLDIR 236f53ec699SStefan Weil !insertmacro MUI_DESCRIPTION_TEXT ${SectionDll} "Runtime Libraries (DLL)." 237f53ec699SStefan Weil!endif 238f53ec699SStefan Weil!ifdef CONFIG_DOCUMENTATION 239f53ec699SStefan Weil !insertmacro MUI_DESCRIPTION_TEXT ${SectionDoc} "Documentation." 240f53ec699SStefan Weil!endif 241f53ec699SStefan Weil !insertmacro MUI_DESCRIPTION_TEXT ${SectionMenu} "Menu entries." 242f53ec699SStefan Weil!insertmacro MUI_FUNCTION_DESCRIPTION_END 243f53ec699SStefan Weil 244f53ec699SStefan Weil;-------------------------------- 245f53ec699SStefan Weil; Functions. 246f53ec699SStefan Weil 247f53ec699SStefan WeilFunction .onInit 248f53ec699SStefan Weil !insertmacro MUI_LANGDLL_DISPLAY 249f53ec699SStefan WeilFunctionEnd 250