altosui: Deal with 64-bit windows
[fw/altos] / altosui / altos-windows.nsi.in
1 !addplugindir 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 "Altus Metrum Windows Software"
9
10 Name "Altus Metrum 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 "Altus Metrum Software and Driver 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 "AltosUI Application"
110         Call DetectJRE
111
112         SetOutPath $INSTDIR
113
114         File "altosui-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\AltusMetrum.lnk" "$SYSDIR\javaw.exe" "-jar altosui-fat.jar" "$INSTDIR\altus-metrum.ico"
132 SectionEnd
133
134 Section "AltosUI Desktop Shortcut"
135         CreateShortCut "$DESKTOP\AltusMetrum.lnk" "$INSTDIR\altosui-fat.jar"  "" "$INSTDIR\altus-metrum.ico"
136 SectionEnd
137
138 Section "TeleMetrum, TeleDongle and TeleBT Firmware"
139
140         SetOutPath $INSTDIR
141
142         File "../src/telemetrum-v1.0/telemetrum-v1.0-${VERSION}.ihx"
143         File "../src/telemetrum-v1.1/telemetrum-v1.1-${VERSION}.ihx"
144         File "../src/telemetrum-v1.2/telemetrum-v1.2-${VERSION}.ihx"
145         File "../src/telemini-v1.0/telemini-v1.0-${VERSION}.ihx"
146         File "../src/teledongle-v0.2/teledongle-v0.2-${VERSION}.ihx"
147         File "../src/telebt-v1.0/telebt-v1.0-${VERSION}.ihx"
148         File "../src/telemega-v1.0/telemega-v1.0-${VERSION}.ihx"
149         File "../src/easymini-v1.0/easymini-v1.0-${VERSION}.ihx"
150
151 SectionEnd
152
153 Section "Documentation"
154
155         SetOutPath $INSTDIR
156
157         File "../doc/altusmetrum.pdf"
158         File "../doc/altos.pdf"
159         File "../doc/telemetry.pdf"
160         File "../doc/telemetrum-outline.pdf"
161         File "../doc/telemega-outline.pdf"
162         File "../doc/easymini-outline.pdf"
163         File "../doc/telemini.pdf"
164 SectionEnd
165
166 Section "Uninstaller"
167
168         ; Deal with the uninstaller
169
170         SetOutPath $INSTDIR
171
172         ; Write the install path to the registry
173         WriteRegStr HKLM SOFTWARE\AltusMetrum "Install_Dir" "$INSTDIR"
174
175         ; Write the uninstall keys for windows
176         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "DisplayName" "Altus Metrum"
177         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "UninstallString" '"$INSTDIR\uninstall.exe"'
178         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "NoModify" "1"
179         WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum" "NoRepair" "1"
180
181         WriteUninstaller "uninstall.exe"
182 SectionEnd
183
184 Section "Uninstall"
185         DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\AltusMetrum"
186         DeleteRegKey HKLM "Software\AltusMetrum"
187
188         Delete "$INSTDIR\*.*"
189         RMDir "$INSTDIR"
190
191         ; Remove devices
192         InstDrv::InitDriverSetup /NOUNLOAD {4D36E96D-E325-11CE-BFC1-08002BE10318} AltusMetrumSerial
193         InstDrv::DeleteOemInfFiles /NOUNLOAD
194         InstDrv::RemoveAllDevices
195
196         ; Remove shortcuts, if any
197         Delete "$SMPROGRAMS\AltusMetrum.lnk"
198         Delete "$DESKTOP\AltusMetrum.lnk"
199         
200 SectionEnd