Statistics
| Branch: | Revision:

root / qemu.nsi @ feature-archipelago

History | View | Annotate | Download (7.2 kB)

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