2012-02-18 19 views
7

Attualmente sto provando a bloccare un'applicazione Java nella barra delle applicazioni di Windows 7. L'applicazione viene avviata con Launch4j. L'icona del programma viene visualizzata correttamente ma facendo clic con il pulsante destro del mouse sull'icona sulla barra delle applicazioni viene visualizzato solo un menu di scelta rapida con la voce "Chiudi finestra". Nessuna voce di menu per bloccare l'applicazione sulla barra delle applicazioni. Anche il trascinamento del file EXE nella barra delle applicazioni non funziona correttamente. Quando si fa clic su questo nuovo pulsante di avvio nella barra delle applicazioni, viene visualizzata una seconda icona nella barra delle applicazioni.Blocco di un'applicazione Java tramite Launch4j sulla barra delle applicazioni di Windows 7

Ho seguito le istruzioni delle soluzioni a queste due domande per risolvere il problema, ma non ha aiutato:

La roba JNA dalla seconda domanda/soluzione compila e non lancia alcuna eccezione. Posso leggere l'ID app dopo averlo impostato. Ma non riesco ancora a bloccare l'applicazione sulla barra delle applicazioni.

Ho creato una piccola applicazione di test su Github, che illustra il problema:

https://github.com/kayahr/launch4jtest

L'applicazione utilizza Maven come sistema di compilazione. Basta eseguire mvn package e troverai un file ZIP nella directory di destinazione che contiene il file EXE e il jna.jar che è necessario per impostare questo ID app. Estrai questo ZIP in qualche directory, fai doppio clic sul file EXE e prova a bloccare l'applicazione sulla barra delle applicazioni e vedrai il problema.

Quindi cosa c'è di sbagliato in questa applicazione?

+0

Ho eseguito correttamente questa operazione ma non tramite Maven per un eseguibile creato utilizzando Launch4J. È necessario creare un'icona scorciatoia che incorpori le informazioni AppUserModelID. InnoSetup può creare tale icona scorciatoia sotto la sezione [Icone]. Fornire il nome dell'applicazione assegnato a AppUserModelID tramite JNA. – ecle

+0

Vedere http://stackoverflow.com/questions/5646813/how-to-make-exe-file-for-izpack-installer-jar-file e http://stackoverflow.com/questions/5438651/launch4j-nsis- e-duplicate-pinned-windows-7-taskbar-icons – ecle

+0

@eee Il problema è: ho bisogno di creare questo programma di installazione su Linux perché non ho accesso a una finestra di Windows durante il tempo di costruzione. C'è un plugin per NSIS ma questo funziona anche su Windows perché chiama direttamente alcune chiamate API Windows. E anche se riesco a modificare queste scorciatoie: cosa succede quando l'utente avvia direttamente l'EXE o crea un collegamento personalizzato dal file EXE? Quindi non funziona ancora. – kayahr

risposta

4

N.B. Riscritto alcuni commenti originariamente nel post principale secondo la richiesta di kayahr :)

È necessario creare un'icona scorciatoia che incorpori AppUserModelID informazioni. InnoSetup può creare tale collegamento icona sotto la sezione [Icons]. Fornire il nome dell'applicazione assegnato a AppUserModelID tramite JNA. Links consigliati da leggere:

How to make .exe file for izpack installer .jar file

Launch4j, NSIS, and duplicate pinned Windows 7 taskbar icons

  1. Funziona quando trascinando il file EXE (non la sua icona di collegamento) in Windows 7 barra delle applicazioni per creare un'icona appuntato;
  2. Funziona quando si esegue il file EXE e in seguito si sceglie il menu di opzioni "pin alla barra delle applicazioni" per creare un'icona bloccata. Se non si imposta AppUserModelID, questo non è possibile; anche questo causerà un comportamento strano come avere "icona" javaw.exe sulla barra delle applicazioni invece dell'icona di exe dal momento che Launch4J chiama il jar eseguibile usando javaw.exe (icone appuntato duplicate)

Per eseguire costruttore di installazione basato su Windows sotto Linux, si riferiscono come guida:

http://katastrophos.net/andre/blog/2009/03/16/setting-up-the-inno-setup-compiler-on-debian/

Sì, come detto da kayahr, questa funzionalità di Windows 7 solo la volontà funziona quando la sua icona scorciatoia con il AppUserModelID incorporato rimane intatto (cioè non viene rimosso/eliminato).

+0

Va notato che questo metodo funziona solo se il collegamento è disponibile in una posizione specifica! Il menu Start. Posso confermare che questo non funziona se l'installatore ha creato il collegamento in Programmi (accanto a '.exe'). Stavo perdendo la testa cercando di capire perché non ero in grado di bloccare quando si parte da un exe (potevo pin solo trascinando il collegamento sulla barra delle applicazioni, dopo che il pinning a partire da exe non si raggruppava con la scorciatoia appuntata). Vale la pena ricordare che sto eseguendo un account utente non amministratore e questo potrebbe essere legato alle autorizzazioni. – predi

Problemi correlati