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