Warning, /graphics/digikam/project/bundles/vcpkg/installer/events_functions.nsh is written in an unsupported language. File is not indexed.
0001 ;; ============================================================
0002 ;
0003 ; This file is a part of digiKam project
0004 ; https://www.digikam.org
0005 ;
0006 ; Date : 2005-01-01
0007 ; Description : Functions to catch NSIS events.
0008 ; Note: NSIS >= 3 is required to be compatible with Windows 10.
0009 ;
0010 ; SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0011 ;
0012 ; SPDX-License-Identifier: GPL-2.0-or-later
0013 ;
0014 ; ============================================================ ;;
0015
0016 !ifndef EVENTS_FUNCTIONS_INCLUDED
0017 !define EVENTS_FUNCTIONS_INCLUDED
0018
0019 Function .onInit
0020
0021 ;Do not permit to install 64 bits to 32 bits.
0022
0023 ${IfNot} ${RunningX64}
0024
0025 MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "This is the 64 bits installer, and it cannot be installed to a 32 bits system."
0026 SetErrorLevel 2
0027 Quit
0028
0029 ${EndIf}
0030
0031 ;Default installation folder depending of target architecture.
0032
0033 ${If} $InstDir == "" ; Don't override setup.exe /D=c:\custom\dir
0034 StrCpy $InstDir "$PROGRAMFILES64\${MY_PRODUCT}"
0035 ${EndIf}
0036
0037 Push $0
0038 UserInfo::GetAccountType
0039 Pop $0
0040
0041 ${If} $0 != "admin"
0042
0043 ;Require admin rights on NT4+
0044
0045 MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "Administrator privileges required!$\r$\n$\r$\nPlease restart the installer using an administrator account."
0046 SetErrorLevel 740 ; ERROR_ELEVATION_REQUIRED
0047 Quit
0048
0049 ${EndIf}
0050
0051 Pop $0
0052
0053 Push $R0
0054 Push $R1
0055 Push $R2
0056
0057 checkUninstallRequired:
0058
0059 ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "UninstallString"
0060 ${StrRep} $R0 $R0 '"' "" ; Remove double-quotes so Delete and RMDir work properly and we can extract the path
0061 StrCmp $R0 "" done
0062
0063 ${IfNot} ${FileExists} $R0
0064
0065 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}"
0066 Goto checkUninstallRequired
0067
0068 ${EndIf}
0069
0070 ;Get path
0071
0072 ${StrStrAdv} $R1 $R0 "\" "<" "<" "0" "0" "0"
0073
0074 ReadRegStr $R2 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "DisplayName" ; DisplayName contains version
0075
0076 ;TODO: need to internationalize string (see VLC / clementine / etc)
0077
0078 MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND "$R2 is currently installed but only a single instance of ${MY_PRODUCT} can be installed at any time.$\r$\n$\r$\n\
0079 Note: only the application binary files will be removed from your system at this stage. Your collections and database files kept untouched.$\r$\n$\r$\n\
0080 Important: database schemas can be upgraded between major releases, so it's recommended to backup all database files before to start a new digiKam session after this install.$\r$\n$\r$\n\
0081 Do you want to uninstall the current instance of ${MY_PRODUCT} and continue installing ${MY_PRODUCT} ${VERSION}?" /SD IDYES IDNO noInstall
0082
0083 ;Run the uninstaller
0084
0085 ClearErrors
0086
0087 IfSilent 0 notSilent
0088
0089 ExecWait '"$R0" /S _?=$R1' ; Do not copy the uninstaller to a temp file
0090 Goto uninstDone
0091
0092 notSilent:
0093
0094 ExecWait '"$R0" _?=$R1' ; Do not copy the uninstaller to a temp file
0095
0096 uninstDone:
0097
0098 IfErrors checkUninstallRequired
0099 Delete "$R0" ; If uninstall successful, remove uninstaller
0100 RMDir "$R1" ; remove previous install directory
0101 Goto checkUninstallRequired
0102
0103 noInstall:
0104 Abort
0105
0106 done:
0107 Pop $R2
0108 Pop $R1
0109 Pop $R0
0110
0111 FunctionEnd
0112
0113 ;-------------------------------------------
0114
0115 Function .onInstSuccess
0116
0117 nsExec::ExecToLog /TIMEOUT=2000 '"$instdir\kbuildsycoca6.exe --noincremental"'
0118
0119 FunctionEnd
0120
0121 ;-------------------------------------------------------------------------------------
0122
0123 Function functionFinishRun
0124
0125 ; Execute the file with non-elevated rights.
0126
0127 Exec '"$WINDIR\explorer.exe" "$instdir\digikam.exe"'
0128
0129 FunctionEnd
0130
0131 !endif ;EVENTS_FUNCTIONS_INCLUDED