NSIS.template.in 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881
  1. ;ownCloud installer script.
  2. !define APPLICATION_SHORTNAME "@APPLICATION_EXECUTABLE@"
  3. !define APPLICATION_NAME "@APPLICATION_NAME@"
  4. !define APPLICATION_VENDOR "@APPLICATION_VENDOR@"
  5. !define APPLICATION_EXECUTABLE "@APPLICATION_EXECUTABLE@.exe"
  6. !define APPLICATION_CMD_EXECUTABLE "@APPLICATION_EXECUTABLE@cmd.exe"
  7. !define APPLICATION_DOMAIN "@APPLICATION_DOMAIN@"
  8. !define APPLICATION_LICENSE "@APPLICATION_LICENSE@"
  9. !define APPLICATION_VIRTUALFILE_SUFFIX "@APPLICATION_VIRTUALFILE_SUFFIX@"
  10. !define APPLICATION_VIRTUALFILE_FILECLASS "@APPLICATION_EXECUTABLE@.@APPLICATION_VIRTUALFILE_SUFFIX@"
  11. !define WIN_SETUP_BITMAP_PATH "@WIN_SETUP_BITMAP_PATH@"
  12. !define CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@"
  13. ;-----------------------------------------------------------------------------
  14. ; Some installer script options (comment-out options not required)
  15. ;-----------------------------------------------------------------------------
  16. !if "@APPLICATION_LICENSE@" != ""
  17. !define OPTION_LICENSE_AGREEMENT
  18. !endif
  19. !define OPTION_UAC_PLUGIN_ENHANCED
  20. !define OPTION_SECTION_SC_SHELL_EXT
  21. !define OPTION_SECTION_SC_START_MENU
  22. !define OPTION_SECTION_SC_DESKTOP
  23. !define OPTION_SECTION_SC_QUICK_LAUNCH
  24. !define OPTION_FINISHPAGE
  25. !define OPTION_FINISHPAGE_LAUNCHER
  26. ; !define OPTION_FINISHPAGE_RELEASE_NOTES
  27. ;-----------------------------------------------------------------------------
  28. ; Some paths.
  29. ;-----------------------------------------------------------------------------
  30. !ifndef MING_PATH
  31. !define MING_PATH "/usr/i686-w64-mingw32/sys-root/mingw"
  32. !endif
  33. !define MING_BIN "${MING_PATH}/bin"
  34. !define MING_LIB "${MING_PATH}/lib"
  35. !define MING_SHARE "${MING_PATH}/share"
  36. !define BUILD_PATH "@CMAKE_BINARY_DIR@"
  37. !define SOURCE_PATH "@CMAKE_SOURCE_DIR@"
  38. !define QT_DLL_PATH "${MING_BIN}"
  39. !define ACCESSIBLE_DLL_PATH "${MING_LIB}/qt5/plugins/accessible"
  40. !define SQLITE_DLL_PATH "${MING_LIB}/qt5/plugins/sqldrivers"
  41. !define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt5/plugins/imageformats"
  42. !define PLATFORMS_DLL_PATH "${MING_LIB}/qt5/plugins/platforms"
  43. !define CSYNC_LIBRARY_DIR "@CSYNC_LIBRARY_DIR@"
  44. !define CSYNC_CONFIG_DIR "@CSYNC_CONFIG_DIR@"
  45. !define NSI_PATH "${source_path}/admin/win/nsi"
  46. ;-----------------------------------------------------------------------------
  47. ; Installer version
  48. ;-----------------------------------------------------------------------------
  49. !define VER_MAJOR "@CPACK_PACKAGE_VERSION_MAJOR@"
  50. !define VER_MINOR "@CPACK_PACKAGE_VERSION_MINOR@"
  51. !define VER_PATCH "@CPACK_PACKAGE_VERSION_PATCH@"
  52. !define VER_BUILD "@CPACK_PACKAGE_VERSION_BUILD@"
  53. !define VERSION "@CPACK_PACKAGE_VERSION@"
  54. Var InstallRunIfSilent
  55. Var NoAutomaticUpdates
  56. ;-----------------------------------------------------------------------------
  57. ; Installer build timestamp.
  58. ;-----------------------------------------------------------------------------
  59. !define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p"
  60. ;-----------------------------------------------------------------------------
  61. ; Initial installer setup and definitions.
  62. ;-----------------------------------------------------------------------------
  63. Name "@CPACK_NSIS_PACKAGE_NAME@"
  64. BrandingText "${APPLICATION_NAME} ${VERSION} -- ${BUILD_TIME}"
  65. OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
  66. InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
  67. InstallDirRegKey HKCU "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
  68. InstType Standard
  69. InstType Full
  70. InstType Minimal
  71. CRCCheck On
  72. SetCompressor @CPACK_NSIS_COMPRESSOR@
  73. RequestExecutionLevel user ;Now using the UAC plugin.
  74. ReserveFile NSIS.InstallOptions.ini
  75. ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
  76. @CPACK_NSIS_SECTION_SELECTED_VARS@
  77. ;-----------------------------------------------------------------------------
  78. ; Include some required header files.
  79. ;-----------------------------------------------------------------------------
  80. !include LogicLib.nsh ;Used by APPDATA uninstaller.
  81. !include MUI2.nsh ;Used by APPDATA uninstaller.
  82. !include InstallOptions.nsh ;Required by MUI2 to support old MUI_INSTALLOPTIONS.
  83. !include Memento.nsh ;Remember user selections.
  84. !include WinVer.nsh ;Windows version detection.
  85. !include WordFunc.nsh ;Used by VersionCompare macro function.
  86. !include FileFunc.nsh ;Used to read out parameters
  87. !include UAC.nsh ;Used by the UAC elevation to install as user or admin.
  88. !include nsProcess.nsh ;Used to kill the running process
  89. !include Library.nsh ;Used by the COM registration for shell extensions
  90. !include x64.nsh ;Used to determine the right arch for the shell extensions
  91. !include ${source_path}/admin/win/nsi/lib/fileassoc.nsh
  92. ;-----------------------------------------------------------------------------
  93. ; Memento selections stored in registry.
  94. ;-----------------------------------------------------------------------------
  95. !define MEMENTO_REGISTRY_ROOT HKLM
  96. !define MEMENTO_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPLICATION_NAME}"
  97. ;-----------------------------------------------------------------------------
  98. ; Modern User Interface (MUI) definitions and setup.
  99. ;-----------------------------------------------------------------------------
  100. !define MUI_ABORTWARNING
  101. !define MUI_ICON ${NSI_PATH}\installer.ico
  102. !define MUI_UNICON ${NSI_PATH}\installer.ico
  103. !define MUI_WELCOMEFINISHPAGE_BITMAP ${WIN_SETUP_BITMAP_PATH}/welcome.bmp
  104. !define MUI_HEADERIMAGE
  105. !define MUI_HEADERIMAGE_BITMAP ${WIN_SETUP_BITMAP_PATH}/page_header.bmp
  106. !define MUI_COMPONENTSPAGE_SMALLDESC
  107. ; We removed this, h1 issue 191687
  108. ;!define MUI_FINISHPAGE_LINK "${APPLICATION_DOMAIN}"
  109. ;!define MUI_FINISHPAGE_LINK_LOCATION "http://${APPLICATION_DOMAIN}"
  110. !define MUI_FINISHPAGE_NOREBOOTSUPPORT
  111. !ifdef OPTION_FINISHPAGE_RELEASE_NOTES
  112. !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
  113. !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NOTES.txt"
  114. !define MUI_FINISHPAGE_SHOWREADME_TEXT $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING
  115. !endif
  116. !ifdef OPTION_FINISHPAGE_LAUNCHER
  117. !define MUI_FINISHPAGE_NOAUTOCLOSE
  118. !define MUI_FINISHPAGE_RUN
  119. !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchApplication"
  120. !endif
  121. ;-----------------------------------------------------------------------------
  122. ; Page macros.
  123. ;-----------------------------------------------------------------------------
  124. !insertmacro MUI_PAGE_WELCOME
  125. !ifdef OPTION_LICENSE_AGREEMENT
  126. !insertmacro MUI_PAGE_LICENSE "${APPLICATION_LICENSE}"
  127. !endif
  128. Page custom PageReinstall PageLeaveReinstall
  129. !insertmacro MUI_PAGE_COMPONENTS
  130. !insertmacro MUI_PAGE_DIRECTORY
  131. !insertmacro MUI_PAGE_INSTFILES
  132. !ifdef OPTION_FINISHPAGE
  133. !insertmacro MUI_PAGE_FINISH
  134. !endif
  135. !insertmacro MUI_UNPAGE_CONFIRM
  136. !insertmacro MUI_UNPAGE_INSTFILES
  137. ;-----------------------------------------------------------------------------
  138. ; Other MUI macros.
  139. ;-----------------------------------------------------------------------------
  140. !insertmacro MUI_LANGUAGE "English"
  141. !include ${source_path}/admin/win/nsi/l10n/languages.nsh
  142. !include ${source_path}/admin/win/nsi/l10n/declarations.nsh
  143. ; Set version strings with english locale
  144. VIProductVersion "${VERSION}"
  145. VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APPLICATION_NAME}"
  146. VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${APPLICATION_VENDOR}"
  147. VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${VERSION}"
  148. !macro SETLANG un
  149. Function ${un}SetLang
  150. # load the selected language file
  151. !include "${source_path}/admin/win/nsi/l10n\English.nsh"
  152. StrCmp $LANGUAGE ${LANG_GERMAN} German 0
  153. StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
  154. StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
  155. StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
  156. StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
  157. StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
  158. StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
  159. StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
  160. StrCmp $LANGUAGE ${LANG_GREEK} Greek 0
  161. StrCmp $LANGUAGE ${LANG_BASQUE} Basque 0
  162. StrCmp $LANGUAGE ${LANG_GALICIAN} Galician 0
  163. StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
  164. StrCmp $LANGUAGE ${LANG_TURKISH} Turkish 0
  165. StrCmp $LANGUAGE ${LANG_NORWEGIAN} Norwegian 0
  166. StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
  167. German:
  168. !include "${source_path}/admin/win/nsi/l10n\German.nsh"
  169. Goto EndLanguageCmp
  170. Dutch:
  171. !include "${source_path}/admin/win/nsi/l10n\Dutch.nsh"
  172. Goto EndLanguageCmp
  173. Finnish:
  174. !include "${source_path}/admin/win/nsi/l10n\Finnish.nsh"
  175. Goto EndLanguageCmp
  176. Japanese:
  177. !include "${source_path}/admin/win/nsi/l10n\Japanese.nsh"
  178. Goto EndLanguageCmp
  179. Slovenian:
  180. !include "${source_path}/admin/win/nsi/l10n\Slovenian.nsh"
  181. Goto EndLanguageCmp
  182. Spanish:
  183. !include "${source_path}/admin/win/nsi/l10n\Spanish.nsh"
  184. Goto EndLanguageCmp
  185. Italian:
  186. !include "${source_path}/admin/win/nsi/l10n\Italian.nsh"
  187. Goto EndLanguageCmp
  188. Estonian:
  189. !include "${source_path}/admin/win/nsi/l10n\Estonian.nsh"
  190. Goto EndLanguageCmp
  191. Greek:
  192. !include "${source_path}/admin/win/nsi/l10n\Greek.nsh"
  193. Goto EndLanguageCmp
  194. Basque:
  195. !include "${source_path}/admin/win/nsi/l10n\Basque.nsh"
  196. Goto EndLanguageCmp
  197. Galician:
  198. !include "${source_path}/admin/win/nsi/l10n\Galician.nsh"
  199. Goto EndLanguageCmp
  200. Polish:
  201. !include "${source_path}/admin/win/nsi/l10n\Polish.nsh"
  202. Goto EndLanguageCmp
  203. Turkish:
  204. !include "${source_path}/admin/win/nsi/l10n\Turkish.nsh"
  205. Goto EndLanguageCmp
  206. Brazilian:
  207. !include "${source_path}/admin/win/nsi/l10n\PortugueseBR.nsh"
  208. Goto EndLanguageCmp
  209. Norwegian:
  210. !include "${source_path}/admin/win/nsi/l10n\Norwegian.nsh"
  211. EndLanguageCmp:
  212. FunctionEnd
  213. !macroend
  214. !insertmacro SETLANG ""
  215. !insertmacro SETLANG "un."
  216. ; Usage: ${If} ${HasSection} SectionName
  217. !macro _HasSection _a _b _t _f
  218. ReadRegDWORD $_LOGICLIB_TEMP "${MEMENTO_REGISTRY_ROOT}" "${MEMENTO_REGISTRY_KEY}" "MementoSection_${_b}"
  219. IntCmpU $_LOGICLIB_TEMP 0 ${_f} ${_t}
  220. !macroend
  221. !define HasSection `"" HasSection`
  222. ##############################################################################
  223. # #
  224. # FINISH PAGE LAUNCHER FUNCTIONS #
  225. # #
  226. ##############################################################################
  227. Function LaunchApplication
  228. !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\${APPLICATION_EXECUTABLE}" "" "" ""
  229. FunctionEnd
  230. ##############################################################################
  231. # #
  232. # PROCESS HANDLING FUNCTIONS AND MACROS #
  233. # #
  234. ##############################################################################
  235. !macro CheckForProcess processName gotoWhenFound gotoWhenNotFound
  236. ${nsProcess::FindProcess} ${processName} $R0
  237. StrCmp $R0 0 ${gotoWhenFound} ${gotoWhenNotFound}
  238. !macroend
  239. !macro ConfirmEndProcess processName
  240. MessageBox MB_YESNO|MB_ICONEXCLAMATION \
  241. $ConfirmEndProcess_MESSAGEBOX_TEXT \
  242. /SD IDYES IDYES process_${processName}_kill IDNO process_${processName}_ended
  243. process_${processName}_kill:
  244. DetailPrint $ConfirmEndProcess_KILLING_PROCESSES_TEXT
  245. ${nsProcess::KillProcess} ${processName} $R0
  246. Sleep 1500
  247. StrCmp $R0 "1" process_${processName}_ended
  248. DetailPrint $ConfirmEndProcess_KILL_NOT_FOUND_TEXT
  249. process_${processName}_ended:
  250. !macroend
  251. !macro CheckAndConfirmEndProcess processName
  252. !insertmacro CheckForProcess ${processName} 0 no_process_${processName}_to_end
  253. !insertmacro ConfirmEndProcess ${processName}
  254. no_process_${processName}_to_end:
  255. !macroend
  256. Function EnsureOwncloudShutdown
  257. !insertmacro CheckAndConfirmEndProcess "${APPLICATION_EXECUTABLE}"
  258. FunctionEnd
  259. Function InstallRedistributables
  260. ${If} ${RunningX64}
  261. ExecWait '"$OUTDIR\vcredist_x64.exe" /install /quiet'
  262. ${Else}
  263. ExecWait '"$OUTDIR\vcredist_x86.exe" /install /quiet'
  264. ${EndIf}
  265. Delete "$OUTDIR\vcredist_x86.exe"
  266. Delete "$OUTDIR\vcredist_x64.exe"
  267. FunctionEnd
  268. ##############################################################################
  269. # #
  270. # RE-INSTALLER FUNCTIONS #
  271. # #
  272. ##############################################################################
  273. Function PageReinstall
  274. ReadRegStr $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
  275. StrCmp $R0 "" 0 +2
  276. Abort
  277. ;Detect version
  278. ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor"
  279. IntCmp $R0 ${VER_MAJOR} minor_check new_version older_version
  280. minor_check:
  281. ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor"
  282. IntCmp $R0 ${VER_MINOR} rev_check new_version older_version
  283. rev_check:
  284. ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision"
  285. IntCmp $R0 ${VER_PATCH} build_check new_version older_version
  286. build_check:
  287. ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild"
  288. IntCmp $R0 ${VER_BUILD} same_version new_version older_version
  289. new_version:
  290. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_NEW_Field_1
  291. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_NEW_Field_2
  292. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_NEW_Field_3
  293. !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE
  294. StrCpy $R0 "1"
  295. Goto reinst_start
  296. older_version:
  297. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_OLD_Field_1
  298. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_NEW_Field_2
  299. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_NEW_Field_3
  300. !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE
  301. StrCpy $R0 "1"
  302. Goto reinst_start
  303. same_version:
  304. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_SAME_Field_1
  305. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_SAME_Field_2
  306. !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_SAME_Field_3
  307. !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE
  308. StrCpy $R0 "2"
  309. reinst_start:
  310. !insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
  311. FunctionEnd
  312. Function PageLeaveReinstall
  313. !insertmacro INSTALLOPTIONS_READ $R1 "NSIS.InstallOptions.ini" "Field 2" "State"
  314. StrCmp $R0 "1" 0 +2
  315. StrCmp $R1 "1" reinst_uninstall reinst_done
  316. StrCmp $R0 "2" 0 +3
  317. StrCmp $R1 "1" reinst_done reinst_uninstall
  318. reinst_uninstall:
  319. ReadRegStr $R1 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "UninstallString"
  320. HideWindow
  321. ClearErrors
  322. ExecWait '$R1 _?=$INSTDIR'
  323. IfErrors no_remove_uninstaller
  324. IfFileExists "$INSTDIR\${APPLICATION_EXECUTABLE}" no_remove_uninstaller
  325. Delete $R1
  326. RMDir $INSTDIR
  327. no_remove_uninstaller:
  328. StrCmp $R0 "2" 0 +3
  329. Quit
  330. BringToFront
  331. reinst_done:
  332. FunctionEnd
  333. ##############################################################################
  334. # #
  335. # INSTALLER SECTIONS #
  336. # #
  337. ##############################################################################
  338. Section "${APPLICATION_NAME}" SEC_APPLICATION
  339. SectionIn 1 2 3 RO
  340. SetDetailsPrint listonly
  341. SetDetailsPrint textonly
  342. DetailPrint $SEC_APPLICATION_DETAILS
  343. SetDetailsPrint listonly
  344. SetOutPath "$INSTDIR"
  345. ;Main executable & csync
  346. File "${BUILD_PATH}\bin\${APPLICATION_EXECUTABLE}"
  347. File "${BUILD_PATH}\bin\${APPLICATION_CMD_EXECUTABLE}"
  348. File "${BUILD_PATH}\bin\lib${APPLICATION_SHORTNAME}sync.dll"
  349. File "${BUILD_PATH}\bin\lib${APPLICATION_SHORTNAME}_csync.dll"
  350. File "${BUILD_PATH}\src\gui\client*.qm"
  351. ; Make sure only to copy qt, not qt_help, etc
  352. File "${MING_SHARE}\qt5\translations\qt_??.qm"
  353. File "${MING_SHARE}\qt5\translations\qt_??_??.qm"
  354. File "${MING_SHARE}\qt5\translations\qtbase_*.qm"
  355. File "${MING_SHARE}\qt5\translations\qtkeychain_*.qm"
  356. ;Add crash reporter if it was built
  357. File /nonfatal "${BUILD_PATH}/bin/${CRASHREPORTER_EXECUTABLE}.exe"
  358. SetOutPath "$INSTDIR\platforms"
  359. File "${PLATFORMS_DLL_PATH}\qwindows.dll"
  360. SetOutPath "$INSTDIR\imageformats"
  361. File "${IMAGEFORMATS_DLL_PATH}\qgif.dll"
  362. File "${IMAGEFORMATS_DLL_PATH}\qjpeg.dll"
  363. File "${IMAGEFORMATS_DLL_PATH}\qico.dll"
  364. File "${IMAGEFORMATS_DLL_PATH}\qsvg.dll"
  365. ; PNG is built in Qt
  366. SetOutPath "$INSTDIR\sqldrivers"
  367. File "${SQLITE_DLL_PATH}\qsqlite.dll"
  368. SetOutPath "$INSTDIR"
  369. ;License & release notes.
  370. File "@CPACK_RESOURCE_FILE_LICENSE@"
  371. ;File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt
  372. ;Qt config:
  373. File "${NSI_PATH}\qt.conf"
  374. ;Qt stuff:
  375. File "${QT_DLL_PATH}\Qt5Core.dll"
  376. File "${QT_DLL_PATH}\Qt5Gui.dll"
  377. File "${QT_DLL_PATH}\Qt5Network.dll"
  378. File "${QT_DLL_PATH}\Qt5PrintSupport.dll"
  379. File "${QT_DLL_PATH}\Qt5Svg.dll"
  380. File "${QT_DLL_PATH}\Qt5Qml.dll"
  381. File "${QT_DLL_PATH}\Qt5Sql.dll"
  382. File "${QT_DLL_PATH}\Qt5WebKit.dll"
  383. File "${QT_DLL_PATH}\Qt5WebKitWidgets.dll"
  384. File "${QT_DLL_PATH}\Qt5Widgets.dll"
  385. File "${QT_DLL_PATH}\Qt5Xml.dll"
  386. ;QtWebKit dependencies
  387. File "${QT_DLL_PATH}\Qt5Multimedia.dll"
  388. File "${QT_DLL_PATH}\Qt5MultimediaWidgets.dll"
  389. File "${QT_DLL_PATH}\Qt5Sensors.dll"
  390. ;Qt deps
  391. File "${MING_BIN}\libpng16-16.dll"
  392. File "${MING_BIN}\icudata56.dll"
  393. File "${MING_BIN}\icui18n56.dll"
  394. File "${MING_BIN}\icuuc56.dll"
  395. File "${MING_BIN}\libEGL.dll"
  396. File "${MING_BIN}\libGLESv2.dll"
  397. File "${MING_BIN}\libjpeg-8.dll"
  398. File "${MING_BIN}\libpcre16-0.dll"
  399. File "${MING_BIN}\libsqlite3-0.dll"
  400. File "${MING_BIN}\libcrypto-10.dll"
  401. File "${MING_BIN}\libssl-10.dll"
  402. File "${MING_BIN}\libstdc++-6.dll"
  403. File "${MING_BIN}\libwebp-5.dll"
  404. File "${MING_BIN}\libxslt-1.dll"
  405. File "${MING_BIN}\libxml2-2.dll"
  406. File "${MING_BIN}\zlib1.dll"
  407. File "${MING_BIN}\libharfbuzz-0.dll"
  408. File "${MING_BIN}\libfreetype-6.dll"
  409. File "${MING_BIN}\libglib-2.0-0.dll"
  410. File "${MING_BIN}\libintl-8.dll"
  411. ;QtKeyChain stuff
  412. File "${MING_BIN}\libqt5keychain.dll"
  413. ;MinGW stuff
  414. File "${MING_BIN}\libgcc_s_sjlj-1.dll"
  415. File "${MING_BIN}\libstdc++-6.dll"
  416. File "${MING_BIN}\libwinpthread-1.dll"
  417. File "${MING_BIN}\libssp-0.dll"
  418. ;CSync configs
  419. File "${SOURCE_PATH}/sync-exclude.lst"
  420. ;Add file association
  421. !insertmacro APP_ASSOCIATE "${APPLICATION_VIRTUALFILE_SUFFIX}" "${APPLICATION_VIRTUALFILE_FILECLASS}" "Virtual File for Remote File" "$INSTDIR\${APPLICATION_EXECUTABLE},0" "Download" "$INSTDIR\${APPLICATION_EXECUTABLE} $\"%1$\""
  422. SectionEnd
  423. !ifdef OPTION_SECTION_SC_SHELL_EXT
  424. ${MementoSection} $OPTION_SECTION_SC_SHELL_EXT_SECTION SEC_SHELL_EXT
  425. SectionIn 1 2
  426. SetDetailsPrint textonly
  427. DetailPrint $OPTION_SECTION_SC_SHELL_EXT_DetailPrint
  428. File "${BUILD_PATH}\vcredist_x86.exe"
  429. File "${BUILD_PATH}\vcredist_x64.exe"
  430. Call InstallRedistributables
  431. !define LIBRARY_COM
  432. !define LIBRARY_SHELL_EXTENSION
  433. !define LIBRARY_IGNORE_VERSION
  434. ${If} ${RunningX64}
  435. !define LIBRARY_X64
  436. !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCUtil_x64.dll" "$INSTDIR\OCUtil_x64.dll" "$INSTDIR"
  437. !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCOverlays_x64.dll" "$INSTDIR\OCOverlays_x64.dll" "$INSTDIR"
  438. !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCContextMenu_x64.dll" "$INSTDIR\OCContextMenu_x64.dll" "$INSTDIR"
  439. !undef LIBRARY_X64
  440. ${Else}
  441. !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCUtil_x86.dll" "$INSTDIR\OCUtil_x86.dll" "$INSTDIR"
  442. !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCOverlays_x86.dll" "$INSTDIR\OCOverlays_x86.dll" "$INSTDIR"
  443. !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCContextMenu_x86.dll" "$INSTDIR\OCContextMenu_x86.dll" "$INSTDIR"
  444. ${Endif}
  445. !undef LIBRARY_COM
  446. !undef LIBRARY_SHELL_EXTENSION
  447. !undef LIBRARY_IGNORE_VERSION
  448. ${MementoSectionEnd}
  449. !endif
  450. SectionGroup $SectionGroup_Shortcuts
  451. !ifdef OPTION_SECTION_SC_START_MENU
  452. ${MementoSection} $OPTION_SECTION_SC_START_MENU_SECTION SEC_START_MENU
  453. SectionIn 1 2 3
  454. SetDetailsPrint textonly
  455. DetailPrint $OPTION_SECTION_SC_START_MENU_DetailPrint
  456. SetDetailsPrint listonly
  457. SetShellVarContext all
  458. CreateShortCut "$SMPROGRAMS\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}"
  459. SetShellVarContext current
  460. ${MementoSectionEnd}
  461. !endif
  462. !ifdef OPTION_SECTION_SC_DESKTOP
  463. ${MementoSection} $OPTION_SECTION_SC_DESKTOP_SECTION SEC_DESKTOP
  464. SectionIn 1 2
  465. SetDetailsPrint textonly
  466. DetailPrint $OPTION_SECTION_SC_DESKTOP_DetailPrint
  467. SetDetailsPrint listonly
  468. SetShellVarContext all
  469. CreateShortCut "$DESKTOP\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}"
  470. SetShellVarContext current
  471. ${MementoSectionEnd}
  472. !endif
  473. !ifdef OPTION_SECTION_SC_QUICK_LAUNCH
  474. ${MementoSection} $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION SEC_QUICK_LAUNCH
  475. SectionIn 1 2
  476. SetDetailsPrint textonly
  477. DetailPrint $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint
  478. SetShellVarContext all
  479. SetDetailsPrint listonly
  480. CreateShortCut "$QUICKLAUNCH\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}"
  481. SetShellVarContext current
  482. ${MementoSectionEnd}
  483. !endif
  484. SectionGroupEnd
  485. ${MementoSectionDone}
  486. ; Installer section descriptions
  487. ;--------------------------------
  488. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  489. !insertmacro MUI_DESCRIPTION_TEXT ${SEC_APPLICATION} $OPTION_SECTION_SC_APPLICATION_Desc
  490. !insertmacro MUI_DESCRIPTION_TEXT ${SEC_START_MENU} $OPTION_SECTION_SC_START_MENU_Desc
  491. !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $OPTION_SECTION_SC_DESKTOP_Desc
  492. !insertmacro MUI_DESCRIPTION_TEXT ${SEC_QUICK_LAUNCH} $OPTION_SECTION_SC_QUICK_LAUNCH_Desc
  493. !insertmacro MUI_FUNCTION_DESCRIPTION_END
  494. Section -post
  495. ;Uninstaller file.
  496. SetDetailsPrint textonly
  497. DetailPrint $UNINSTALLER_FILE_Detail
  498. SetDetailsPrint listonly
  499. WriteUninstaller $INSTDIR\uninstall.exe
  500. ;Registry keys required for installer version handling and uninstaller.
  501. SetDetailsPrint textonly
  502. DetailPrint $UNINSTALLER_REGISTRY_Detail
  503. SetDetailsPrint listonly
  504. ;Version numbers used to detect existing installation version for comparison.
  505. WriteRegStr HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" $INSTDIR
  506. WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" "${VER_MAJOR}"
  507. WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor" "${VER_MINOR}"
  508. WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision" "${VER_PATCH}"
  509. WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" "${VER_BUILD}"
  510. ;Add or Remove Programs entry.
  511. WriteRegExpandStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
  512. WriteRegExpandStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation" "$INSTDIR"
  513. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayName" "${APPLICATION_NAME}"
  514. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "Publisher" "${APPLICATION_VENDOR}"
  515. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayIcon" "$INSTDIR\Uninstall.exe,0"
  516. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayVersion" "${VERSION}"
  517. WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "VersionMajor" "${VER_MAJOR}"
  518. WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "VersionMinor" "${VER_MINOR}.${VER_PATCH}.${VER_BUILD}"
  519. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "URLInfoAbout" "http://${APPLICATION_DOMAIN}/"
  520. WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "HelpLink" "http://${APPLICATION_DOMAIN}/"
  521. WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "NoModify" "1"
  522. WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "NoRepair" "1"
  523. SetDetailsPrint textonly
  524. DetailPrint $UNINSTALLER_FINISHED_Detail
  525. SectionEnd
  526. ##############################################################################
  527. # #
  528. # UNINSTALLER SECTION #
  529. # #
  530. ##############################################################################
  531. Function un.EnsureOwncloudShutdown
  532. !insertmacro CheckAndConfirmEndProcess "${APPLICATION_EXECUTABLE}"
  533. FunctionEnd
  534. Section Uninstall
  535. IfFileExists "$INSTDIR\${APPLICATION_EXECUTABLE}" owncloud_installed
  536. MessageBox MB_YESNO $UNINSTALL_MESSAGEBOX /SD IDYES IDYES owncloud_installed
  537. Abort $UNINSTALL_ABORT
  538. owncloud_installed:
  539. ; Delete Navigation Pane entries added for Windows 10.
  540. ; On 64bit Windows, the client will be writing to the 64bit registry.
  541. ${If} ${RunningX64}
  542. SetRegView 64
  543. ${EndIf}
  544. StrCpy $0 0
  545. loop:
  546. ; Look at every registered explorer namespace for HKCU and check if it was added by our application
  547. ; (we write to a custom "ApplicationName" value there).
  548. EnumRegKey $1 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace" $0
  549. StrCmp $1 "" done
  550. ReadRegStr $R0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" "ApplicationName"
  551. StrCmp $R0 "${APPLICATION_NAME}" deleteClsid
  552. ; Increment the index when not deleting the enumerated key.
  553. IntOp $0 $0 + 1
  554. goto loop
  555. deleteClsid:
  556. DetailPrint "Removing Navigation Pane CLSID $1"
  557. ; Should match FolderMan::updateCloudStorageRegistry
  558. DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1"
  559. DeleteRegKey HKCU "Software\Classes\CLSID\$1"
  560. DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" $1
  561. goto loop
  562. done:
  563. ; Go back to the 32bit registry.
  564. SetRegView lastused
  565. ;Delete registry keys.
  566. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild"
  567. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor"
  568. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor"
  569. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision"
  570. DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" ""
  571. DeleteRegKey HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}"
  572. DeleteRegKey HKCR "${APPLICATION_NAME}"
  573. ;Remove file association
  574. !insertmacro APP_UNASSOCIATE "${APPLICATION_VIRTUALFILE_SUFFIX}" "${APPLICATION_VIRTUALFILE_FILECLASS}"
  575. ;Shell extension
  576. !ifdef OPTION_SECTION_SC_SHELL_EXT
  577. !define LIBRARY_COM
  578. !define LIBRARY_SHELL_EXTENSION
  579. !define LIBRARY_IGNORE_VERSION
  580. ${If} ${HasSection} SEC_SHELL_EXT
  581. DetailPrint "Uninstalling x64 overlay DLLs"
  582. !define LIBRARY_X64
  583. !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCContextMenu_x64.dll"
  584. !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCOverlays_x64.dll"
  585. !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCUtil_x64.dll"
  586. !undef LIBRARY_X64
  587. DetailPrint "Uninstalling x86 overlay DLLs"
  588. !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCContextMenu_x86.dll"
  589. !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCOverlays_x86.dll"
  590. !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\OCUtil_x86.dll"
  591. ${EndIf}
  592. !undef LIBRARY_COM
  593. !undef LIBRARY_SHELL_EXTENSION
  594. !undef LIBRARY_IGNORE_VERSION
  595. !endif
  596. ;Start menu shortcut
  597. !ifdef OPTION_SECTION_SC_START_MENU
  598. SetShellVarContext all
  599. ${If} ${HasSection} SEC_START_MENU
  600. Delete "$SMPROGRAMS\${APPLICATION_NAME}.lnk"
  601. ${EndIf}
  602. SetShellVarContext current
  603. !endif
  604. ;Desktop shortcut.
  605. !ifdef OPTION_SECTION_SC_DESKTOP
  606. ${If} ${HasSection} SEC_DESKTOP
  607. SetShellVarContext all
  608. ${If} ${FileExists} "$DESKTOP\${APPLICATION_NAME}.lnk"
  609. Delete "$DESKTOP\${APPLICATION_NAME}.lnk"
  610. ${EndIf}
  611. SetShellVarContext current
  612. ${EndIf}
  613. !endif
  614. ;Quick Launch shortcut.
  615. !ifdef OPTION_SECTION_SC_QUICK_LAUNCH
  616. ${If} ${HasSection} SEC_QUICK_LAUNCH
  617. SetShellVarContext all
  618. ${If} ${FileExists} "$QUICKLAUNCH\${APPLICATION_NAME}.lnk"
  619. Delete "$QUICKLAUNCH\${APPLICATION_NAME}.lnk"
  620. ${EndIf}
  621. SetShellVarContext current
  622. ${EndIf}
  623. !endif
  624. ;Remove all the Program Files.
  625. RMDir /r $INSTDIR
  626. DeleteRegKey ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}"
  627. SetDetailsPrint textonly
  628. DetailPrint $UNINSTALLER_FINISHED_Detail
  629. SectionEnd
  630. ##############################################################################
  631. # #
  632. # NSIS Installer Event Handler Functions #
  633. # #
  634. ##############################################################################
  635. Function .onInit
  636. SetOutPath $INSTDIR
  637. ${GetParameters} $R0
  638. ${GetOptions} $R0 "/launch" $R0
  639. ${IfNot} ${Errors}
  640. StrCpy $InstallRunIfSilent "yes"
  641. ${EndIf}
  642. ${GetParameters} $R0
  643. ${GetOptions} $R0 "/noautoupdate" $R0
  644. ${IfNot} ${Errors}
  645. StrCpy $NoAutomaticUpdates "yes"
  646. ${EndIf}
  647. !insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
  648. ; uncomment this line if you want to see the language selection
  649. ;!insertmacro MUI_LANGDLL_DISPLAY
  650. Call SetLang
  651. ; Remove Quick Launch option from Windows 7, as no longer applicable - usually.
  652. ${IfNot} ${AtMostWinVista}
  653. SectionSetText ${SEC_QUICK_LAUNCH} $INIT_NO_QUICK_LAUNCH
  654. SectionSetFlags ${SEC_QUICK_LAUNCH} ${SF_RO}
  655. SectionSetInstTypes ${SEC_QUICK_LAUNCH} 0
  656. ${EndIf}
  657. ; Some people might have a shortcut called 'ownCloud' pointing elsewhere, see #356
  658. ; Unselect item and adjust text
  659. ${If} ${FileExists} "$DESKTOP\${APPLICATION_NAME}.lnk"
  660. SectionSetText ${SEC_DESKTOP} $INIT_NO_DESKTOP
  661. Push $0
  662. SectionSetFlags ${SEC_DESKTOP} 0
  663. SectionSetInstTypes ${SEC_DESKTOP} 0
  664. Pop $0
  665. ${EndIf}
  666. ${MementoSectionRestore}
  667. UAC_TryAgain:
  668. !insertmacro UAC_RunElevated
  669. ${Switch} $0
  670. ${Case} 0
  671. ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done
  672. ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on
  673. ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
  674. MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0
  675. ${EndIf}
  676. ;fall-through and die
  677. ${Case} 1223
  678. MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN
  679. Quit
  680. ${Case} 1062
  681. MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE
  682. Quit
  683. ${Default}
  684. MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0"
  685. Abort
  686. Quit
  687. ${EndSwitch}
  688. ;Prevent multiple instances.
  689. System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Installer") i .r1 ?e'
  690. Pop $R0
  691. StrCmp $R0 0 +3
  692. MessageBox MB_OK|MB_ICONEXCLAMATION $INIT_INSTALLER_RUNNING
  693. Abort
  694. ;Use available InstallLocation when possible. This is useful in the uninstaller
  695. ;via re-install, which would otherwise use a default location - a bug.
  696. ReadRegStr $R0 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation"
  697. StrCmp $R0 "" SkipSetInstDir
  698. StrCpy $INSTDIR $R0
  699. SkipSetInstDir:
  700. ;Shutdown ${APPLICATION_NAME} in case Add/Remove re-installer option used.
  701. Call EnsureOwncloudShutdown
  702. ReadRegStr $R0 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation"
  703. ${If} ${Silent}
  704. ${AndIf} $R0 != ""
  705. ExecWait '"$R0\Uninstall.exe" /S _?=$R0'
  706. ${EndIf}
  707. FunctionEnd
  708. Function .onInstSuccess
  709. ${MementoSectionSave}
  710. ${If} $NoAutomaticUpdates == "yes"
  711. WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "skipUpdateCheck" "1"
  712. ${EndIf}
  713. ; TODO: Only needed to when updating from 2.1.{0,1}. Remove in due time.
  714. Delete /REBOOTOK $INSTDIR\bearer\qgenericbearer.dll
  715. Delete /REBOOTOK $INSTDIR\bearer\qnativewifibearer.dll
  716. RMDir /REBOOTOK $INSTDIR\bearer
  717. ${If} ${Silent}
  718. ${AndIf} $InstallRunIfSilent == "yes"
  719. Call LaunchApplication
  720. ${EndIf}
  721. FunctionEnd
  722. Function .onInstFailed
  723. FunctionEnd
  724. ##############################################################################
  725. # #
  726. # NSIS Uninstaller Event Handler Functions #
  727. # #
  728. ##############################################################################
  729. Function un.onInit
  730. Call un.SetLang
  731. UAC_TryAgain:
  732. !insertmacro UAC_RunElevated
  733. ${Switch} $0
  734. ${Case} 0
  735. ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done
  736. ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on
  737. ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
  738. MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0
  739. ${EndIf}
  740. ;fall-through and die
  741. ${Case} 1223
  742. MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN
  743. Quit
  744. ${Case} 1062
  745. MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE
  746. Quit
  747. ${Default}
  748. MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0"
  749. Abort
  750. Quit
  751. ${EndSwitch}
  752. ;Prevent multiple instances.
  753. System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Uninstaller") i .r1 ?e'
  754. Pop $R0
  755. StrCmp $R0 0 +3
  756. MessageBox MB_OK|MB_ICONEXCLAMATION $INIT_UNINSTALLER_RUNNING
  757. Abort
  758. ;Shutdown ${APPLICATION_NAME} in order to remove locked files.
  759. Call un.EnsureOwncloudShutdown
  760. FunctionEnd
  761. Function un.onUnInstSuccess
  762. FunctionEnd
  763. Function un.onUnInstFailed
  764. FunctionEnd