2014-09-23 7 views
7

Wie kann ich eine JavaFX-Anwendung für Windows bereitstellen, sodass die Exe mit meinem Jar mit Administratorrechten gestartet wird? Ich hatte dies mit meiner alten Methode der Bereitstellung, aber die Netbeans Weg scheint viel einfacher und effizienter, so würde ich wirklich gerne verwenden. Es hilft, viele zusätzliche Schritte zu beseitigen, die ich normalerweise tun muss ...Netbeans Bereitstellen von JavaFX App Admin-Rechten

Ich bin mir sicher, dass die Lösung direkt unter meiner Nase ist, aber ich kann es einfach nicht herausfinden!

Mit freundlichen Grüßen,

Alen

+0

Ernst? 2 Monate und nur 16 Aufrufe? – Will

+0

@Will nur eine kurze Frage, wenn Sie ausführen. Exe-Datei möchten Sie es als Admin nur durch einen Doppelklick ausführen, oder Sie möchten das Jar innerhalb durch Klicken auf EXE-Datei ausführen -> als Administrator ausführen? –

+0

Beide, vorzugsweise. Ich weiß (oder denke zumindest), dass Sie Code-Zeichen müssen, um ein .jar erhöht zu starten ... – Will

Antwort

0

Die Lösung, die ich sehr gut funktioniert für mich gefunden, hier ist, wie ich es tun:

1) benutzerdefinierte JDK Lage im jfx-impl.xml Datei des JavaFX Netbeans-Projektes definieren. Tipp: Suchen Sie nach "plat.setBasedir" und ändern Sie die Parameter wie folgt: plat.setBasedir ("path \ to \ jdk \ and \ not \ jre"). Dadurch wird sichergestellt, dass das JDK in Ihr Installationsprogramm eingebettet wird.

2) Richten Sie die native Deployment für das JavaFX-Projekt (wie auch immer Sie für Ihr Projekt geeignet halten) ein.

3) Stellen Sie Ihre Anwendung als native exe bereit.

4) Installieren Sie Ihre Anwendung lokal.

5) Installieren Sie Windows SDK 7.1. Sie benötigen das Manifest-Tool (mt.exe), Sie finden es irgendwo in den Programmdateien/windows sdk/...

6) Erstellen Sie ein Manifest für Admin-Rechte (Beispiele können auf Stackoverflow oder Google gefunden werden) . Tipp: Dateiname sollte in etwa so aussehen, wenn Sie es machen-> "Program Name.exe.manifest".

7) Verwenden Sie mt.exe, um das Manifest in die EXE-Datei Ihrer Anwendung zu injizieren. Tipp: Starten Sie CMD mit Administratorrechten und führen Sie mt.exe wie folgt aus -> mt.exe -manifest "Pfad \ zu \ Manifest \ Program Name.exe.manifest" -outputresource: "\ Pfad \ zu \ exe \ that \ needs \Elevation".

8) Nachdem Sie das Manifest in Schritt 7 eingefügt haben, erstellen Sie Ihr eigenes Setup mit INNO Setup, das die exakte Struktur neu packt, die von der nativen Deployment-Funktion von Netbeans erstellt wurde (Dies wird jetzt Ihre neu erhöhte .exe in der neuen Einrichtung enthalten)).

Grundidee:

Deploy mit Netbeans -> lokal installieren -> Injizieren Erhebung manifestieren -> Repackage mit Inno Setup-Schöpfer

1

Nach der Bounty I ein, eine Antwort für Sie: Wenn Sie wissen, wie eine benutzerdefinierte INNO Skript mit dem JavaFX Bündler verwenden, können Sie eine benutzerdefinierte INNO verwenden Skript und fügen sie einen Eintrag in der Registrierung, die die Anwendung zwingen wird, laufen erhöht:

[Registry] 
Root: HKCU; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Appcompatflags\layers"; ValueType: string; ValueName: "{app}\File Name.exe"; ValueData: "RUNASADMIN"; 

dies nicht ideal ist (für mich jedenfalls), aber das wichtigste ist, dass es funktioniert.

Wenn Sie weitere Erläuterungen benötigen, lassen Sie es mich wissen und ich kann Sie durchgehen.

+0

Danke Will! Ich habe jedoch eine Lösung gefunden, die funktioniert. Entschuldigung für die späte Antwort. Ich werde es in der Antwort posten. – Alen

0

Fügen Sie ein Anwendungsmanifest hinzu, um anzugeben, dass die ausführbare Datei erhöht werden soll. Siehe this MSDN blog entry. Fügen Sie das statische Anwendungsmanifest (nicht eingebettet) Ihrem Projekt als Ressource hinzu.

+0

Wie genau macht man das in NetBeans? Dies ist eine Java-Anwendung, keine Windows-Anwendung. – Will

+0

Das OP sagte, es sei eine .exe, die dein .jar enthält. Java-Anwendungen sind nicht in .exe-Dateien enthalten. Sie sind in .jar-Dateien enthalten. Darüber hinaus hat Java keine Vorstellung von "Admin-Rechten" auf Systemebene. In NetBeans sollte jeder Prozess, den das OP verwendet, um die .exe zu erstellen, einen Prozess zum Erstellen von Ressourcendateien haben. Wäre ich in OPs Schuhen, würde ich Maven benutzen und das in den Janel-Launcher (.exe) binden und als Teil des Maven-Build-Prozesses Janels Stub nach MyApplication.exe kopieren und MyApplication.exe-Manifest aus dem '' kopieren res/'Verzeichnis. – user314104

+0

Hey vielen Dank für die Antwort! Ich habe eine Lösung gefunden, die dieses Manifest enthält, von dem Sie sprechen. Ich werde die Lösung veröffentlichen, um meine eigene Frage zu beantworten. – Alen