Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / altosui / altos-windows.nsi
1 !addplugindir Instdrv/NSIS/Plugins
2 ; Definitions for Java 1.6 Detection
3 !define JRE_VERSION "1.6"
4 !define JRE_ALTERNATE "1.7"
5 !define JRE_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=52247&/jre-6u27-windows-i586-p.exe"
6 !define PRODUCT_NAME "Altus Metrum Windows Software"
7
8 Name "Altus Metrum Installer"
9
10 ; Default install directory
11 InstallDir "$PROGRAMFILES\AltusMetrum"
12
13 ; Tell the installer where to re-install a new version
14 InstallDirRegKey HKLM "Software\AltusMetrum" "Install_Dir"
15
16 LicenseText "GNU General Public License Version 2"
17 LicenseData "../COPYING"
18
19 ; Need admin privs for Vista or Win7
20 RequestExecutionLevel admin
21
22 ShowInstDetails Show
23
24 ComponentText "Altus Metrum Software and Driver Installer"
25
26 Function GetJRE
27         MessageBox MB_OK "${PRODUCT_NAME} uses Java ${JRE_VERSION} 32-bit, it will now \
28                          be downloaded and installed"
29
30         StrCpy $2 "$TEMP\Java Runtime Environment.exe"
31         nsisdl::download /TIMEOUT=30000 ${JRE_URL} $2
32         Pop $R0 ;Get the return value
33                 StrCmp $R0 "success" +3
34                 MessageBox MB_OK "Download failed: $R0"
35                 Quit
36         ExecWait $2
37         Delete $2
38 FunctionEnd
39
40
41 Function DetectJRE
42   ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \
43              "CurrentVersion"
44   StrCmp $2 ${JRE_VERSION} done
45
46   StrCmp $2 ${JRE_ALTERNATE} done
47
48   Call GetJRE
49
50   done:
51 FunctionEnd
52
53 ; Pages to present
54
55 Page license
56 Page components
57 Page directory
58 Page instfiles
59
60 UninstPage uninstConfirm
61 UninstPage instfiles
62
63 ; And the stuff to install
64
65 Section "Install Driver" InstDriver
66
67         InstDrv::InitDriverSetup /NOUNLOAD {4D36E96D-E325-11CE-BFC1-08002BE10318} AltusMetrumSerial
68         Pop $0
69         DetailPrint "InitDriverSetup: $0"
70         InstDrv::DeleteOemInfFiles /NOUNLOAD
71         InstDrv::CreateDevice /NOUNLOAD
72
73         SetOutPath $TEMP
74         File "../telemetrum.inf"
75         InstDrv::InstallDriver /NOUNLOAD "$TEMP\telemetrum.inf"
76
77         SetOutPath $INSTDIR
78         File "../telemetrum.inf"
79
80         SetOutPath $WINDIR\Inf
81         File "../telemetrum.inf"
82
83 SectionEnd
84
85 Section "AltosUI Application"
86         Call DetectJRE
87
88         SetOutPath $INSTDIR
89
90         File "altosui-fat.jar"
91         File "AltosLib.jar"
92         File "cmudict04.jar"
93         File "cmulex.jar"
94         File "cmu_time_awb.jar"
95         File "cmutimelex.jar"
96         File "cmu_us_kal.jar"
97         File "en_us.jar"
98         File "freetts.jar"
99         File "jfreechart.jar"
100         File "jcommon.jar"
101
102         File "*.dll"
103
104         File "../icon/*.ico"
105
106         CreateShortCut "$SMPROGRAMS\AltusMetrum.lnk" "$SYSDIR\javaw.exe" "-jar altosui-fat.jar" "$INSTDIR\altus-metrum.ico"
107 SectionEnd
108
109 Section "AltosUI Desktop Shortcut"
110         CreateShortCut "$DESKTOP\AltusMetrum.lnk" "$INSTDIR\altosui-fat.jar"  "" "$INSTDIR\altus-metrum.ico"
111 SectionEnd
112
113 Section "TeleMetrum and TeleDongle Firmware"
114
115         SetOutPath $INSTDIR
116
117         File "../src/telemetrum-v1.0/telemetrum-v1.0-${VERSION}.ihx"
118         File "../src/telemetrum-v1.1/telemetrum-v1.1-${VERSION}.ihx"
119         File "../src/telemetrum-v1.2/telemetrum-v1.2-${VERSION}.ihx"
120         File "../src/telemini-v1.0/telemini-v1.0-${VERSION}.ihx"
121         File "../src/teledongle-v0.2/teledongle-v0.2-${VERSION}.ihx"
122
123 SectionEnd
124
125 Section "Documentation"
126
127         SetOutPath $INSTDIR
128
129         File "../doc/altusmetrum.pdf"
130         File "../doc/altos.pdf"
131         File "../doc/telemetry.pdf"
132         File "../doc/telemetrum-outline.pdf"
133         File "../doc/megametrum-outline.pdf"
134 SectionEnd
135
136 Section "Uninstaller"
137
138         ; Deal with the uninstaller
139
140         SetOutPath $INSTDIR
141
142         ; Write the install path to the registry
143         WriteRegStr HKLM SOFTWARE\AltusMetrum "Install_Dir" "$INSTDIR"
144
145         ; Write the uninstall keys for windows
146         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "DisplayName" "Altus Metrum"
147         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "UninstallString" '"$INSTDIR\uninstall.exe"'
148         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "NoModify" "1"
149         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "NoRepair" "1"
150
151         WriteUninstaller "uninstall.exe"
152 SectionEnd
153
154 Section "Uninstall"
155         DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum"
156         DeleteRegKey HKLM "Software\AltusMetrum"
157
158         Delete "$INSTDIR\*.*"
159         RMDir "$INSTDIR"
160
161         ; Remove .inf file
162         Delete "$WINDIR\Inf\telemetrum.inf"
163
164         ; Remove devices
165         InstDrv::InitDriverSetup /NOUNLOAD {4D36E96D-E325-11CE-BFC1-08002BE10318} AltusMetrumSerial
166         InstDrv::DeleteOemInfFiles /NOUNLOAD
167         InstDrv::RemoveAllDevices
168
169         ; Remove shortcuts, if any
170         Delete "$SMPROGRAMS\AltusMetrum.lnk"
171         Delete "$DESKTOP\AltusMetrum.lnk"
172         
173 SectionEnd