Installer, der in die Win-Registry schreibt

blz

Bekanntes Mitglied
Hallo zusammen,
ich hab mir ein kleines Java Progrämmchen zusammengebastelt.
Es geht dabei um mp3 Tagging.

Ich habe es in eine runnable jar verpackt und einige Registry-Einträge vorgenommen.
Wenn ich jetzt auf einen Ordner klicke, kann ich mein Programm über das Kontextmenü aufrufen und der Ordnerinhalt wird entsprechend getaggt. Soweit so gut.

Da es allerdings einige jars sind und auch einige registry einträge, würde ich gerne einen installer haben, damit ich nicht immer alles händisch eintragen muss. Dieser sollte folgendes können:

1. Anlegen der Ordnerstrukturen unter c/programme
2. runnable jars dahinkopieren
3. registry einträge anlegen

Gibt es dafür geeignete Software oder muss ich das alles selber schreiben, und wenn ja, wie?

edit: ich habe auch schon im Forum hier recherchiert und bin auf das Programm launch4j gestoßen - ist das das richtige für meine Zwecke?
 
Zuletzt bearbeitet:

blz

Bekanntes Mitglied
Noch eine Nachfrage:
Komme nicht ganz mit den RegistryEinträgen zurecht.
Ich will unter HKCR\Directory\ContextMenus eine Schlüsselhierarchie mit commands und Zeichenfolgen erstellen. In der NSIS Doku gibt es aber so viele verschiedene Befehle ..
Was muss ich da nehmen?
 

JStein52

Top Contributor
Meinst du sowas (Beispiel):

WriteRegStr HKCR "$R0" "" "VLC$R0"
ReadRegStr $0 HKCR "VLC$R0" ""
WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
WriteRegStr HKCR "VLC$R0\shell" "" "Play"
WriteRegStr HKCR "VLC$R0\shell\Play" "" $ShellAssociation_Play
WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
 

blz

Bekanntes Mitglied
uarg, kann ich dir noch nicht genau sagen, ich hänge grad noch an den basisc ...
ich will in der registry neue schlüssel und darunter wieder schlüssel etc. erstellen.
habe schon herausgefunden, dass das mit dem auch von dir verwendeten befehl WriteRegStr funktioniert bzw. diese Schlüssel automatisch erstellt werden, wenn man einen entsprechenden Pfad angibt.
Nun möchte ich in einem solchen Ordner eine Zeichenfolge mit einem gewissen Wert erstellen. Auch das klappt mit demselben Befehl:
WriteRegStr HKCR "Directory\ContextMenus\TagIt\Shell\... a test" "MUIVerb" "... a test"

Soweit bin ich. Jetzt möchte ich eine Hierarchieebene darunter den Schlüssel "command" erstellen und der Zeichenfolge, die mit (Standard) bezeichnet ist, einen neuen Wert zuweisen, z. B. "asdf.exe"

Aber das krieg ich noch nicht hin ...
 

blz

Bekanntes Mitglied
aja, saucool, funktioniert!
Gibts jetzt wenn ich nur diese beiden Befehle benutz:

WriteRegStr HKCR "Directory\ContextMenus\TagIt\Shell\... a test" "MUIVerb" "... a test"
WriteRegStr HKCR "Directory\ContextMenus\TagIt\Shell\... a test\command" "" "test.exe"

irgendwas was ich abfangen/sicherheitstechnisch beachten/prüfen/... muss, um sicherzugehen, dass das immer läuft?
 

JStein52

Top Contributor
z.B. sicherstellen dass der Installer mit ausreichenden Rechten läuft ? Stichwort RequestExecutionLevel .
Oder meintest du jetzt speziell Registry-Belange ? Mir fällt da nichts ein.
 

blz

Bekanntes Mitglied
ok, danke.
jetzt hab ich festgestellt, dass ich ja auch eine Funktion brauche, die mir dynamisch die aktuelle Java Version besorgt
dazu gibts im web auch massig beispiele, allerdings meistens von 2009 ... habe auch etwa herausgefunden, wo das problem liegt, finde aber keine lösung...
hier der code

