NSIS: Drop hardcoded qt's translation filenames
[qBittorrent.git] / dist / windows / installer.nsi
blobd7a8cfd3c1d132a410286f996feaf9b61243356e
1 Var uninstallerPath
3 Section "-hidden"
5 ;Search if qBittorrent is already installed.
6 FindFirst $0 $1 "$uninstallerPath\uninst.exe"
7 FindClose $0
8 StrCmp $1 "" done
10 ;Run the uninstaller of the previous install.
11 DetailPrint $(inst_unist)
12 ExecWait '"$uninstallerPath\uninst.exe" /S _?=$uninstallerPath'
13 Delete "$uninstallerPath\uninst.exe"
14 RMDir "$uninstallerPath"
16 done:
18 SectionEnd
21 Section $(inst_qbt_req) ;"qBittorrent (required)"
23 SectionIn RO
25 ; Set output path to the installation directory.
26 SetOutPath $INSTDIR
27 ; Put files there
28 File "qbittorrent.exe"
29 File "qbittorrent.pdb"
30 File "qt.conf"
32 ;Create 'translations' directory
33 CreateDirectory $INSTDIR\translations
34 ; Set output path to the installation\translations directory.
35 SetOutPath "$INSTDIR\translations"
36 ; Put files there
37 File /r "translations\qt*.qm"
39 ; Write the installation path into the registry
40 WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR"
42 ; Write the uninstall keys for Windows
43 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${PROG_VERSION}"
44 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "UninstallString" '"$INSTDIR\uninst.exe"'
45 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayIcon" '"$INSTDIR\qbittorrent.exe",0'
46 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "Publisher" "The qBittorrent project"
47 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "URLInfoAbout" "https://www.qbittorrent.org"
48 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayVersion" "${PROG_VERSION}"
49 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoModify" 1
50 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "NoRepair" 1
51 WriteUninstaller "uninst.exe"
52 ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
53 IntFmt $0 "0x%08X" $0
54 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "EstimatedSize" "$0"
56 ; qBittorrent ProgID
57 WriteRegStr HKLM "Software\Classes\qBittorrent" "" "qBittorrent Torrent File"
58 WriteRegStr HKLM "Software\Classes\qBittorrent" "FriendlyTypeName" "qBittorrent Torrent File"
59 WriteRegStr HKLM "Software\Classes\qBittorrent\shell" "" "open"
60 WriteRegStr HKLM "Software\Classes\qBittorrent\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
61 WriteRegStr HKLM "Software\Classes\qBittorrent\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
63 SectionEnd
65 ; Optional section (can be disabled by the user)
66 Section /o $(inst_dekstop) ;"Create Desktop Shortcut"
68 CreateShortCut "$DESKTOP\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
70 SectionEnd
72 Section $(inst_startmenu) ;"Create Start Menu Shortcut"
74 CreateDirectory "$SMPROGRAMS\qBittorrent"
75 CreateShortCut "$SMPROGRAMS\qBittorrent\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
76 CreateShortCut "$SMPROGRAMS\qBittorrent\$(inst_uninstall_link_description).lnk" "$INSTDIR\uninst.exe"
78 SectionEnd
80 Section /o $(inst_startup) ;"Start qBittorrent on Windows start up"
82 !insertmacro UAC_AsUser_Call Function inst_startup_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
84 SectionEnd
86 Function inst_startup_user
88 WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "qBittorrent" "$INSTDIR\qbittorrent.exe"
90 FunctionEnd
92 Section $(inst_torrent) ;"Open .torrent files with qBittorrent"
94 ReadRegStr $0 HKLM "Software\Classes\.torrent" ""
96 StrCmp $0 "qBittorrent" clear_errors 0
97 ;Check if empty string
98 StrCmp $0 "" clear_errors 0
99 ;Write old value to OpenWithProgIds
100 WriteRegStr HKLM "Software\Classes\.torrent\OpenWithProgIds" $0 ""
102 clear_errors:
103 ClearErrors
105 WriteRegStr HKLM "Software\Classes\.torrent" "" "qBittorrent"
106 WriteRegStr HKLM "Software\Classes\.torrent" "Content Type" "application/x-bittorrent"
108 !insertmacro UAC_AsUser_Call Function inst_torrent_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
110 System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
112 SectionEnd
114 Function inst_torrent_user
116 ReadRegStr $0 HKCU "Software\Classes\.torrent" ""
118 StrCmp $0 "qBittorrent" clear_errors 0
119 ;Check if empty string
120 StrCmp $0 "" clear_errors 0
121 ;Write old value to OpenWithProgIds
122 WriteRegStr HKCU "Software\Classes\.torrent\OpenWithProgIds" $0 ""
124 clear_errors:
125 ClearErrors
127 WriteRegStr HKCU "Software\Classes\.torrent" "" "qBittorrent"
128 WriteRegStr HKCU "Software\Classes\.torrent" "Content Type" "application/x-bittorrent"
130 FunctionEnd
132 Section $(inst_magnet) ;"Open magnet links with qBittorrent"
134 WriteRegStr HKLM "Software\Classes\magnet" "" "URL:Magnet link"
135 WriteRegStr HKLM "Software\Classes\magnet" "Content Type" "application/x-magnet"
136 WriteRegStr HKLM "Software\Classes\magnet" "URL Protocol" ""
137 WriteRegStr HKLM "Software\Classes\magnet\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
138 WriteRegStr HKLM "Software\Classes\magnet\shell" "" "open"
139 WriteRegStr HKLM "Software\Classes\magnet\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
141 !insertmacro UAC_AsUser_Call Function inst_magnet_user ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR}
143 System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
145 SectionEnd
147 Function inst_magnet_user
149 WriteRegStr HKCU "Software\Classes\magnet" "" "URL:Magnet link"
150 WriteRegStr HKCU "Software\Classes\magnet" "Content Type" "application/x-magnet"
151 WriteRegStr HKCU "Software\Classes\magnet" "URL Protocol" ""
152 WriteRegStr HKCU "Software\Classes\magnet\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
153 WriteRegStr HKCU "Software\Classes\magnet\shell" "" "open"
154 WriteRegStr HKCU "Software\Classes\magnet\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
156 FunctionEnd
158 Section $(inst_firewall)
160 DetailPrint $(inst_firewallinfo)
161 nsisFirewallW::AddAuthorizedApplication "$INSTDIR\qbittorrent.exe" "qBittorrent"
163 SectionEnd
165 Section $(inst_pathlimit) ;"Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
167 WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Control\FileSystem" "LongPathsEnabled" 1
169 SectionEnd
171 ;--------------------------------
173 Function .onInit
175 !insertmacro Init "installer"
176 !insertmacro MUI_LANGDLL_DISPLAY
178 ${IfNot} ${AtLeastWin7}
179 MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win7)
180 Abort
181 ${EndIf}
183 !ifdef APP64BIT
184 ${IfNot} ${RunningX64}
185 MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_64bit)
186 Abort
187 ${EndIf}
188 !endif
190 ;Search if qBittorrent is already installed.
191 FindFirst $0 $1 "$INSTDIR\uninst.exe"
192 FindClose $0
193 StrCmp $1 "" done
195 ;Copy old value to var so we can call the correct uninstaller
196 StrCpy $uninstallerPath $INSTDIR
198 ;Inform the user
199 MessageBox MB_OKCANCEL|MB_ICONINFORMATION $(inst_uninstall_question) /SD IDOK IDOK done
200 Quit
202 done:
204 FunctionEnd
206 Function check_instance
208 check:
209 FindProcDLL::FindProc "qbittorrent.exe"
210 StrCmp $R0 "1" 0 notfound
211 MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(inst_warning) IDRETRY check IDCANCEL done
213 done:
214 Abort
216 notfound:
218 FunctionEnd
220 Function PageFinishRun
222 !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\qbittorrent.exe" "" "" ""
224 FunctionEnd
226 Function .onInstSuccess
227 SetErrorLevel 0
228 FunctionEnd