2014-09-23 17 views
7

Come posso distribuire un'applicazione JavaFX per Windows in modo che l'exe contenente il mio jar venga avviato con diritti di amministratore? Ho avuto questo lavoro con il mio vecchio metodo di distribuzione, ma la via di Netbeans sembra molto più semplice ed efficiente, quindi mi piacerebbe davvero usarla. Aiuta ad eliminare un sacco di passaggi extra che normalmente devo fare ...Netbeans Distribuisci app JavaFX Diritti amministratore

Sono sicuro che la soluzione è proprio sotto il mio naso, ma non riesco proprio a capirlo!

Con i migliori saluti,

Alen

+0

serio? 2 mesi e solo 16 visualizzazioni? – Will

+0

@Solo una domanda veloce, quando si esegue il file .exe si vuole eseguirlo come amministratore semplicemente facendo doppio clic su di esso, o si desidera eseguire il jar all'interno facendo clic su file .exe -> eseguire come amministratore? –

+0

Entrambi, preferibilmente. So (o PENSO, almeno) che è necessario firmare il codice per eseguire un .jar elevato ... – Will

risposta

0

La soluzione che ho trovato funziona molto bene per me, ecco come lo faccio:

1) Definire personalizzato posizione JDK nel file jfx-impl.xml del progetto JavaFX Netbeans. Suggerimento: cercare "plat.setBasedir" e modificare i parametri in: plat.setBasedir ("percorso \ a \ jdk \ e \ non \ jre"). Ciò garantisce che il JDK sia incorporato nel tuo programma di installazione.

2) Impostazione della distribuzione nativa per il progetto JavaFX (come mai si ritiene opportuno per il progetto).

3) Distribuire l'applicazione come un exe nativo.

4) Installare l'applicazione localmente da qualche parte.

5) Installare Windows SDK 7.1. È necessario lo strumento manifest (mt.exe), lo troverai da qualche parte nei file di programma/windows sdk/...

6) Creare un manifest per i diritti di amministratore (gli esempi possono essere trovati su stackoverflow o google) . Suggerimento: il nome file dovrebbe apparire simile a questo quando lo si esegue-> "Nome programma.exe.manifest".

7) Utilizzare mt.exe per iniettare manifest nell'exe dell'applicazione. Suggerimento: avviare CMD con diritti di amministrazione ed eseguire mt.exe come se fosse -> mt.exe -manifest "percorso \ to \ manifest \ nome programma.exe.manifest" -outputresource: "\ percorso \ a \ exe \ che \ necessita \elevazione".

8) Dopo aver iniettato il manifest nel passaggio 7, creare la propria configurazione con INNO Setup che riconfeziona la struttura esatta creata dalla funzione di distribuzione nativa di Netbeans (Questo ora includerà l'exe appena rialzato nella nuova configurazione).

idea di base:

Distribuisci con Netbeans -> Installa localmente -> Iniettare elevazione manifesta -> Reimballare con Inno Setup creatore

1

Dopo aver inviato la bontà io possa avere una risposta per voi: Se sai come usare uno script INNO personalizzato con il Bundler JavaFX, è possibile utilizzare un'INNO personalizzato sceneggiatura e aggiungere una voce al registro di sistema che costringerà l'esecuzione dell'applicazione elevati:

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

Questo non è l'ideale (per me, comunque), ma la cosa più importante è che funziona.

Se avete bisogno di ulteriori chiarimenti su di esso per favore fatemelo sapere e posso guidarvi attraverso di esso.

+0

Grazie Will! Tuttavia ho trovato una soluzione che funziona. Scusa per il ritardo della risposta. Lo posterò nella risposta. – Alen

0

Aggiungere un manifest dell'applicazione per indicare che l'eseguibile deve essere elevato. Vedi this MSDN blog entry. Aggiungi il manifest di applicazione statica (non incorporato) al tuo progetto, come risorsa.

+0

Esattamente come si fa in NetBeans. Questa è un'applicazione Java, non un'applicazione Windows. – Will

+0

L'OP ha detto che è un .exe contenente il tuo .jar. Le applicazioni Java non sono contenute in .exe - sono contenute in file .jar. Inoltre, Java non ha alcuna nozione di "diritti di amministratore" a livello di sistema. In NetBeans, qualunque sia il processo utilizzato dall'OP per rendere l'exe dovrebbe avere un processo per creare file di risorse. Se fossi nei panni dell'OP, userei Maven e lo legheremo al launcher di Janel (.exe) e come parte del processo di build di Maven, copiando lo stub di Janel su MyApplication.exe e copiando MyApplication.exe.manifest da ' res/'directory. – user314104

+0

Hey, grazie per la risposta! Ho trovato una soluzione che include questo manifest di cui parli, posterò la soluzione per rispondere alla mia stessa domanda. – Alen

Problemi correlati