Warning, /graphics/digikam/project/bundles/vcpkg/installer/digikam.nsi 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        : 2010-11-08
0007  ; Description : Null Soft Windows Installer based for digiKam.
0008  ;               Note: NSIS >= 3 is required to be compatible with Windows 10.
0009  ;
0010  ; SPDX-FileCopyrightText: 2010      by Julien Narboux <julien at narboux dot fr>
0011  ; SPDX-FileCopyrightText: 2011-2014 by Ananta Palani  <anantapalani at gmail dot com>
0012  ; SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0013  ;
0014  ; Script arguments:
0015  ; VERSION    : the digiKam version                              [string].
0016  ; BUNDLEPATH : the path where whole digiKam bundle is installed [string].
0017  ; DEBUG_SYMB : the bundle includes binary debug symbols (.pdb)  [boolean].
0018  ; OUTPUT     : the output installer file name                   [string].
0019  ;
0020  ; Example: makensis -DVERSION=8.0.0 -DBUNDLEPATH=../bundle -DDEBUG_SYMB digikam.nsi
0021  ;
0022  ; NSIS script reference can be found at this url:
0023  ; https://nsis.sourceforge.net/Docs/Chapter4.html
0024  ;
0025  ; SPDX-License-Identifier: GPL-2.0-or-later
0026  ;
0027  ; ============================================================ ;;
0028 
0029 ;-------------------------------------------------------------------------------
0030 ;Verbose level (no script)
0031 
0032     !verbose 4
0033 
0034 ;-------------------------------------------------------------------------------
0035 ; Compression rules optimizations
0036 ; We will use LZMA compression as 7Zip, with a dictionary size of 96Mb (to reproduce 7Zip Ultra compression mode)
0037 
0038     SetCompress force
0039     SetCompressor /SOLID lzma
0040     SetDatablockOptimize on
0041     SetCompressorDictSize 96
0042 
0043 ;-------------------------------------------------------------------------------
0044 ;Include Modern UI
0045 
0046     ; Turn on UTF-8 strings encoding support.
0047     Unicode true
0048 
0049     ; Add support to hdpi screen. This require NSIS >= 3.x
0050     ManifestDPIAware true
0051 
0052     !include "MUI2.nsh"
0053     !define MY_PRODUCT "digiKam"
0054     !define PRODUCT_HOMEPAGE "https://www.digikam.org"
0055     !define SUPPORT_HOMEPAGE "https://www.digikam.org/support"
0056     !define ABOUT_HOMEPAGE "https://www.digikam.org/about"
0057     !define OUTFILE "${OUTPUT}"
0058 
0059 ;-------------------------------------------------------------------------------
0060 ;General Setup
0061 
0062     ;Name and file
0063 
0064     Name "${MY_PRODUCT} ${VERSION}"
0065     Icon "digikam-installer.ico"
0066     BrandingText "digiKam Project (https://www.digikam.org)"
0067     UninstallIcon "digikam-uninstaller.ico"
0068     OutFile "${OUTFILE}"
0069 
0070     ; Add Installer Windows file properties
0071 
0072     VIProductVersion ${VERSION}.0
0073     VIAddVersionKey /LANG=0 "ProductName"     "${MY_PRODUCT}"
0074     VIAddVersionKey /LANG=0 "ProductVersion"  "${VERSION}"
0075     VIAddVersionKey /LANG=0 "Comments"        "Professional Photo Management with the Power of Open Source"
0076     VIAddVersionKey /LANG=0 "CompanyName"     "digiKam.org"
0077     VIAddVersionKey /LANG=0 "InternalName"    "${MY_PRODUCT}"
0078     VIAddVersionKey /LANG=0 "LegalTrademarks" "https://www.digikam.org"
0079     VIAddVersionKey /LANG=0 "LegalCopyright"  "digiKam developers team"
0080     VIAddVersionKey /LANG=0 "FileDescription" "digiKam Application Installer for Windows"
0081     VIAddVersionKey /LANG=0 "FileVersion"     "${VERSION}"
0082     VIAddVersionKey /LANG=0 "PrivateBuild"    "VCPKG Toolchain"
0083     VIAddVersionKey /LANG=0 "SpecialBuild"    "MSVC Compiler"
0084 
0085     ;Request application privileges for Windows Vista and upper versions
0086 
0087     RequestExecutionLevel admin
0088 
0089     !include x64.nsh
0090 
0091     ;Get installation folder from registry if available
0092 
0093     InstallDirRegKey HKLM "Software\${MY_PRODUCT}" ""
0094 
0095     !include "LogicLib.nsh"
0096     !include "StrFunc.nsh"
0097     ${StrRep}
0098     ${StrStr}
0099     ${StrStrAdv}
0100 
0101     ;Extra local scripts
0102 
0103     !include "process_running.nsh"
0104     !include "reboot_required.nsh"
0105     !include "readme_page.nsh"
0106     !include "events_functions.nsh"
0107 
0108 ;-------------------------------------------------------------------------------
0109 ;Interface Configuration
0110 
0111     !define MUI_HEADERIMAGE
0112     !define MUI_HEADERIMAGE_BITMAP "digikam_header.bmp"
0113     !define MUI_WELCOMEFINISHPAGE_BITMAP "digikam_welcome.bmp"
0114     !define MUI_UNWELCOMEFINISHPAGE_BITMAP "digikam_welcome.bmp"
0115     !define MUI_ABORTWARNING
0116     !define MUI_ICON "digikam-installer.ico"
0117     !define MUI_UNICON "digikam-uninstaller.ico"
0118     !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
0119     !define MUI_FINISHPAGE_SHOWREADME "$instdir\releasenotes.html"
0120     !define MUI_FINISHPAGE_RUN
0121     !define MUI_FINISHPAGE_RUN_NOTCHECKED
0122     !define MUI_FINISHPAGE_RUN_TEXT "Start digiKam"
0123     !define MUI_FINISHPAGE_RUN_FUNCTION functionFinishRun
0124     !define MUI_FINISHPAGE_LINK "Visit digiKam project website"
0125     !define MUI_FINISHPAGE_LINK_LOCATION "https://www.digikam.org"
0126 
0127 ;-------------------------------------------------------------------------------
0128 ;Page Definitions
0129 
0130     ;Variable for the folder of the start menu
0131 
0132     Var StartMenuFolder
0133 
0134     !insertmacro MUI_PAGE_WELCOME
0135     !insertmacro MUI_PAGE_README "ABOUT.txt"
0136     !insertmacro MUI_PAGE_LICENSE "GPL.txt"
0137     !define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave
0138     !insertmacro MUI_PAGE_DIRECTORY
0139 
0140     ;Start Menu Folder Page Configuration
0141 
0142     !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
0143     !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${MY_PRODUCT}"
0144     !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
0145     !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
0146 
0147     !insertmacro MUI_PAGE_INSTFILES
0148     !insertmacro MUI_PAGE_FINISH
0149     !insertmacro MUI_UNPAGE_WELCOME
0150     !insertmacro MUI_UNPAGE_CONFIRM
0151     !insertmacro MUI_UNPAGE_INSTFILES
0152 
0153 ;-------------------------------------------------------------------------------
0154 ;Languages List
0155 
0156     !insertmacro MUI_LANGUAGE "English"
0157     !insertmacro MUI_LANGUAGE "French"
0158     !insertmacro MUI_LANGUAGE "German"
0159     !insertmacro MUI_LANGUAGE "Spanish"
0160     !insertmacro MUI_LANGUAGE "SpanishInternational"
0161     !insertmacro MUI_LANGUAGE "SimpChinese"
0162     !insertmacro MUI_LANGUAGE "TradChinese"
0163     !insertmacro MUI_LANGUAGE "Japanese"
0164     !insertmacro MUI_LANGUAGE "Korean"
0165     !insertmacro MUI_LANGUAGE "Italian"
0166     !insertmacro MUI_LANGUAGE "Dutch"
0167     !insertmacro MUI_LANGUAGE "Danish"
0168     !insertmacro MUI_LANGUAGE "Swedish"
0169     !insertmacro MUI_LANGUAGE "Norwegian"
0170     !insertmacro MUI_LANGUAGE "NorwegianNynorsk"
0171     !insertmacro MUI_LANGUAGE "Finnish"
0172     !insertmacro MUI_LANGUAGE "Greek"
0173     !insertmacro MUI_LANGUAGE "Russian"
0174     !insertmacro MUI_LANGUAGE "Portuguese"
0175     !insertmacro MUI_LANGUAGE "PortugueseBR"
0176     !insertmacro MUI_LANGUAGE "Polish"
0177     !insertmacro MUI_LANGUAGE "Ukrainian"
0178     !insertmacro MUI_LANGUAGE "Czech"
0179     !insertmacro MUI_LANGUAGE "Slovak"
0180     !insertmacro MUI_LANGUAGE "Croatian"
0181     !insertmacro MUI_LANGUAGE "Bulgarian"
0182     !insertmacro MUI_LANGUAGE "Hungarian"
0183     !insertmacro MUI_LANGUAGE "Thai"
0184     !insertmacro MUI_LANGUAGE "Romanian"
0185     !insertmacro MUI_LANGUAGE "Latvian"
0186     !insertmacro MUI_LANGUAGE "Macedonian"
0187     !insertmacro MUI_LANGUAGE "Estonian"
0188     !insertmacro MUI_LANGUAGE "Turkish"
0189     !insertmacro MUI_LANGUAGE "Lithuanian"
0190     !insertmacro MUI_LANGUAGE "Slovenian"
0191     !insertmacro MUI_LANGUAGE "Serbian"
0192     !insertmacro MUI_LANGUAGE "SerbianLatin"
0193     !insertmacro MUI_LANGUAGE "Arabic"
0194     !insertmacro MUI_LANGUAGE "Farsi"
0195     !insertmacro MUI_LANGUAGE "Hebrew"
0196     !insertmacro MUI_LANGUAGE "Indonesian"
0197     !insertmacro MUI_LANGUAGE "Mongolian"
0198     !insertmacro MUI_LANGUAGE "Luxembourgish"
0199     !insertmacro MUI_LANGUAGE "Albanian"
0200     !insertmacro MUI_LANGUAGE "Breton"
0201     !insertmacro MUI_LANGUAGE "Belarusian"
0202     !insertmacro MUI_LANGUAGE "Icelandic"
0203     !insertmacro MUI_LANGUAGE "Malay"
0204     !insertmacro MUI_LANGUAGE "Bosnian"
0205     !insertmacro MUI_LANGUAGE "Kurdish"
0206     !insertmacro MUI_LANGUAGE "Irish"
0207     !insertmacro MUI_LANGUAGE "Uzbek"
0208     !insertmacro MUI_LANGUAGE "Galician"
0209     !insertmacro MUI_LANGUAGE "Afrikaans"
0210     !insertmacro MUI_LANGUAGE "Catalan"
0211     !insertmacro MUI_LANGUAGE "Esperanto"
0212 
0213 ;-------------------------------------------------------------------------------
0214 ;Installer Sections
0215 
0216     Section "digiKam" SecDigiKam
0217 
0218         ;Check running processes prior to install
0219 
0220         Call CheckDigikamRunning
0221         Call CheckShowfotoRunning
0222 
0223         ;See bug #437813: be sure that all background sub-process are done
0224 
0225         nsExec::ExecToLog /TIMEOUT=2000 'taskkill.exe /F /T /IM exiftool.exe'
0226         nsExec::ExecToLog /TIMEOUT=2000 'taskkill.exe /F /T /IM QtWebEngineProcess.exe'
0227 
0228         SetOutPath "$INSTDIR"
0229 
0230         File "..\data\releasenotes.html"
0231         File "digikam-uninstaller.ico"
0232 
0233         ;Copy only required directories
0234         ;The SetOutPath is required because otherwise NSIS will assume all files are
0235         ;in the same folder even though they are sourced from different folders
0236         ;The \*.* is required for File /r because without it, NSIS would add every
0237         ;folder with the name 'bin' in all subdirectories of ${BUNDLEPATH}
0238 
0239         SetOutPath "$INSTDIR\"
0240         File "${BUNDLEPATH}\*.exe"
0241         File "${BUNDLEPATH}\*.conf"
0242         File "${BUNDLEPATH}\*.rcc"
0243         File "${BUNDLEPATH}\*.dll"
0244         File "${BUNDLEPATH}\*.txt"
0245 
0246         !ifdef DEBUG_SYMB
0247             File "${BUNDLEPATH}\*.pdb"
0248         !endif
0249 
0250         SetOutPath "$INSTDIR\data"
0251         File /r "${BUNDLEPATH}\data\*.*"
0252 
0253         SetOutPath "$INSTDIR\share"
0254         File /r "${BUNDLEPATH}\share\*.*"
0255 
0256         SetOutPath "$INSTDIR\plugins"
0257         File /r "${BUNDLEPATH}\plugins\*.*"
0258 
0259         SetOutPath "$INSTDIR\resources"
0260         File /r "${BUNDLEPATH}\resources\*.*"
0261 
0262         SetOutPath "$INSTDIR\translations"
0263         File /r "${BUNDLEPATH}\translations\*.*"
0264 
0265         ;Store installation folder
0266 
0267         WriteRegStr HKLM "Software\${MY_PRODUCT}" "" $INSTDIR
0268 
0269         ;Create uninstaller
0270 
0271         WriteUninstaller "$INSTDIR\Uninstall.exe"
0272 
0273         ;Register uninstaller in windows registry with only the option to uninstall (no repair nor modify)
0274 
0275         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "Comments" "${MY_PRODUCT} ${VERSION}"
0276         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "DisplayIcon" '"$INSTDIR\digikam.exe"'
0277         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "DisplayName" "${MY_PRODUCT} ${VERSION}"
0278         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "DisplayVersion" "${VERSION}"
0279         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "HelpLink" "${SUPPORT_HOMEPAGE}"
0280         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "InstallLocation" "$INSTDIR"
0281         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "Publisher" "The digiKam team"
0282         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "Readme" '"$INSTDIR\releasenotes.html"'
0283         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
0284         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "URLInfoAbout" "${ABOUT_HOMEPAGE}"
0285         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "URLUpdateInfo" "${PRODUCT_HOMEPAGE}"
0286 
0287         ;Calculate the install size so that it can be shown in the uninstall interface in Windows
0288         ;see http://nsis.sourceforge.net/Add_uninstall_information_to_Add/Remove_Programs
0289         ;this isn't the most accurate method but it is very fast and is accurate enough for an estimate
0290 
0291         push $0
0292         SectionGetSize ${SecDigiKam} $0
0293         WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "EstimatedSize" "$0"
0294         pop $0
0295 
0296         WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "NoModify" "1"
0297         WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}" "NoRepair" "1"
0298 
0299         ;Add start menu items to All Users
0300 
0301         SetShellVarContext all
0302         !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
0303 
0304         ;Create shortcuts
0305 
0306         CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
0307         CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${MY_PRODUCT}.lnk" "$INSTDIR\digikam.exe"
0308         CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Showfoto.lnk" "$INSTDIR\showfoto.exe"
0309 
0310         WriteINIStr "$SMPROGRAMS\$StartMenuFolder\The ${MY_PRODUCT} HomePage.url" "InternetShortcut" "URL" "${PRODUCT_HOMEPAGE}"
0311         WriteINIStr "$SMPROGRAMS\$StartMenuFolder\The ${MY_PRODUCT} HomePage.url" "InternetShortcut" "IconIndex" "12"
0312         WriteINIStr "$SMPROGRAMS\$StartMenuFolder\The ${MY_PRODUCT} HomePage.url" "InternetShortcut" "IconFile" "$windir\explorer.exe"
0313 
0314         !insertmacro MUI_STARTMENU_WRITE_END
0315 
0316     SectionEnd
0317 
0318 ;-------------------------------------------------------------------------------
0319 ;Uninstaller Section
0320 
0321     Section "Uninstall"
0322 
0323         ;Check running processes prior to uninstall
0324 
0325         Call un.CheckDigikamRunning
0326         Call un.CheckShowfotoRunning
0327 
0328         ;See bug #437813: be sure that all background sub-process are done
0329 
0330         nsExec::ExecToLog /TIMEOUT=2000 'taskkill.exe /F /T /IM exiftool.exe'
0331         nsExec::ExecToLog /TIMEOUT=2000 'taskkill.exe /F /T /IM QtWebEngineProcess.exe'
0332 
0333         Delete "$INSTDIR\*.exe"
0334         Delete "$INSTDIR\*.conf"
0335         Delete "$INSTDIR\*.rcc"
0336         Delete "$INSTDIR\*.dll"
0337         Delete "$INSTDIR\*.txt"
0338 
0339         !ifdef DEBUG_SYMB
0340             Delete "$INSTDIR\*.pdb"
0341         !endif
0342 
0343         Delete "$INSTDIR\Uninstall.exe"
0344         Delete "$INSTDIR\releasenotes.html"
0345         Delete "$INSTDIR\digikam-uninstaller.ico"
0346 
0347         RMDir /r "$INSTDIR\data"
0348         RMDir /r "$INSTDIR\share"
0349         RMDir /r "$INSTDIR\plugins"
0350         RMDir /r "$INSTDIR\resources"
0351         RMDir /r "$INSTDIR\translations"
0352 
0353         ;MXE Legacy
0354         Delete "$INSTDIR\*.yes"
0355         RMDir /r "$INSTDIR\etc"
0356         RMDir /r "$INSTDIR\bin"
0357         RMDir /r "$INSTDIR\libgphoto2"
0358         RMDir /r "$INSTDIR\libgphoto2_port"
0359 
0360         ;Do not do a recursive removal of $INSTDIR because user may have accidentally installed into system critical directory!
0361 
0362         RMDir "$INSTDIR"
0363 
0364         ;Remove start menu items
0365 
0366         SetShellVarContext all
0367         !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
0368 
0369         Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
0370         Delete "$SMPROGRAMS\$StartMenuFolder\${MY_PRODUCT}.lnk"
0371         Delete "$SMPROGRAMS\$StartMenuFolder\Showfoto.lnk"
0372         Delete "$SMPROGRAMS\$StartMenuFolder\The ${MY_PRODUCT} HomePage.url"
0373 
0374         RMDir "$SMPROGRAMS\$StartMenuFolder"
0375 
0376         ;Remove registry entries
0377 
0378         DeleteRegValue HKLM "Software\${MY_PRODUCT}" ""
0379         DeleteRegValue HKLM "Software\${MY_PRODUCT}" "Start Menu Folder"
0380         DeleteRegKey /ifempty HKLM "Software\${MY_PRODUCT}"
0381         DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MY_PRODUCT}"
0382 
0383     SectionEnd