Code:
Function LocateJVM
    ;Check for Java version and location
    Push $0
    Push $1

    ReadRegStr $JAVA_VER HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion
    DetailPrint "Java-Ver: $JAVA_VER"
    StrCmp "" "$JAVA_VER" JavaNotPresent CheckJavaVer

    JavaNotPresent:
        StrCpy $JAVA_INSTALLATION_MSG "Java Runtime Environment is not installed on your computer. You need version 1.4 or newer to run this program."
        Goto Done

    CheckJavaVer:
        ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$JAVA_VER" JavaHome
        GetFullPathName /SHORT $JAVA_HOME "$0"
        StrCpy $0 $JAVA_VER 1 0
        StrCpy $1 $JAVA_VER 1 2
        StrCpy $JAVA_VER "$0$1"
        IntCmp 14 $JAVA_VER FoundCorrectJavaVer FoundCorrectJavaVer JavaVerNotCorrect

    FoundCorrectJavaVer:
        IfFileExists "$JAVA_HOME\bin\javaw.exe" 0 JavaNotPresent
        ;MessageBox MB_OK "Found Java: $JAVA_VER at $JAVA_HOME"
        Goto Done

    JavaVerNotCorrect:
        StrCpy $JAVA_INSTALLATION_MSG "The version of Java Runtime Environment installed on your computer is $JAVA_VER. Version 1.4 or newer is required to run this program."

    Done:
        Pop $1
        Pop $0
FunctionEnd

das problem liegt wohl in der zeile
ReadRegStr $JAVA_VER HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion

ich weiß nicht genau, ob das CurrentVersion die Bezeichnung eines Schlüssels sein soll, der vorhanden sein soll (aber warum dann nicht in ""), aber jedenfalls findet er die current version nicht.
in meiner registry stehen unter dem angegebenen Pfad nur die zwei Ordner 1.8 und 1.8.0_73
...

edit: habe jetzt gecheckt, dass das CurrentVersion die Zeichenfolge rechts inder Registry ist. Sie hat auch den Wert 1.8. Also eigentlich alles gut. Trotzdem bleibt der Wert von $JAVA_Ver leer ...

edit2: habs herausgefunden! Problem war, dass ich einen 32bit installer auf einem 64 bit system laufen lasse. -->

Code:
SetRegView 64
    ReadRegStr $JAVA_VER HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion
SetRegView 32
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B "Installer" für Java App Allgemeine Java-Themen 12
T SE Development Kit 8 73 installer bleibt stehen Allgemeine Java-Themen 5
I Java Installer Allgemeine Java-Themen 3
I Installer, der JAVA EE Server und DB installiert Allgemeine Java-Themen 10
J Java: Installer für Mods programmieren Allgemeine Java-Themen 5
J Installer für Java-Programm Allgemeine Java-Themen 5
Zed Java Installer Allgemeine Java-Themen 26
G einfacher Installer Allgemeine Java-Themen 3
R Installer Komponente von izpack in Java? Allgemeine Java-Themen 2
W Einfaches Installer/setup tool für java programme das. Allgemeine Java-Themen 4
G java windows installer Allgemeine Java-Themen 12
S installer mit bestimmten features? Allgemeine Java-Themen 2
M Wer kennt einen guten Installer? Allgemeine Java-Themen 6
F Installer für Windows schreiben! Hat jemand ein Beispiel? Allgemeine Java-Themen 8
R -jar der Windows-Registry hinzufügen Allgemeine Java-Themen 1
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
F Registry Ordner durchlaufen Allgemeine Java-Themen 1
M Wie mit Jacob die Registry auslesen? Allgemeine Java-Themen 0
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
E CMD Registry Key für Windows 7? Allgemeine Java-Themen 9
Dit_ Registry, Preferences | Name des Knotens ändern. Allgemeine Java-Themen 2
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S Problem mit Registry Allgemeine Java-Themen 3
C Registry auslesen mit Java Allgemeine Java-Themen 13
N Registry Pattern Allgemeine Java-Themen 7
P windows registry lesen Allgemeine Java-Themen 3
conan2 Windows-Registry lesen und schreiben Allgemeine Java-Themen 8
K Registry-Zugriff auch einfacher? (ORACLE_HOME auslesen) Allgemeine Java-Themen 3
A Windows Registry Zugriff Allgemeine Java-Themen 4
M Registry mit jRegistryKey auslesen Allgemeine Java-Themen 7
M swing und windows registry Allgemeine Java-Themen 11
C REG_BINARY Type in Windows Registry ausgeben ? Allgemeine Java-Themen 4
C Registry schreiben und lesen unter Win XP ? Allgemeine Java-Themen 2
S Zugriff auf Windows-Registry Allgemeine Java-Themen 8
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
H Input/Output Wie schreibt man programmatisch Matrizen auf? Allgemeine Java-Themen 21
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
ralfb1105 LogManager logger schreibt nicht in Catch() Zweig Allgemeine Java-Themen 2
Aruetiise Methoden write() schreibt nicht alles Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
M Für was schreibt man Unit-Tests? Allgemeine Java-Themen 55
J BufferedWriter schreibt von selbst ein "" Allgemeine Java-Themen 12
G wie schreibt man das? Allgemeine Java-Themen 16
Q Schnittstelle/Abstrakte Klasse schreibt Annotation vor? Allgemeine Java-Themen 4
W BufferedWriter.write() schreibt nicht Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben