aboutsummaryrefslogtreecommitdiff
path: root/ci/fpm-installer.nsi
blob: 0c0243b555c7fddf4200b557e9623a3274d7b979 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
; NSIS Installer script for the Fortran Package Manager

; ---------------- Properties ----------------
; Name used in installer GUI
Name "Fortran Package Manager"

; Name for folder location and reg key
!define INSTALL_NAME "fortran-lang"

; Installer icon
!define MUI_ICON "installer-icon.ico"

; Compress installer
SetCompress auto

; Always produce unicode installer
Unicode true

; ---------------- Setup ----------------
; Use EnVar plugin (https://nsis.sourceforge.io/EnVar_plug-in)
!addplugindir ".\EnVar_plugin\Plugins\x86-unicode"

; Use the 'Modern' Installer UI macros
!include "MUI2.nsh"

; Default installation folder (local)
InstallDir "$LOCALAPPDATA\${INSTALL_NAME}"
  
; Get installation folder from registry if available
InstallDirRegKey HKCU "Software\${INSTALL_NAME}" ""

; Request application privileges
RequestExecutionLevel user


; ---------------- Installer Pages ----------------
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES


; ---------------- Uninstaller Pages ----------------
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

  
; MUI Language
!insertmacro MUI_LANGUAGE "English"


; ---------------- Component: Core Installation ----------------
Section "-Core" SecCore

  SetOutPath "$INSTDIR"

  ; Store installation folder
  WriteRegStr HKCU "Software\${INSTALL_NAME}" "" $INSTDIR
  
  ; Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"

  ; Add to path
  EnVar::SetHKCU
  EnVar::AddValue "PATH" "$INSTDIR\fpm"
  EnVar::AddValue "PATH" "$INSTDIR\MinGit\mingw64\bin"

SectionEnd


; ---------------- Component: fpm ----------------
Section "FPM" SecFPM

  SetOutPath "$INSTDIR\fpm"
  
  File "fpm.exe"

SectionEnd


; ---------------- Component: Git ----------------
Section "Git for Windows" SecGit

  SetOutPath "$INSTDIR"
  
  File /r "MinGit"

SectionEnd


; ---------------- Uninstaller ----------------
Section "Uninstall"

  RMDir /r "$INSTDIR"

  DeleteRegKey /ifempty HKCU "Software\${INSTALL_NAME}"

  EnVar::SetHKCU
  EnVar::DeleteValue "PATH" "$INSTDIR\fpm"
  EnVar::DeleteValue "PATH" "$INSTDIR\MinGit\mingw64\bin"

SectionEnd


; ---------------- Component description Strings (EN) ----------------
LangString DESC_SecFPM ${LANG_ENGLISH} "The Fortran Package Manager"
LangString DESC_SecGit ${LANG_ENGLISH} "Git version control (required for FPM)"


!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SecFPM} $(DESC_SecFPM)
  !insertmacro MUI_DESCRIPTION_TEXT ${SecGit} $(DESC_SecGit)
!insertmacro MUI_FUNCTION_DESCRIPTION_END