diff options
Diffstat (limited to 'cmake/modules/NSIS.template.in')
-rw-r--r-- | cmake/modules/NSIS.template.in | 871 |
1 files changed, 0 insertions, 871 deletions
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in deleted file mode 100644 index 3840b6f05..000000000 --- a/cmake/modules/NSIS.template.in +++ /dev/null @@ -1,871 +0,0 @@ -;ownCloud installer script. - -!define APPLICATION_SHORTNAME "@APPLICATION_EXECUTABLE@" -!define APPLICATION_NAME "@APPLICATION_NAME@" -!define APPLICATION_VENDOR "@APPLICATION_VENDOR@" -!define APPLICATION_EXECUTABLE "@APPLICATION_EXECUTABLE@.exe" -!define APPLICATION_CMD_EXECUTABLE "@APPLICATION_EXECUTABLE@cmd.exe" -!define APPLICATION_DOMAIN "@APPLICATION_DOMAIN@" -!define APPLICATION_LICENSE "@APPLICATION_LICENSE@" -!define APPLICATION_VIRTUALFILE_SUFFIX "@APPLICATION_VIRTUALFILE_SUFFIX@" -!define APPLICATION_VIRTUALFILE_FILECLASS "@APPLICATION_EXECUTABLE@.@APPLICATION_VIRTUALFILE_SUFFIX@" -!define WIN_SETUP_BITMAP_PATH "@WIN_SETUP_BITMAP_PATH@" - -!define CRASHREPORTER_EXECUTABLE "@CRASHREPORTER_EXECUTABLE@" - -;----------------------------------------------------------------------------- -; Some installer script options (comment-out options not required) -;----------------------------------------------------------------------------- -!if "@APPLICATION_LICENSE@" != "" - !define OPTION_LICENSE_AGREEMENT -!endif -!define OPTION_UAC_PLUGIN_ENHANCED -!define OPTION_SECTION_SC_SHELL_EXT -!define OPTION_SECTION_SC_START_MENU -!define OPTION_SECTION_SC_DESKTOP -!define OPTION_SECTION_SC_QUICK_LAUNCH -!define OPTION_FINISHPAGE -!define OPTION_FINISHPAGE_LAUNCHER -; !define OPTION_FINISHPAGE_RELEASE_NOTES - -;----------------------------------------------------------------------------- -; Some paths. -;----------------------------------------------------------------------------- -!ifndef MING_PATH - !define MING_PATH "/usr/i686-w64-mingw32/sys-root/mingw" -!endif -!define MING_BIN "${MING_PATH}/bin" -!define MING_LIB "${MING_PATH}/lib" -!define MING_SHARE "${MING_PATH}/share" -!define BUILD_PATH "@CMAKE_BINARY_DIR@" -!define SOURCE_PATH "@CMAKE_SOURCE_DIR@" -!define QT_DLL_PATH "${MING_BIN}" -!define ACCESSIBLE_DLL_PATH "${MING_LIB}/qt5/plugins/accessible" -!define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt5/plugins/imageformats" -!define PLATFORMS_DLL_PATH "${MING_LIB}/qt5/plugins/platforms" - -!define CSYNC_LIBRARY_DIR "@CSYNC_LIBRARY_DIR@" -!define CSYNC_CONFIG_DIR "@CSYNC_CONFIG_DIR@" - -!define NSI_PATH "${source_path}/admin/win/nsi" - -;----------------------------------------------------------------------------- -; Installer version -;----------------------------------------------------------------------------- - -!define VER_MAJOR "@CPACK_PACKAGE_VERSION_MAJOR@" -!define VER_MINOR "@CPACK_PACKAGE_VERSION_MINOR@" -!define VER_PATCH "@CPACK_PACKAGE_VERSION_PATCH@" -!define VER_BUILD "@CPACK_PACKAGE_VERSION_BUILD@" -!define VERSION "@CPACK_PACKAGE_VERSION@" - -Var InstallRunIfSilent -Var NoAutomaticUpdates - -;----------------------------------------------------------------------------- -; Installer build timestamp. -;----------------------------------------------------------------------------- -!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p" - -;----------------------------------------------------------------------------- -; Initial installer setup and definitions. -;----------------------------------------------------------------------------- -Name "@CPACK_NSIS_PACKAGE_NAME@" -BrandingText "${APPLICATION_NAME} ${VERSION} -- ${BUILD_TIME}" -OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" -InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" -InstallDirRegKey HKCU "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" -InstType Standard -InstType Full -InstType Minimal -CRCCheck On -SetCompressor @CPACK_NSIS_COMPRESSOR@ -RequestExecutionLevel user ;Now using the UAC plugin. -ReserveFile NSIS.InstallOptions.ini -ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll" - -@CPACK_NSIS_SECTION_SELECTED_VARS@ - -;----------------------------------------------------------------------------- -; Include some required header files. -;----------------------------------------------------------------------------- -!include LogicLib.nsh ;Used by APPDATA uninstaller. -!include MUI2.nsh ;Used by APPDATA uninstaller. -!include InstallOptions.nsh ;Required by MUI2 to support old MUI_INSTALLOPTIONS. -!include Memento.nsh ;Remember user selections. -!include WinVer.nsh ;Windows version detection. -!include WordFunc.nsh ;Used by VersionCompare macro function. -!include FileFunc.nsh ;Used to read out parameters -!include UAC.nsh ;Used by the UAC elevation to install as user or admin. -!include nsProcess.nsh ;Used to kill the running process -!include Library.nsh ;Used by the COM registration for shell extensions -!include x64.nsh ;Used to determine the right arch for the shell extensions - -!include ${source_path}/admin/win/nsi/lib/fileassoc.nsh - -;----------------------------------------------------------------------------- -; Memento selections stored in registry. -;----------------------------------------------------------------------------- -!define MEMENTO_REGISTRY_ROOT HKLM -!define MEMENTO_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPLICATION_NAME}" - -;----------------------------------------------------------------------------- -; Modern User Interface (MUI) definitions and setup. -;----------------------------------------------------------------------------- -!define MUI_ABORTWARNING -!define MUI_ICON ${NSI_PATH}\installer.ico -!define MUI_UNICON ${NSI_PATH}\installer.ico -!define MUI_WELCOMEFINISHPAGE_BITMAP ${WIN_SETUP_BITMAP_PATH}/welcome.bmp -!define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP ${WIN_SETUP_BITMAP_PATH}/page_header.bmp -!define MUI_COMPONENTSPAGE_SMALLDESC -; We removed this, h1 issue 191687 -;!define MUI_FINISHPAGE_LINK "${APPLICATION_DOMAIN}" -;!define MUI_FINISHPAGE_LINK_LOCATION "http://${APPLICATION_DOMAIN}" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!ifdef OPTION_FINISHPAGE_RELEASE_NOTES - !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED - !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NOTES.txt" - !define MUI_FINISHPAGE_SHOWREADME_TEXT $MUI_FINISHPAGE_SHOWREADME_TEXT_STRING -!endif -!ifdef OPTION_FINISHPAGE_LAUNCHER - !define MUI_FINISHPAGE_NOAUTOCLOSE - !define MUI_FINISHPAGE_RUN - !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchApplication" -!endif - -;----------------------------------------------------------------------------- -; Page macros. -;----------------------------------------------------------------------------- -!insertmacro MUI_PAGE_WELCOME -!ifdef OPTION_LICENSE_AGREEMENT - !insertmacro MUI_PAGE_LICENSE "${APPLICATION_LICENSE}" -!endif -Page custom PageReinstall PageLeaveReinstall -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES -!ifdef OPTION_FINISHPAGE - !insertmacro MUI_PAGE_FINISH -!endif -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -;----------------------------------------------------------------------------- -; Other MUI macros. -;----------------------------------------------------------------------------- -!insertmacro MUI_LANGUAGE "English" - -!include ${source_path}/admin/win/nsi/l10n/languages.nsh -!include ${source_path}/admin/win/nsi/l10n/declarations.nsh - -; Set version strings with english locale -VIProductVersion "${VERSION}" -VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APPLICATION_NAME}" -VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "${APPLICATION_VENDOR}" -VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${VERSION}" - -!macro SETLANG un - Function ${un}SetLang - # load the selected language file - !include "${source_path}/admin/win/nsi/l10n\English.nsh" - StrCmp $LANGUAGE ${LANG_GERMAN} German 0 - StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0 - StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0 - StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0 - StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0 - StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0 - StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0 - StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0 - StrCmp $LANGUAGE ${LANG_GREEK} Greek 0 - StrCmp $LANGUAGE ${LANG_BASQUE} Basque 0 - StrCmp $LANGUAGE ${LANG_GALICIAN} Galician 0 - StrCmp $LANGUAGE ${LANG_POLISH} Polish 0 - StrCmp $LANGUAGE ${LANG_TURKISH} Turkish 0 - StrCmp $LANGUAGE ${LANG_NORWEGIAN} Norwegian 0 - StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp - German: - !include "${source_path}/admin/win/nsi/l10n\German.nsh" - Goto EndLanguageCmp - Dutch: - !include "${source_path}/admin/win/nsi/l10n\Dutch.nsh" - Goto EndLanguageCmp - Finnish: - !include "${source_path}/admin/win/nsi/l10n\Finnish.nsh" - Goto EndLanguageCmp - Japanese: - !include "${source_path}/admin/win/nsi/l10n\Japanese.nsh" - Goto EndLanguageCmp - Slovenian: - !include "${source_path}/admin/win/nsi/l10n\Slovenian.nsh" - Goto EndLanguageCmp - Spanish: - !include "${source_path}/admin/win/nsi/l10n\Spanish.nsh" - Goto EndLanguageCmp - Italian: - !include "${source_path}/admin/win/nsi/l10n\Italian.nsh" - Goto EndLanguageCmp - Estonian: - !include "${source_path}/admin/win/nsi/l10n\Estonian.nsh" - Goto EndLanguageCmp - Greek: - !include "${source_path}/admin/win/nsi/l10n\Greek.nsh" - Goto EndLanguageCmp - Basque: - !include "${source_path}/admin/win/nsi/l10n\Basque.nsh" - Goto EndLanguageCmp - Galician: - !include "${source_path}/admin/win/nsi/l10n\Galician.nsh" - Goto EndLanguageCmp - Polish: - !include "${source_path}/admin/win/nsi/l10n\Polish.nsh" - Goto EndLanguageCmp - Turkish: - !include "${source_path}/admin/win/nsi/l10n\Turkish.nsh" - Goto EndLanguageCmp - Brazilian: - !include "${source_path}/admin/win/nsi/l10n\PortugueseBR.nsh" - Goto EndLanguageCmp - Norwegian: - !include "${source_path}/admin/win/nsi/l10n\Norwegian.nsh" - EndLanguageCmp: - - FunctionEnd -!macroend - -!insertmacro SETLANG "" -!insertmacro SETLANG "un." - -; Usage: ${If} ${HasSection} SectionName -!macro _HasSection _a _b _t _f - ReadRegDWORD $_LOGICLIB_TEMP "${MEMENTO_REGISTRY_ROOT}" "${MEMENTO_REGISTRY_KEY}" "MementoSection_${_b}" - IntCmpU $_LOGICLIB_TEMP 0 ${_f} ${_t} -!macroend -!define HasSection `"" HasSection` - -############################################################################## -# # -# FINISH PAGE LAUNCHER FUNCTIONS # -# # -############################################################################## - -Function LaunchApplication - !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\${APPLICATION_EXECUTABLE}" "" "" "" -FunctionEnd - -############################################################################## -# # -# PROCESS HANDLING FUNCTIONS AND MACROS # -# # -############################################################################## - -!macro CheckForProcess processName gotoWhenFound gotoWhenNotFound - ${nsProcess::FindProcess} ${processName} $R0 - StrCmp $R0 0 ${gotoWhenFound} ${gotoWhenNotFound} -!macroend - -!macro ConfirmEndProcess processName - MessageBox MB_YESNO|MB_ICONEXCLAMATION \ - $ConfirmEndProcess_MESSAGEBOX_TEXT \ - /SD IDYES IDYES process_${processName}_kill IDNO process_${processName}_ended - process_${processName}_kill: - DetailPrint $ConfirmEndProcess_KILLING_PROCESSES_TEXT - ${nsProcess::KillProcess} ${processName} $R0 - Sleep 1500 - StrCmp $R0 "1" process_${processName}_ended - DetailPrint $ConfirmEndProcess_KILL_NOT_FOUND_TEXT - process_${processName}_ended: -!macroend - -!macro CheckAndConfirmEndProcess processName - !insertmacro CheckForProcess ${processName} 0 no_process_${processName}_to_end - !insertmacro ConfirmEndProcess ${processName} - no_process_${processName}_to_end: -!macroend - -Function EnsureOwncloudShutdown - !insertmacro CheckAndConfirmEndProcess "${APPLICATION_EXECUTABLE}" -FunctionEnd - -Function InstallRedistributables - ${If} ${RunningX64} - ExecWait '"$OUTDIR\vcredist_x64.exe" /install /quiet' - ${Else} - ExecWait '"$OUTDIR\vcredist_x86.exe" /install /quiet' - ${EndIf} - Delete "$OUTDIR\vcredist_x86.exe" - Delete "$OUTDIR\vcredist_x64.exe" -FunctionEnd - -############################################################################## -# # -# RE-INSTALLER FUNCTIONS # -# # -############################################################################## - -Function PageReinstall - ReadRegStr $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" - StrCmp $R0 "" 0 +2 - Abort - - ;Detect version - ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" - IntCmp $R0 ${VER_MAJOR} minor_check new_version older_version - minor_check: - ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor" - IntCmp $R0 ${VER_MINOR} rev_check new_version older_version - rev_check: - ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision" - IntCmp $R0 ${VER_PATCH} build_check new_version older_version - build_check: - ReadRegDWORD $R0 HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" - IntCmp $R0 ${VER_BUILD} same_version new_version older_version - - new_version: - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_NEW_Field_1 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_NEW_Field_2 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_NEW_Field_3 - !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE - StrCpy $R0 "1" - Goto reinst_start - - older_version: - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_OLD_Field_1 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_NEW_Field_2 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_NEW_Field_3 - !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_NEW_MUI_HEADER_TEXT_SUBTITLE - StrCpy $R0 "1" - Goto reinst_start - - same_version: - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" $PageReinstall_SAME_Field_1 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" $PageReinstall_SAME_Field_2 - !insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" $PageReinstall_SAME_Field_3 - !insertmacro MUI_HEADER_TEXT $PageReinstall_NEW_MUI_HEADER_TEXT_TITLE $PageReinstall_SAME_MUI_HEADER_TEXT_SUBTITLE - StrCpy $R0 "2" - - reinst_start: - !insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" -FunctionEnd - -Function PageLeaveReinstall - !insertmacro INSTALLOPTIONS_READ $R1 "NSIS.InstallOptions.ini" "Field 2" "State" - StrCmp $R0 "1" 0 +2 - StrCmp $R1 "1" reinst_uninstall reinst_done - StrCmp $R0 "2" 0 +3 - StrCmp $R1 "1" reinst_done reinst_uninstall - reinst_uninstall: - ReadRegStr $R1 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "UninstallString" - HideWindow - ClearErrors - ExecWait '$R1 _?=$INSTDIR' - IfErrors no_remove_uninstaller - IfFileExists "$INSTDIR\${APPLICATION_EXECUTABLE}" no_remove_uninstaller - Delete $R1 - RMDir $INSTDIR - no_remove_uninstaller: - StrCmp $R0 "2" 0 +3 - Quit - BringToFront - reinst_done: -FunctionEnd - -############################################################################## -# # -# INSTALLER SECTIONS # -# # -############################################################################## -Section "${APPLICATION_NAME}" SEC_APPLICATION - SectionIn 1 2 3 RO - SetDetailsPrint listonly - - SetDetailsPrint textonly - DetailPrint $SEC_APPLICATION_DETAILS - SetDetailsPrint listonly - SetOutPath "$INSTDIR" - - ;Main executable & csync - File "${BUILD_PATH}\bin\${APPLICATION_EXECUTABLE}" - File "${BUILD_PATH}\bin\${APPLICATION_CMD_EXECUTABLE}" - File "${BUILD_PATH}\bin\lib${APPLICATION_SHORTNAME}sync.dll" - File "${BUILD_PATH}\bin\lib${APPLICATION_SHORTNAME}_csync.dll" - - File "${BUILD_PATH}\src\gui\client*.qm" - ; Make sure only to copy qt, not qt_help, etc - File "${MING_SHARE}\qt5\translations\qt_??.qm" - File "${MING_SHARE}\qt5\translations\qt_??_??.qm" - File "${MING_SHARE}\qt5\translations\qtbase_*.qm" - File "${MING_SHARE}\qt5\translations\qtkeychain_*.qm" - - ;Add crash reporter if it was built - File /nonfatal "${BUILD_PATH}/bin/${CRASHREPORTER_EXECUTABLE}.exe" - - SetOutPath "$INSTDIR\platforms" - File "${PLATFORMS_DLL_PATH}\qwindows.dll" - SetOutPath "$INSTDIR\imageformats" - File "${IMAGEFORMATS_DLL_PATH}\qgif.dll" - File "${IMAGEFORMATS_DLL_PATH}\qjpeg.dll" - File "${IMAGEFORMATS_DLL_PATH}\qico.dll" - File "${IMAGEFORMATS_DLL_PATH}\qsvg.dll" - ; PNG is built in Qt - - SetOutPath "$INSTDIR" - ;License & release notes. - File "@CPACK_RESOURCE_FILE_LICENSE@" - ;File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt - - ;Qt config: - File "${NSI_PATH}\qt.conf" - - ;Qt stuff: - File "${QT_DLL_PATH}\Qt5Core.dll" - File "${QT_DLL_PATH}\Qt5Gui.dll" - File "${QT_DLL_PATH}\Qt5Network.dll" - File "${QT_DLL_PATH}\Qt5PrintSupport.dll" - File "${QT_DLL_PATH}\Qt5Svg.dll" - File "${QT_DLL_PATH}\Qt5Qml.dll" - File "${QT_DLL_PATH}\Qt5Sql.dll" - File "${QT_DLL_PATH}\Qt5Widgets.dll" - File "${QT_DLL_PATH}\Qt5Xml.dll" - - ;Qt deps - File "${MING_BIN}\libpng16-16.dll" - File "${MING_BIN}\icudata56.dll" - File "${MING_BIN}\icui18n56.dll" - File "${MING_BIN}\icuuc56.dll" - File "${MING_BIN}\libEGL.dll" - File "${MING_BIN}\libGLESv2.dll" - File "${MING_BIN}\libjpeg-8.dll" - File "${MING_BIN}\libpcre16-0.dll" - File "${MING_BIN}\libsqlite3-0.dll" - File "${MING_BIN}\libcrypto-10.dll" - File "${MING_BIN}\libssl-10.dll" - File "${MING_BIN}\libstdc++-6.dll" - File "${MING_BIN}\libwebp-5.dll" - File "${MING_BIN}\libxslt-1.dll" - File "${MING_BIN}\libxml2-2.dll" - File "${MING_BIN}\zlib1.dll" - File "${MING_BIN}\libharfbuzz-0.dll" - File "${MING_BIN}\libfreetype-6.dll" - File "${MING_BIN}\libglib-2.0-0.dll" - File "${MING_BIN}\libintl-8.dll" - - ;QtKeyChain stuff - File "${MING_BIN}\libqt5keychain.dll" - - ;MinGW stuff - File "${MING_BIN}\libgcc_s_sjlj-1.dll" - File "${MING_BIN}\libstdc++-6.dll" - File "${MING_BIN}\libwinpthread-1.dll" - File "${MING_BIN}\libssp-0.dll" - - ;CSync configs - File "${SOURCE_PATH}/sync-exclude.lst" - - ;Add file association - !insertmacro APP_ASSOCIATE "${APPLICATION_VIRTUALFILE_SUFFIX}" "${APPLICATION_VIRTUALFILE_FILECLASS}" "Virtual File for Remote File" "$INSTDIR\${APPLICATION_EXECUTABLE},0" "Download" "$INSTDIR\${APPLICATION_EXECUTABLE} $\"%1$\"" - -SectionEnd - -!ifdef OPTION_SECTION_SC_SHELL_EXT - ${MementoSection} $OPTION_SECTION_SC_SHELL_EXT_SECTION SEC_SHELL_EXT - SectionIn 1 2 - SetDetailsPrint textonly - DetailPrint $OPTION_SECTION_SC_SHELL_EXT_DetailPrint - File "${BUILD_PATH}\vcredist_x86.exe" - File "${BUILD_PATH}\vcredist_x64.exe" - Call InstallRedistributables - CreateDirectory "$INSTDIR\shellext" - !define LIBRARY_COM - !define LIBRARY_SHELL_EXTENSION - !define LIBRARY_IGNORE_VERSION - ${If} ${RunningX64} - !define LIBRARY_X64 - !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCUtil_x64.dll" "$INSTDIR\shellext\OCUtil_x64.dll" "$INSTDIR\shellext" - !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCOverlays_x64.dll" "$INSTDIR\shellext\OCOverlays_x64.dll" "$INSTDIR\shellext" - !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\x64\OCContextMenu_x64.dll" "$INSTDIR\shellext\OCContextMenu_x64.dll" "$INSTDIR\shellext" - !undef LIBRARY_X64 - ${Else} - !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCUtil_x86.dll" "$INSTDIR\shellext\OCUtil_x86.dll" "$INSTDIR\shellext" - !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCOverlays_x86.dll" "$INSTDIR\shellext\OCOverlays_x86.dll" "$INSTDIR\shellext" - !insertmacro InstallLib REGDLL NOTSHARED REBOOT_PROTECTED "${SOURCE_PATH}\binary\shell_integration\windows\Release\Win32\OCContextMenu_x86.dll" "$INSTDIR\shellext\OCContextMenu_x86.dll" "$INSTDIR\shellext" - ${Endif} - !undef LIBRARY_COM - !undef LIBRARY_SHELL_EXTENSION - !undef LIBRARY_IGNORE_VERSION - ${MementoSectionEnd} -!endif - -SectionGroup $SectionGroup_Shortcuts - -!ifdef OPTION_SECTION_SC_START_MENU - ${MementoSection} $OPTION_SECTION_SC_START_MENU_SECTION SEC_START_MENU - SectionIn 1 2 3 - SetDetailsPrint textonly - DetailPrint $OPTION_SECTION_SC_START_MENU_DetailPrint - SetDetailsPrint listonly - SetShellVarContext all - CreateShortCut "$SMPROGRAMS\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}" - SetShellVarContext current - ${MementoSectionEnd} -!endif - -!ifdef OPTION_SECTION_SC_DESKTOP - ${MementoSection} $OPTION_SECTION_SC_DESKTOP_SECTION SEC_DESKTOP - SectionIn 1 2 - SetDetailsPrint textonly - DetailPrint $OPTION_SECTION_SC_DESKTOP_DetailPrint - SetDetailsPrint listonly - SetShellVarContext all - CreateShortCut "$DESKTOP\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}" - SetShellVarContext current - ${MementoSectionEnd} -!endif - -!ifdef OPTION_SECTION_SC_QUICK_LAUNCH - ${MementoSection} $OPTION_SECTION_SC_QUICK_LAUNCH_SECTION SEC_QUICK_LAUNCH - SectionIn 1 2 - SetDetailsPrint textonly - DetailPrint $OPTION_SECTION_SC_QUICK_LAUNCH_DetailPrint - SetShellVarContext all - SetDetailsPrint listonly - CreateShortCut "$QUICKLAUNCH\${APPLICATION_NAME}.lnk" "$INSTDIR\${APPLICATION_EXECUTABLE}" - SetShellVarContext current - ${MementoSectionEnd} -!endif - -SectionGroupEnd - -${MementoSectionDone} - -; Installer section descriptions -;-------------------------------- -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN -!insertmacro MUI_DESCRIPTION_TEXT ${SEC_APPLICATION} $OPTION_SECTION_SC_APPLICATION_Desc -!insertmacro MUI_DESCRIPTION_TEXT ${SEC_START_MENU} $OPTION_SECTION_SC_START_MENU_Desc -!insertmacro MUI_DESCRIPTION_TEXT ${SEC_DESKTOP} $OPTION_SECTION_SC_DESKTOP_Desc -!insertmacro MUI_DESCRIPTION_TEXT ${SEC_QUICK_LAUNCH} $OPTION_SECTION_SC_QUICK_LAUNCH_Desc -!insertmacro MUI_FUNCTION_DESCRIPTION_END - - -Section -post - - ;Uninstaller file. - SetDetailsPrint textonly - DetailPrint $UNINSTALLER_FILE_Detail - SetDetailsPrint listonly - WriteUninstaller $INSTDIR\uninstall.exe - - ;Registry keys required for installer version handling and uninstaller. - SetDetailsPrint textonly - DetailPrint $UNINSTALLER_REGISTRY_Detail - SetDetailsPrint listonly - - ;Version numbers used to detect existing installation version for comparison. - WriteRegStr HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" $INSTDIR - WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" "${VER_MAJOR}" - WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor" "${VER_MINOR}" - WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision" "${VER_PATCH}" - WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" "${VER_BUILD}" - - ;Add or Remove Programs entry. - WriteRegExpandStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"' - WriteRegExpandStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation" "$INSTDIR" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayName" "${APPLICATION_NAME}" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "Publisher" "${APPLICATION_VENDOR}" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayIcon" "$INSTDIR\Uninstall.exe,0" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "DisplayVersion" "${VERSION}" - WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "VersionMajor" "${VER_MAJOR}" - WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "VersionMinor" "${VER_MINOR}.${VER_PATCH}.${VER_BUILD}" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "URLInfoAbout" "http://${APPLICATION_DOMAIN}/" - WriteRegStr ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "HelpLink" "http://${APPLICATION_DOMAIN}/" - WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "NoModify" "1" - WriteRegDWORD ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "NoRepair" "1" - - - SetDetailsPrint textonly - DetailPrint $UNINSTALLER_FINISHED_Detail -SectionEnd - -############################################################################## -# # -# UNINSTALLER SECTION # -# # -############################################################################## - -Function un.EnsureOwncloudShutdown - !insertmacro CheckAndConfirmEndProcess "${APPLICATION_EXECUTABLE}" -FunctionEnd - -Section Uninstall - IfFileExists "$INSTDIR\${APPLICATION_EXECUTABLE}" owncloud_installed - MessageBox MB_YESNO $UNINSTALL_MESSAGEBOX /SD IDYES IDYES owncloud_installed - Abort $UNINSTALL_ABORT - owncloud_installed: - - ; Delete Navigation Pane entries added for Windows 10. - ; On 64bit Windows, the client will be writing to the 64bit registry. - ${If} ${RunningX64} - SetRegView 64 - ${EndIf} - StrCpy $0 0 - loop: - ; Look at every registered explorer namespace for HKCU and check if it was added by our application - ; (we write to a custom "ApplicationName" value there). - EnumRegKey $1 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace" $0 - StrCmp $1 "" done - - ReadRegStr $R0 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" "ApplicationName" - StrCmp $R0 "${APPLICATION_NAME}" deleteClsid - ; Increment the index when not deleting the enumerated key. - IntOp $0 $0 + 1 - goto loop - - deleteClsid: - DetailPrint "Removing Navigation Pane CLSID $1" - ; Should match FolderMan::updateCloudStorageRegistry - DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$1" - DeleteRegKey HKCU "Software\Classes\CLSID\$1" - DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" $1 - goto loop - done: - ; Go back to the 32bit registry. - SetRegView lastused - - ;Delete registry keys. - DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionBuild" - DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMajor" - DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionMinor" - DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "VersionRevision" - DeleteRegValue HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "" - DeleteRegKey HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" - - DeleteRegKey HKCR "${APPLICATION_NAME}" - - ;Remove file association - !insertmacro APP_UNASSOCIATE "${APPLICATION_VIRTUALFILE_SUFFIX}" "${APPLICATION_VIRTUALFILE_FILECLASS}" - - ;Shell extension - !ifdef OPTION_SECTION_SC_SHELL_EXT - !define LIBRARY_COM - !define LIBRARY_SHELL_EXTENSION - !define LIBRARY_IGNORE_VERSION - ${If} ${HasSection} SEC_SHELL_EXT - DetailPrint "Uninstalling x64 overlay DLLs" - !define LIBRARY_X64 - !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCContextMenu_x64.dll" - !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCOverlays_x64.dll" - !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCUtil_x64.dll" - !undef LIBRARY_X64 - DetailPrint "Uninstalling x86 overlay DLLs" - !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCContextMenu_x86.dll" - !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCOverlays_x86.dll" - !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED "$INSTDIR\shellext\OCUtil_x86.dll" - ${EndIf} - !undef LIBRARY_COM - !undef LIBRARY_SHELL_EXTENSION - !undef LIBRARY_IGNORE_VERSION - !endif - - ;Start menu shortcut - !ifdef OPTION_SECTION_SC_START_MENU - SetShellVarContext all - ${If} ${HasSection} SEC_START_MENU - Delete "$SMPROGRAMS\${APPLICATION_NAME}.lnk" - ${EndIf} - SetShellVarContext current - !endif - - ;Desktop shortcut. - !ifdef OPTION_SECTION_SC_DESKTOP - ${If} ${HasSection} SEC_DESKTOP - SetShellVarContext all - ${If} ${FileExists} "$DESKTOP\${APPLICATION_NAME}.lnk" - Delete "$DESKTOP\${APPLICATION_NAME}.lnk" - ${EndIf} - SetShellVarContext current - ${EndIf} - !endif - - ;Quick Launch shortcut. - !ifdef OPTION_SECTION_SC_QUICK_LAUNCH - ${If} ${HasSection} SEC_QUICK_LAUNCH - SetShellVarContext all - ${If} ${FileExists} "$QUICKLAUNCH\${APPLICATION_NAME}.lnk" - Delete "$QUICKLAUNCH\${APPLICATION_NAME}.lnk" - ${EndIf} - SetShellVarContext current - ${EndIf} - !endif - - ;Remove all the Program Files. - RMDir /r $INSTDIR - - DeleteRegKey ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" - - SetDetailsPrint textonly - DetailPrint $UNINSTALLER_FINISHED_Detail -SectionEnd - -############################################################################## -# # -# NSIS Installer Event Handler Functions # -# # -############################################################################## - -Function .onInit - SetOutPath $INSTDIR - - ${GetParameters} $R0 - ${GetOptions} $R0 "/launch" $R0 - ${IfNot} ${Errors} - StrCpy $InstallRunIfSilent "yes" - ${EndIf} - - ${GetParameters} $R0 - ${GetOptions} $R0 "/noautoupdate" $R0 - ${IfNot} ${Errors} - StrCpy $NoAutomaticUpdates "yes" - ${EndIf} - - - !insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini" - - ; uncomment this line if you want to see the language selection - ;!insertmacro MUI_LANGDLL_DISPLAY - - Call SetLang - - ; Remove Quick Launch option from Windows 7, as no longer applicable - usually. - ${IfNot} ${AtMostWinVista} - SectionSetText ${SEC_QUICK_LAUNCH} $INIT_NO_QUICK_LAUNCH - SectionSetFlags ${SEC_QUICK_LAUNCH} ${SF_RO} - SectionSetInstTypes ${SEC_QUICK_LAUNCH} 0 - ${EndIf} - - ; Some people might have a shortcut called 'ownCloud' pointing elsewhere, see #356 - ; Unselect item and adjust text - ${If} ${FileExists} "$DESKTOP\${APPLICATION_NAME}.lnk" - SectionSetText ${SEC_DESKTOP} $INIT_NO_DESKTOP - Push $0 - SectionSetFlags ${SEC_DESKTOP} 0 - SectionSetInstTypes ${SEC_DESKTOP} 0 - Pop $0 - ${EndIf} - - ${MementoSectionRestore} - - UAC_TryAgain: - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on - ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user - MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0 - ${EndIf} - ;fall-through and die - ${Case} 1223 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN - Quit - ${Case} 1062 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE - Quit - ${Default} - MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" - Abort - Quit - ${EndSwitch} - - ;Prevent multiple instances. - System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Installer") i .r1 ?e' - Pop $R0 - StrCmp $R0 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION $INIT_INSTALLER_RUNNING - Abort - - ;Use available InstallLocation when possible. This is useful in the uninstaller - ;via re-install, which would otherwise use a default location - a bug. - ReadRegStr $R0 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation" - StrCmp $R0 "" SkipSetInstDir - StrCpy $INSTDIR $R0 - SkipSetInstDir: - - ;Shutdown ${APPLICATION_NAME} in case Add/Remove re-installer option used. - Call EnsureOwncloudShutdown - - ReadRegStr $R0 ${MEMENTO_REGISTRY_ROOT} "${MEMENTO_REGISTRY_KEY}" "InstallLocation" - ${If} ${Silent} - ${AndIf} $R0 != "" - ExecWait '"$R0\Uninstall.exe" /S _?=$R0' - ${EndIf} -FunctionEnd - -Function .onInstSuccess - ${MementoSectionSave} - - ${If} $NoAutomaticUpdates == "yes" - WriteRegDWORD HKLM "Software\${APPLICATION_VENDOR}\${APPLICATION_NAME}" "skipUpdateCheck" "1" - ${EndIf} - - ; TODO: Only needed to when updating from 2.1.{0,1}. Remove in due time. - Delete /REBOOTOK $INSTDIR\bearer\qgenericbearer.dll - Delete /REBOOTOK $INSTDIR\bearer\qnativewifibearer.dll - RMDir /REBOOTOK $INSTDIR\bearer - - ${If} ${Silent} - ${AndIf} $InstallRunIfSilent == "yes" - Call LaunchApplication - ${EndIf} -FunctionEnd - -Function .onInstFailed -FunctionEnd - -############################################################################## -# # -# NSIS Uninstaller Event Handler Functions # -# # -############################################################################## - -Function un.onInit - Call un.SetLang - - UAC_TryAgain: - !insertmacro UAC_RunElevated - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on - ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user - MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0 - ${EndIf} - ;fall-through and die - ${Case} 1223 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN - Quit - ${Case} 1062 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE - Quit - ${Default} - MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" - Abort - Quit - ${EndSwitch} - - ;Prevent multiple instances. - System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Uninstaller") i .r1 ?e' - Pop $R0 - StrCmp $R0 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION $INIT_UNINSTALLER_RUNNING - Abort - - ;Shutdown ${APPLICATION_NAME} in order to remove locked files. - Call un.EnsureOwncloudShutdown -FunctionEnd - -Function un.onUnInstSuccess -FunctionEnd - -Function un.onUnInstFailed -FunctionEnd |