first cut at turnon scripts for EasyTimer v2
[fw/altos] / altosui / altos-windows.nsi.in
1 !addplugindir Instdrv/NSIS/Plugins
2 !addincludedir Instdrv/NSIS/Includes
3 !include x64.nsh
4 !include java.nsh
5 !include refresh-sh.nsh
6
7 !define REG_NAME        "Altus Metrum"
8 !define PROG_ID_TELEM   "altusmetrum.altosui.telem.1"
9 !define PROG_ID_EEPROM  "altusmetrum.altosui.eeprom.1"
10 !define FAT_NAME        "altosui-fat.jar"
11 !define WIN_APP_ICON    "altusmetrum-altosui.ico"
12 !define WIN_APP_EXE     "altusmetrum-altosui.exe"
13 !define WIN_TELEM_EXE   "application-vnd.altusmetrum.telemetry.exe"
14 !define WIN_EEPROM_EXE  "application-vnd.altusmetrum.eeprom.exe"
15
16 Name "${REG_NAME} Installer"
17
18 ; Default install directory
19 InstallDir "$PROGRAMFILES\AltusMetrum"
20
21 ; Tell the installer where to re-install a new version
22 InstallDirRegKey HKLM "Software\${REG_NAME}" "Install_Dir"
23
24 LicenseText "GNU General Public License Version 2"
25 LicenseData "../COPYING"
26
27 ; Need admin privs for Vista or Win7
28 RequestExecutionLevel admin
29
30 ShowInstDetails Show
31
32 ComponentText "${REG_NAME} Software and Driver Installer"
33
34 Function .onInit
35         DetailPrint "Checking host operating system"
36         ${If} ${RunningX64}
37                 DetailPrint "Installer running on 64-bit host"
38                 SetRegView 64
39                 StrCpy $INSTDIR "$PROGRAMFILES64\AltusMetrum"
40                 ${DisableX64FSRedirection}
41         ${EndIf}
42 FunctionEnd
43
44 Function un.onInit
45         DetailPrint "Checking host operating system"
46         ${If} ${RunningX64}
47                 DetailPrint "Installer running on 64-bit host"
48                 SetRegView 64
49                 StrCpy $INSTDIR "$PROGRAMFILES64\AltusMetrum"
50                 ${DisableX64FSRedirection}
51         ${EndIf}
52 FunctionEnd
53
54 ; Pages to present
55
56 Page license
57 Page components
58 Page directory
59 Page instfiles
60
61 UninstPage uninstConfirm
62 UninstPage instfiles
63
64 ; And the stuff to install
65
66 Section "Install Driver" InstDriver
67
68         InstDrv::InitDriverSetup /NOUNLOAD {4D36E96D-E325-11CE-BFC1-08002BE10318} AltusMetrumSerial
69         Pop $0
70         DetailPrint "InitDriverSetup: $0"
71         InstDrv::DeleteOemInfFiles /NOUNLOAD
72         InstDrv::CreateDevice /NOUNLOAD
73
74         SetOutPath $INSTDIR
75         File "../altusmetrum.inf"
76         File "../altusmetrum.cat"
77
78         ${DisableX64FSRedirection}
79         IfFileExists $WINDIR\System32\PnPutil.exe 0 nopnp
80                 ${DisableX64FSRedirection}
81                 nsExec::ExecToLog '"$WINDIR\System32\PnPutil.exe" -i -a "$INSTDIR\altusmetrum.inf"'
82                 Goto done
83 nopnp:
84                 InstDrv::InstallDriver /NOUNLOAD "$INSTDIR\altusmetrum.inf"
85 done:
86
87 SectionEnd
88
89 Section "${REG_NAME} Application"
90         Call DetectJRE
91
92         SetOutPath $INSTDIR
93
94         File "${FAT_NAME}"
95         File "altoslib_@ALTOSLIB_VERSION@.jar"
96         File "altosuilib_@ALTOSUILIB_VERSION@.jar"
97         File "cmudict04.jar"
98         File "cmulex.jar"
99         File "cmu_time_awb.jar"
100         File "cmutimelex.jar"
101         File "cmu_us_kal.jar"
102         File "en_us.jar"
103         File "freetts.jar"
104         File "jfreechart.jar"
105         File "jcommon.jar"
106         File "../icon/${WIN_APP_EXE}"
107
108         File "*.dll"
109
110         File "../icon/${WIN_APP_ICON}"
111
112         CreateShortCut "$SMPROGRAMS\${REG_NAME}.lnk" "$INSTDIR\${WIN_APP_EXE}" "" "$INSTDIR\${WIN_APP_ICON}"
113 SectionEnd
114
115 Section "${REG_NAME} Desktop Shortcut"
116         CreateShortCut "$DESKTOP\${REG_NAME}.lnk" "$INSTDIR\${WIN_APP_EXE}"  "" "$INSTDIR\${WIN_APP_ICON}"
117 SectionEnd
118
119 Section "Firmware"
120
121         SetOutPath $INSTDIR
122
123         File "../src/telemetrum-v2.0/telemetrum-v2.0-${VERSION}.ihx"
124         File "../src/telemetrum-v3.0/telemetrum-v3.0-${VERSION}.ihx"
125         File "../src/telemetrum-v4.0/telemetrum-v4.0-${VERSION}.ihx"
126         File "../src/telemini-v3.0/telemini-v3.0-${VERSION}.ihx"
127         File "../src/telegps-v1.0/telegps-v1.0-${VERSION}.ihx"
128         File "../src/telegps-v2.0/telegps-v2.0-${VERSION}.ihx"
129         File "../src/telegps-v3.0/telegps-v3.0-${VERSION}.ihx"
130         File "../src/teledongle-v3.0/teledongle-v3.0-${VERSION}.ihx"
131         File "../src/telebt-v3.0/telebt-v3.0-${VERSION}.ihx"
132         File "../src/telebt-v4.0/telebt-v4.0-${VERSION}.ihx"
133         File "../src/telemega-v1.0/telemega-v1.0-${VERSION}.ihx"
134         File "../src/telemega-v2.0/telemega-v2.0-${VERSION}.ihx"
135         File "../src/telemega-v3.0/telemega-v3.0-${VERSION}.ihx"
136         File "../src/telemega-v4.0/telemega-v4.0-${VERSION}.ihx"
137         File "../src/telemega-v5.0/telemega-v5.0-${VERSION}.ihx"
138         File "../src/telemega-v6.0/telemega-v6.0-${VERSION}.ihx"
139         File "../src/easymini-v1.0/easymini-v1.0-${VERSION}.ihx"
140         File "../src/easymini-v2.0/easymini-v2.0-${VERSION}.ihx"
141         File "../src/easymini-v3.0/easymini-v3.0-${VERSION}.ihx"
142         File "../src/easymega-v1.0/easymega-v1.0-${VERSION}.ihx"
143         File "../src/easymega-v2.0/easymega-v2.0-${VERSION}.ihx"
144         File "../src/easymotor-v3/easymotor-v3-${VERSION}.ihx"
145         File "../src/easytimer-v1/easytimer-v1-${VERSION}.ihx"
146         File "../src/easytimer-v2/easytimer-v2-${VERSION}.ihx"
147         File "../src/telelco-v2.0/telelco-v2.0-${VERSION}.ihx"
148         File "../src/telefireeight-v1.0/telefireeight-v1.0-${VERSION}.ihx"
149         File "../src/telefireeight-v2.0/telefireeight-v2.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/motortest.pdf"
161         File "../doc/telemetrum-outline.pdf"
162         File "../doc/telemega-outline.pdf"
163         File "../doc/easymini-outline.pdf"
164         File "../doc/telemini-v1-outline.pdf"
165         File "../doc/telemini-v3-outline.pdf"
166 SectionEnd
167
168 Section "File Associations"
169
170         ${DisableX64FSRedirection}
171
172         SetOutPath $INSTDIR
173
174         File "../icon/${WIN_TELEM_EXE}"
175         File "../icon/${WIN_EEPROM_EXE}"
176
177         DeleteRegKey HKCR "${PROG_ID_TELEM}"
178         DeleteRegKey HKCR "${PROG_ID_EEPROM}"
179
180         DeleteRegKey   HKCR ".eeprom\${PROG_ID_EEPROM}"
181         DeleteRegValue HKCR ".eeprom\OpenWithProgids" "${PROG_ID_EEPROM}"
182         DeleteRegKey   HKCR ".telem\${PROG_ID_EEPROM}"
183         DeleteRegValue HKCR ".telem\OpenWithProgids" "${PROG_ID_EEPROM}"
184
185         ; .eeprom elements
186
187         WriteRegStr HKCR "${PROG_ID_EEPROM}"            ""                              "Altus Metrum Log File"
188         WriteRegStr HKCR "${PROG_ID_EEPROM}"            "FriendlyTypeName"              "Altus Metrum Log File"
189         WriteRegStr HKCR "${PROG_ID_EEPROM}\CurVer"     ""                              "${PROG_ID_EEPROM}"
190         WriteRegStr HKCR "${PROG_ID_EEPROM}\DefaultIcon" ""                             '"$INSTDIR\${WIN_EEPROM_EXE}",-101'
191   WriteRegExpandStr HKCR "${PROG_ID_EEPROM}\shell\open\command" ""                      '"$INSTDIR\${WIN_APP_EXE}" "%1"'
192
193         WriteRegStr HKCR ".eeprom"                      ""                              "${PROG_ID_EEPROM}"
194         WriteRegStr HKCR ".eeprom"                      "PerceivedType"                 "Altus Metrum Log File"
195         WriteRegStr HKCR ".eeprom"                      "Content Type"                  "application/vnd.altusmetrum.eeprom"
196
197         WriteRegStr HKCR ".eeprom\OpenWithProgids"      "${PROG_ID_EEPROM}"             ""
198         WriteRegStr HKCR ".eeprom\${PROG_ID_EEPROM}"    ""                              "${REG_NAME}"
199         
200         ; .telem elements
201         
202         WriteRegStr HKCR "${PROG_ID_TELEM}"             ""                              "Altus Metrum Telemetry File"
203         WriteRegStr HKCR "${PROG_ID_TELEM}"             "FriendlyTypeName"              "Altus Metrum Telemetry File"
204         WriteRegStr HKCR "${PROG_ID_TELEM}\CurVer"      ""                              "${PROG_ID_TELEM}"
205         WriteRegStr HKCR "${PROG_ID_TELEM}\DefaultIcon" ""                              '"$INSTDIR\${WIN_TELEM_EXE}",-101'
206   WriteRegExpandStr HKCR "${PROG_ID_TELEM}\shell\open\command" ""                       '"$INSTDIR\${WIN_APP_EXE}" "%1"'
207
208         WriteRegStr HKCR ".telem"                       ""                              "${PROG_ID_TELEM}"
209         WriteRegStr HKCR ".telem"                       "PerceivedType"                 "Altus Metrum Telemetry File"
210         WriteRegStr HKCR ".telem"                       "Content Type"                  "application/vnd.altusmetrum.telemetry"
211
212         WriteRegStr HKCR ".telem\OpenWithProgids"       "${PROG_ID_TELEM}"              ""
213         WriteRegStr HKCR ".telem\${PROG_ID_TELEM}"      ""                              "${REG_NAME}"
214
215         Call RefreshShellIcons
216 SectionEnd
217         
218 Section "Uninstaller"
219
220         ; Deal with the uninstaller
221
222         ${DisableX64FSRedirection}
223         SetOutPath $INSTDIR
224
225         ; Write the install path to the registry
226         WriteRegStr HKLM "SOFTWARE\${REG_NAME}" "Install_Dir" "$INSTDIR"
227
228         ; Write the uninstall keys for windows
229         WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_NAME}" "DisplayName" "${REG_NAME}"
230         WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_NAME}" "UninstallString" '"$INSTDIR\uninstall-${REG_NAME}.exe"'
231         WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_NAME}" "NoModify" "1"
232         WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_NAME}" "NoRepair" "1"
233
234         WriteUninstaller "uninstall-${REG_NAME}.exe"
235 SectionEnd
236
237 Section "Uninstall"
238
239         ${DisableX64FSRedirection}
240
241         DeleteRegKey   HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_NAME}"
242         DeleteRegKey   HKLM "SOFTWARE\${REG_NAME}"
243
244         DetailPrint "Delete uninstall reg entries"
245
246         DeleteRegKey   HKCR "${PROG_ID_EEPROM}"
247         DeleteRegKey   HKCR "${PROG_ID_TELEM}"
248
249         DeleteRegKey   HKCR ".eeprom\${PROG_ID_EEPROM}"
250         DeleteRegValue HKCR ".eeprom\OpenWithProgids" "${PROG_ID_EEPROM}"
251
252         DeleteRegKey   HKCR ".telem\${PROG_ID_TELEM}"
253         DeleteRegValue HKCR ".telem\OpenWithProgids" "${PROG_ID_TELEM}"
254
255         DetailPrint "Delete file association reg entries"
256
257         Delete "$INSTDIR\${FAT_NAME}"
258         Delete "$INSTDIR\uninstall-${REG_NAME}.exe"
259
260         Delete "$INSTDIR\${WIN_APP_ICON}"
261         Delete "$INSTDIR\${WIN_APP_EXE}"
262
263         ; Remove shortcuts, if any
264         Delete "$SMPROGRAMS\${REG_NAME}.lnk"
265         Delete "$DESKTOP\${REG_NAME}.lnk"
266         
267         Call un.RefreshShellIcons
268 SectionEnd