xref: /qemu/qemu.nsi (revision c0879637)
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
10f53ec699SStefan Weil; (at your option) version 3 or 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/>.
19f53ec699SStefan Weil
20f53ec699SStefan Weil; NSIS_WIN32_MAKENSIS
21f53ec699SStefan Weil
22f53ec699SStefan Weil!define PRODUCT "QEMU"
2370b7fba9SStefan Hajnoczi!define URL     "https://www.qemu.org/"
24f53ec699SStefan Weil
25f53ec699SStefan Weil!define UNINST_EXE "$INSTDIR\qemu-uninstall.exe"
26f53ec699SStefan Weil!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}"
27f53ec699SStefan Weil
28f53ec699SStefan Weil!ifndef BINDIR
29f53ec699SStefan Weil!define BINDIR nsis.tmp
30f53ec699SStefan Weil!endif
31f53ec699SStefan Weil!ifndef SRCDIR
32f53ec699SStefan Weil!define SRCDIR .
33f53ec699SStefan Weil!endif
34f53ec699SStefan Weil!ifndef OUTFILE
35f53ec699SStefan Weil!define OUTFILE "qemu-setup.exe"
36f53ec699SStefan Weil!endif
37f53ec699SStefan Weil
386b98e86eSPeter Maydell; Build a unicode installer
396b98e86eSPeter MaydellUnicode true
406b98e86eSPeter Maydell
41f53ec699SStefan Weil; Use maximum compression.
42f53ec699SStefan WeilSetCompressor /SOLID lzma
43f53ec699SStefan Weil
44f53ec699SStefan Weil!include "MUI2.nsh"
45f53ec699SStefan Weil
46f53ec699SStefan Weil; The name of the installer.
47f53ec699SStefan WeilName "QEMU"
48f53ec699SStefan Weil
49f53ec699SStefan Weil; The file to write
50f53ec699SStefan WeilOutFile "${OUTFILE}"
51f53ec699SStefan Weil
52f53ec699SStefan Weil; The default installation directory.
53f53ec699SStefan Weil!ifdef W64
54f53ec699SStefan WeilInstallDir $PROGRAMFILES64\qemu
55f53ec699SStefan Weil!else
56f53ec699SStefan WeilInstallDir $PROGRAMFILES\qemu
57f53ec699SStefan Weil!endif
58f53ec699SStefan Weil
59f53ec699SStefan Weil; Registry key to check for directory (so if you install again, it will
60f53ec699SStefan Weil; overwrite the old one automatically)
6140b9cc5eSStefan Weil!ifdef W64
6240b9cc5eSStefan WeilInstallDirRegKey HKLM "Software\qemu64" "Install_Dir"
6340b9cc5eSStefan Weil!else
6440b9cc5eSStefan WeilInstallDirRegKey HKLM "Software\qemu32" "Install_Dir"
6540b9cc5eSStefan Weil!endif
66f53ec699SStefan Weil
67f53ec699SStefan Weil; Request administrator privileges for Windows Vista.
68f53ec699SStefan WeilRequestExecutionLevel admin
69f53ec699SStefan Weil
70f53ec699SStefan Weil;--------------------------------
71f53ec699SStefan Weil; Interface Settings.
72f53ec699SStefan Weil;!define MUI_HEADERIMAGE "qemu-nsis.bmp"
73f53ec699SStefan Weil; !define MUI_SPECIALBITMAP "qemu.bmp"
74f53ec699SStefan Weil!define MUI_ICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
75f53ec699SStefan Weil!define MUI_UNICON "${SRCDIR}\pc-bios\qemu-nsis.ico"
76f53ec699SStefan Weil!define MUI_WELCOMEFINISHPAGE_BITMAP "${SRCDIR}\pc-bios\qemu-nsis.bmp"
77f53ec699SStefan Weil; !define MUI_HEADERIMAGE_BITMAP "qemu-install.bmp"
78f53ec699SStefan Weil; !define MUI_HEADERIMAGE_UNBITMAP "qemu-uninstall.bmp"
79f53ec699SStefan Weil; !define MUI_COMPONENTSPAGE_SMALLDESC
80f53ec699SStefan Weil; !define MUI_WELCOMEPAGE_TEXT "Insert text here.$\r$\n$\r$\n$\r$\n$_CLICK"
81f53ec699SStefan Weil
82f53ec699SStefan Weil;--------------------------------
83f53ec699SStefan Weil; Pages.
84f53ec699SStefan Weil
85f53ec699SStefan Weil!insertmacro MUI_PAGE_WELCOME
86f53ec699SStefan Weil!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING"
87f53ec699SStefan Weil!insertmacro MUI_PAGE_COMPONENTS
88f53ec699SStefan Weil!insertmacro MUI_PAGE_DIRECTORY
89f53ec699SStefan Weil!insertmacro MUI_PAGE_INSTFILES
90f53ec699SStefan Weil!define MUI_FINISHPAGE_LINK "Visit the QEMU Wiki online!"
91f53ec699SStefan Weil!define MUI_FINISHPAGE_LINK_LOCATION "${URL}"
92f53ec699SStefan Weil!insertmacro MUI_PAGE_FINISH
93f53ec699SStefan Weil
94f53ec699SStefan Weil!insertmacro MUI_UNPAGE_CONFIRM
95f53ec699SStefan Weil!insertmacro MUI_UNPAGE_INSTFILES
96f53ec699SStefan Weil
97f53ec699SStefan Weil;--------------------------------
98f53ec699SStefan Weil; Languages.
99f53ec699SStefan Weil
100f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "English"
101f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "French"
102f53ec699SStefan Weil!insertmacro MUI_LANGUAGE "German"
103f53ec699SStefan Weil
104f53ec699SStefan Weil;--------------------------------
105f53ec699SStefan Weil
106f53ec699SStefan Weil; The stuff to install.
107e54ecc70SPhilippe Mathieu-Daudé;
108e54ecc70SPhilippe Mathieu-Daudé; Remember to keep the "Uninstall" section in sync.
109e54ecc70SPhilippe Mathieu-Daudé
110f53ec699SStefan WeilSection "${PRODUCT} (required)"
111f53ec699SStefan Weil
112f53ec699SStefan Weil    SectionIn RO
113f53ec699SStefan Weil
114f53ec699SStefan Weil    ; Set output path to the installation directory.
115f53ec699SStefan Weil    SetOutPath "$INSTDIR"
116f53ec699SStefan Weil
117f53ec699SStefan Weil    File "${SRCDIR}\COPYING"
118f53ec699SStefan Weil    File "${SRCDIR}\COPYING.LIB"
119f64f598aSPaolo Bonzini    File "${SRCDIR}\README.rst"
120f53ec699SStefan Weil    File "${SRCDIR}\VERSION"
121f53ec699SStefan Weil
122f53ec699SStefan Weil    File /r "${BINDIR}\keymaps"
123f53ec699SStefan Weil    File /r "${BINDIR}\share"
124f53ec699SStefan Weil
125f53ec699SStefan Weil!ifdef W64
126f53ec699SStefan Weil    SetRegView 64
127f53ec699SStefan Weil!endif
128f53ec699SStefan Weil
129f53ec699SStefan Weil    ; Write the installation path into the registry
130f53ec699SStefan Weil    WriteRegStr HKLM SOFTWARE\${PRODUCT} "Install_Dir" "$INSTDIR"
131f53ec699SStefan Weil
132f53ec699SStefan Weil    ; Write the uninstall keys for Windows
133f53ec699SStefan Weil    WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "QEMU"
134805d8a67SStefan Weil!ifdef DISPLAYVERSION
135805d8a67SStefan Weil    WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${DISPLAYVERSION}"
136805d8a67SStefan Weil!endif
137f53ec699SStefan Weil    WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"${UNINST_EXE}"'
138f53ec699SStefan Weil    WriteRegDWORD HKLM "${UNINST_KEY}" "NoModify" 1
139f53ec699SStefan Weil    WriteRegDWORD HKLM "${UNINST_KEY}" "NoRepair" 1
140f53ec699SStefan Weil    WriteUninstaller "qemu-uninstall.exe"
141f53ec699SStefan WeilSectionEnd
142f53ec699SStefan Weil
143f53ec699SStefan WeilSection "Tools" SectionTools
144f53ec699SStefan Weil    SetOutPath "$INSTDIR"
145f53ec699SStefan Weil    File "${BINDIR}\qemu-img.exe"
146f53ec699SStefan Weil    File "${BINDIR}\qemu-io.exe"
147f53ec699SStefan WeilSectionEnd
148f53ec699SStefan Weil
149f53ec699SStefan WeilSectionGroup "System Emulations" SectionSystem
150f53ec699SStefan Weil
151f53ec699SStefan Weil!include "${BINDIR}\system-emulations.nsh"
152f53ec699SStefan Weil
153f53ec699SStefan WeilSectionGroupEnd
154f53ec699SStefan Weil
155f53ec699SStefan Weil!ifdef DLLDIR
156f53ec699SStefan WeilSection "Libraries (DLL)" SectionDll
157f53ec699SStefan Weil    SetOutPath "$INSTDIR"
158f53ec699SStefan Weil    File "${DLLDIR}\*.dll"
159f53ec699SStefan WeilSectionEnd
160f53ec699SStefan Weil!endif
161f53ec699SStefan Weil
162f53ec699SStefan Weil!ifdef CONFIG_DOCUMENTATION
163f53ec699SStefan WeilSection "Documentation" SectionDoc
16470903cc2SPaolo Bonzini    SetOutPath "$INSTDIR\doc"
16570903cc2SPaolo Bonzini    File /r "${BINDIR}\doc"
166373c7068SPeter Maydell    SetOutPath "$INSTDIR"
167f53ec699SStefan Weil    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
16870903cc2SPaolo Bonzini    CreateShortCut "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk" "$INSTDIR\doc\index.html" "" "$INSTDIR\doc\index.html" 0
169f53ec699SStefan WeilSectionEnd
170f53ec699SStefan Weil!endif
171f53ec699SStefan Weil
172f53ec699SStefan Weil; Optional section (can be disabled by the user)
173f53ec699SStefan WeilSection "Start Menu Shortcuts" SectionMenu
174f53ec699SStefan Weil    CreateDirectory "$SMPROGRAMS\${PRODUCT}"
175f53ec699SStefan Weil    CreateShortCut "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk" "${UNINST_EXE}" "" "${UNINST_EXE}" 0
176f53ec699SStefan WeilSectionEnd
177f53ec699SStefan Weil
178f53ec699SStefan Weil;--------------------------------
179f53ec699SStefan Weil
180f53ec699SStefan Weil; Uninstaller
181f53ec699SStefan Weil
182f53ec699SStefan WeilSection "Uninstall"
183f53ec699SStefan Weil    ; Remove registry keys
184f53ec699SStefan Weil!ifdef W64
185f53ec699SStefan Weil    SetRegView 64
186f53ec699SStefan Weil!endif
187f53ec699SStefan Weil    DeleteRegKey HKLM "${UNINST_KEY}"
188f53ec699SStefan Weil    DeleteRegKey HKLM SOFTWARE\${PRODUCT}
189f53ec699SStefan Weil
190f53ec699SStefan Weil    ; Remove shortcuts, if any
191f53ec699SStefan Weil    Delete "$SMPROGRAMS\${PRODUCT}\User Documentation.lnk"
192f53ec699SStefan Weil    Delete "$SMPROGRAMS\${PRODUCT}\Technical Documentation.lnk"
193f53ec699SStefan Weil    Delete "$SMPROGRAMS\${PRODUCT}\Uninstall.lnk"
194f53ec699SStefan Weil    RMDir "$SMPROGRAMS\${PRODUCT}"
195f53ec699SStefan Weil
196f53ec699SStefan Weil    ; Remove files and directories used
197f53ec699SStefan Weil    Delete "$INSTDIR\Changelog"
198f53ec699SStefan Weil    Delete "$INSTDIR\COPYING"
199f53ec699SStefan Weil    Delete "$INSTDIR\COPYING.LIB"
200f64f598aSPaolo Bonzini    Delete "$INSTDIR\README.rst"
201f53ec699SStefan Weil    Delete "$INSTDIR\VERSION"
202f53ec699SStefan Weil    Delete "$INSTDIR\*.bmp"
203f53ec699SStefan Weil    Delete "$INSTDIR\*.bin"
204f53ec699SStefan Weil    Delete "$INSTDIR\*.dll"
205f53ec699SStefan Weil    Delete "$INSTDIR\*.dtb"
206e54ecc70SPhilippe Mathieu-Daudé    Delete "$INSTDIR\*.fd"
207e54ecc70SPhilippe Mathieu-Daudé    Delete "$INSTDIR\*.img"
208e54ecc70SPhilippe Mathieu-Daudé    Delete "$INSTDIR\*.lid"
209e54ecc70SPhilippe Mathieu-Daudé    Delete "$INSTDIR\*.ndrv"
210f53ec699SStefan Weil    Delete "$INSTDIR\*.rom"
211f53ec699SStefan Weil    Delete "$INSTDIR\openbios-*"
212f53ec699SStefan Weil    Delete "$INSTDIR\qemu-img.exe"
213f53ec699SStefan Weil    Delete "$INSTDIR\qemu-io.exe"
214f53ec699SStefan Weil    Delete "$INSTDIR\qemu.exe"
215f53ec699SStefan Weil    Delete "$INSTDIR\qemu-system-*.exe"
21670903cc2SPaolo Bonzini    RMDir /r "$INSTDIR\doc"
217f53ec699SStefan Weil    RMDir /r "$INSTDIR\share"
218f53ec699SStefan Weil    ; Remove generated files
219f53ec699SStefan Weil    Delete "$INSTDIR\stderr.txt"
220f53ec699SStefan Weil    Delete "$INSTDIR\stdout.txt"
221f53ec699SStefan Weil    ; Remove uninstaller
222f53ec699SStefan Weil    Delete "${UNINST_EXE}"
223f53ec699SStefan Weil    RMDir "$INSTDIR"
224f53ec699SStefan WeilSectionEnd
225f53ec699SStefan Weil
226f53ec699SStefan Weil;--------------------------------
227f53ec699SStefan Weil
228f53ec699SStefan Weil; Descriptions (mouse-over).
229f53ec699SStefan Weil!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
230f53ec699SStefan Weil    !insertmacro MUI_DESCRIPTION_TEXT ${SectionSystem}  "System emulation."
231*c0879637SPeter Maydell!include "${BINDIR}\system-mui-text.nsh"
232f53ec699SStefan Weil    !insertmacro MUI_DESCRIPTION_TEXT ${SectionTools} "Tools."
233f53ec699SStefan Weil!ifdef DLLDIR
234f53ec699SStefan Weil    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDll}   "Runtime Libraries (DLL)."
235f53ec699SStefan Weil!endif
236f53ec699SStefan Weil!ifdef CONFIG_DOCUMENTATION
237f53ec699SStefan Weil    !insertmacro MUI_DESCRIPTION_TEXT ${SectionDoc}   "Documentation."
238f53ec699SStefan Weil!endif
239f53ec699SStefan Weil    !insertmacro MUI_DESCRIPTION_TEXT ${SectionMenu}  "Menu entries."
240f53ec699SStefan Weil!insertmacro MUI_FUNCTION_DESCRIPTION_END
241f53ec699SStefan Weil
242f53ec699SStefan Weil;--------------------------------
243f53ec699SStefan Weil; Functions.
244f53ec699SStefan Weil
245f53ec699SStefan WeilFunction .onInit
246f53ec699SStefan Weil    !insertmacro MUI_LANGDLL_DISPLAY
247f53ec699SStefan WeilFunctionEnd
248