xref: /qemu/qemu.nsi (revision 06b40d250ecfa1633209c2e431a7a38acfd03a98)
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