-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathathen.nsi
153 lines (134 loc) · 5.72 KB
/
athen.nsi
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "ATHEN"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "Ian Haywood"
!define PRODUCT_WEB_SITE "http://haywood.id.au/athen"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
SetCompressor lzma
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "C:\ATHEN\gpl.txt"
; Start menu page
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "ATHEN"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\ATHEN"
ShowInstDetails show
ShowUnInstDetails show
Section "Install" SEC01
; Shortcuts
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
readRegStr $0 HKLM "SOFTWARE\GNU\GNUPG" gpgProgram
strCmp $0 '' 0 endGpg
; ok no GnuPG installed
NSISdl::download /NOIEPROXY "http://cryptophane.googlecode.com/files/cryptophane-0.7.0-gnupg-1.4.2.exe" "cryptophane.exe"
Pop $3
StrCmp $3 'success' 0 errorDownload
StrCpy $0 ''
ExecWait '"cryptophane.exe" \silent \sp-' $0
StrCmp $0 '' deleteGpg
MessageBox MB_OK "Cryptophane install failed with code $0. Please install Cryptophane manually now before proceeding"
Quit
deleteGpg:
Delete "cryptophane.exe"
endGpg:
; read the registry to check if there is not already a local installation of ruby
readRegStr $0 HKLM "SOFTWARE\RubyInstaller\MRI\1.9.2" InstallLocation
StrCmp $0 '' 0 endRuby
; download and install ruby
NSISdl::download /NOIEPROXY "http://rubyforge.org/frs/download.php/75127/rubyinstaller-1.9.2-p290.exe" "rubyinstaller-1.9.2.exe"
Pop $3
StrCmp $3 'success' 0 errorDownload
; ruby download successful
StrCpy $0 ''
; run the one click installer
ExecWait '"rubyinstaller-1.9.2.exe" /silent /sp- /tasks=assocfiles' $0
StrCmp $0 '' deleteRuby
; execution of one click installer failed
MessageBox MB_OK "Ruby install failed with code $0. Please install Ruby manually now before proceeding"
deleteRuby:
Delete "rubyinstaller-1.9.2.exe"
readRegStr $0 HKLM "SOFTWARE\RubyInstaller\MRI\1.9.2" InstallLocation
endRuby:
StrCpy $1 ''
ExecWait '"$0\bin\gem.bat" fxruby athen -r --no-ri --no-rdoc' $1
StrCmp $1 '' 0 gemError
ExecWait '"$0\bin\rubyw.exe" -rathen -e "Athen::Installer.new.run"' $1
StrCmp $1 '' endInstall
MessageBox MB_OK "Ruby Install Wizard failed with code $1. Please report to developers"
Quit
gemError:
MessageBox MB_OK "Gem install failed with code $1, please report to the developers"
Quit
errorDownload:
MessageBox MB_OK "Internet download failed: $3"
Quit
endInstall:
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
Section -AdditionalIcons
SetOutPath $INSTDIR
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
readRegStr $0 HKLM "SOFTWARE\RubyInstaller\MRI\1.9.2" InstallLocation
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Athen.lnk" "$0\bin\rubyw.exe" "-rathen -e 'Athen::MainWindow.new'"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "ATHEN was successfully removed from your computer."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove ATHEN and all of its components?" IDYES +2
Abort
FunctionEnd
Section Uninstall
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
Delete "$SMPROGRAMS\$ICONS_GROUP\Athen.lnk"
RMDir "$SMPROGRAMS\$ICONS_GROUP"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd