Eigene Garmin-Karte: Exe erzeugen
-
Eigene Garmin-Karte: Exe erzeugen · softcake (Gast) · 06.05.2013 12:22 · [flux]
Hallo,
arbeite seit längerem mit meiner eigenen Garmin-MTB-Karte, die auch von anderen gerne genutzt wird. Die Installation der Mapsource-Dateien erfolgt per mapsettoolkit, was nicht jedermanns Sache ist...
Nun möchte ich die Installation für Mapsource erleichtern, indem ich eine install.exe erzeuge. Leider weiß ich nicht, welche Einträge in der Registry nötig sind und welche Infos Mapsource sonst noch so benötigt.Welche freien Installer kann man empfehlen?
Danke & Gruß
Thomas
- Re: Eigene Garmin-Karte: Exe erzeugen · toc-rox (Gast) · 06.05.2013 13:44 · [flux]
softcake wrote:
... Welche freien Installer kann man empfehlen? ...
NSIS - hat aber wie die meisten Installer ein 2 GB-Limit.
Gruß Klaus
- Re: Eigene Garmin-Karte: Exe erzeugen · aighes (Gast) · 06.05.2013 17:09 · [flux]
Man kann aber auch einen separaten Installer basteln, der dann als zusätzliche Datei neben den ganzen img-Dateien liegt und nur die Registry-Einträge setzt. Dann kann die Karte so groß sein, wie Garmin es erlaubt.
Das wäre das Template für mkgmap:
;␣INSERT_DEFINES_HERE
SetCompressor␣/SOLID␣lzma
;␣Includes !include␣"MUI2.nsh"
;␣Installer␣pages !define␣MUI_CUSTOMFUNCTION_GUIINIT␣myGuiInit !insertmacro␣MUI_PAGE_WELCOME !insertmacro␣MUI_PAGE_LICENSE␣${MAPNAME}_license.txt !insertmacro␣MUI_PAGE_INSTFILES !insertmacro␣MUI_PAGE_FINISH
;␣Uninstaller␣pages !define␣MUI_UNPAGE_INSTFILES
;␣Language␣files !define␣MUI_LANGDLL_ALLLANGUAGES !insertmacro␣MUI_LANGUAGE␣"English" !insertmacro␣MUI_LANGUAGE␣"French" !insertmacro␣MUI_LANGUAGE␣"Spanish" !insertmacro␣MUI_LANGUAGE␣"German" !insertmacro␣MUI_LANGUAGE␣"Dutch"
LangString␣AlreadyInstalled␣${LANG_ENGLISH}␣"${INSTALLER_NAME}␣is␣already␣installed.␣$\n$\nClick␣`OK`␣to␣remove␣the␣previous␣version␣and␣continue␣installation␣or␣`Cancel`␣to␣cancel␣this␣upgrade." LangString␣AlreadyInstalled␣${LANG_FRENCH}␣"${INSTALLER_NAME}␣est␣déjà␣installé.␣$\n$\nAppuyez␣sur␣`OK`␣pour␣retirer␣la␣version␣précédente␣et␣continuer␣avec␣l'installation␣ou␣sur␣`Annuler`␣pour␣annuler␣cette␣mise␣à␣jour." LangString␣AlreadyInstalled␣${LANG_SPANISH}␣"${INSTALLER_NAME}␣ya␣está␣instalado.␣$\n$\nPulse␣`Aceptar`␣para␣eliminar␣la␣versión␣anterior␣y␣continuar␣la␣instalación␣o␣`Cancelar`␣para␣cancelar␣esta␣actualización." LangString␣AlreadyInstalled␣${LANG_GERMAN}␣"${INSTALLER_NAME}␣ist␣bereits␣installiert.␣$\n$\nKlick␣`OK`␣um␣die␣alte␣Version␣zu␣deinstallieren␣oder␣`Abbrechen`␣um␣die␣Installation␣abzubrechen." LangString␣AlreadyInstalled␣${LANG_DUTCH}␣"${INSTALLER_NAME}␣is␣reeds␣geinstalleerd.␣$\n$\nKlik␣op␣`OK`␣om␣de␣oude␣versie␣te␣verwijderen␣of␣`Annuleren`␣om␣deze␣update␣te␣onderbreken."
;␣Reservefiles !insertmacro␣MUI_RESERVEFILE_LANGDLL␣;Language␣selection␣dialog
Name␣"${INSTALLER_DESCRIPTION}" OutFile␣"Install.exe" InstallDir␣"$EXEDIR"
Function␣.onInit !insertmacro␣MUI_LANGDLL_DISPLAY ;empty␣␣Mapsource/Basecamp␣Tilecache Delete␣"$LOCALAPPDATA\garmin\basecamp\tilecache\*.tile" Delete␣"$APPDATA\garmin\mapsource\tilecache\*.tile" FunctionEnd
Function␣myGUIInit ;␣Read␣installdir␣from␣registry ClearErrors ReadRegStr␣$0␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"LOC" IfErrors␣+2 StrCmp␣$0␣"$EXEDIR"␣done
;␣Uninstall␣before␣installing␣(code␣from␣http://nsis.sourceforge.net/Auto-uninstall_old_before_installing_new␣) ReadRegStr␣$R0␣HKLM␣\ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${REG_KEY}"␣"UninstallString" StrCmp␣$R0␣""␣done
IfSilent␣silent MessageBox␣MB_OKCANCEL|MB_ICONEXCLAMATION␣"$(AlreadyInstalled)"␣IDOK␣uninst Abort
;Run␣the␣uninstaller uninst: ClearErrors ExecWait␣'"$R0"␣/S␣'␣;Do␣not␣copy␣the␣uninstaller␣to␣a␣temp␣file
IfErrors␣no_remove_uninstaller␣done ;You␣can␣either␣use␣Delete␣/REBOOTOK␣in␣the␣uninstaller␣or␣add␣some␣code ;here␣to␣remove␣the␣uninstaller.␣Use␣a␣registry␣key␣to␣check ;whether␣the␣user␣has␣chosen␣to␣uninstall.␣If␣you␣are␣using␣an␣uninstaller ;components␣page,␣make␣sure␣all␣sections␣are␣uninstalled. no_remove_uninstaller:
Goto␣done
silent: ExecWait␣'"$R0"␣/S␣'␣;Do␣not␣copy␣the␣uninstaller␣to␣a␣temp␣file
done:
FunctionEnd
Function␣un.onInit !insertmacro␣MUI_UNGETLANGUAGE FunctionEnd
Section␣"MainSection"␣SectionMain SectionIn␣RO SetOutPath␣"$INSTDIR"
;␣Create␣MapSource␣registry␣keys ;␣INSERT_REGBIN_HERE !ifdef␣INDEX WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"IDX"␣"$INSTDIR\${MAPNAME}.mdx" WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"MDR"␣"$INSTDIR\${MAPNAME}_mdr.img" !endif !ifdef␣TYPNAME WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"TYP"␣"$INSTDIR\${TYPNAME}" !endif WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"BMAP"␣"$INSTDIR\${MAPNAME}.img" WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"LOC"␣"$INSTDIR" WriteRegStr␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"TDB"␣"$INSTDIR\${MAPNAME}.tdb"
;␣Write␣uninstaller WriteUninstaller␣"$INSTDIR\Uninstall.exe"
;␣Create␣uninstaller␣registry␣keys WriteRegStr␣HKLM␣"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_KEY}"␣"DisplayName"␣"$(^Name)" WriteRegStr␣HKLM␣"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_KEY}"␣"UninstallString"␣"$INSTDIR\Uninstall.exe" WriteRegDWORD␣HKLM␣"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${REG_KEY}"␣"NoModify"␣1
SectionEnd
Section␣"Uninstall" ;␣Files␣to␣be␣uninstalled Delete␣"$INSTDIR\${MAPNAME}*.*" Delete␣"$INSTDIR\${TYPNAME}" Delete␣"$INSTDIR\*.img" Delete␣"$INSTDIR\Uninstall.exe" Delete␣"$INSTDIR\Install.exe"
RmDir␣"$INSTDIR"
;␣Registry␣cleanup DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"ID" !ifdef␣INDEX DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"IDX" DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"MDR" !endif !ifdef␣TYPNAME DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"␣"TYP" !endif DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"BMAP" DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"LOC" DeleteRegValue␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}"␣"TDB" DeleteRegKey␣/IfEmpty␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}\${PRODUCT_ID}" DeleteRegKey␣/IfEmpty␣HKLM␣"SOFTWARE\Garmin\MapSource\Families\${REG_KEY}"
DeleteRegKey␣HKLM␣"Software\Microsoft\Windows\CurrentVersion\Uninstall\${REG_KEY}"
SectionEnd
- Re: Eigene Garmin-Karte: Exe erzeugen · softcake (Gast) · 07.05.2013 06:37 · [flux]
Vielen Dank!
Werde mich in den nächsten Tagen mal reinarbeiten.
Gibt es etwas zu beachten, wenn die Karten auf XP und Win7 lauffähig sein sollen oder übernimmt das der Installer zuverlässig?
Gruß, Thomas
- Re: Eigene Garmin-Karte: Exe erzeugen · softcake (Gast) · 10.05.2013 08:53 · [flux]
Geschafft! 😉
Habe mich jetzt doch für den Advanced Installer entschieden. Dennoch hat mir das NSIS-Script sehr geholfen.
Leider kann ich mit dem Adv. Installer den Mapsource-Cache nicht löschen, auch nicht indirekt über Batch-Datei. Falls jemand eine simple Lösung parat hat...
Danke nochmal!
Thomas