[Risolto] Creare "installatore" programma Java

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

[Risolto] Creare "installatore" programma Java

Messaggio da daemon_nio »

Okay in questo post ho risolto un problema.

Ora sorge spontaneo un altro problema:
come permettere ad un utente di scaricare il mio programma (che ormai non e' altro che un insieme di archivio .jar e qualche files) tramite internet con un click del mouse e di installarlo sul sistema?

Quelli che mi preoccupano sono gli utenti windows. Per gli utenti linux scriverò un semplice script che se eseguito scarica e configura il tutto (è semplice su linux esiste pure un bel comdando che si chiama wget :D).

Ora per gli utenti windows vorrei fare qualcosina di molto carino, click del mouse su un link, click su esegui e si devono trovare l'applicazione installata sia sulla barra del menu avvio e un collegamento ad essa sul desktop. Che mi consigliate? Immagino che con un file batch ciò non è possibile. Stavo pensando a scrivere qualcosa in C++, ma mi conviene? Nel senso non c'è qualcosa di già pronto e confezionato?

Accetto consigli di ogni tipo, grazieeeeee!
Ultima modifica di daemon_nio il domenica 12 ottobre 2008, 13:10, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
ryuujin
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1032
Iscrizione: venerdì 14 aprile 2006, 2:57
Sesso: Maschile
Località: Pescara
Contatti:

Re: Creare "installatore" programma Java

Messaggio da ryuujin »

daemon_nio ha scritto: Okay in qusto ho risolto un problema.
Ora sorge spontaneo un altro problema, come permettere ad un utente di scaricare il mio programma (che ormai non e' altro che un insieme di archivio .jar e qualche files) tramite internet con un click del mouse e di installarlo sul sistema?
Ok modifico per l'ennesima volta e confermo:
java web start
e' quello che fa per te (e' multipiattaforma) e qui c'e' una guida italiana: http://www.andreafrancia.it/articoli/webstart/

Mi e' capitato di usarlo come utente installando alcune applicazioni dal sito sun.

r.
Ultima modifica di ryuujin il venerdì 26 settembre 2008, 10:03, modificato 1 volta in totale.
http://blog.spicydev.it
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: Creare "installatore" programma Java

Messaggio da daemon_nio »

Grazie per il link,
l'ho guardato per benino e l'ho provato.

Il problema è che sono riuscito soltanto a eseguire il programma Java con un click del mouse su un link (il che mi porta a metà strada) ma non sono riuscito a fare in modo che con il click il programma si installasse sul computer.

Come hai detto tu l'hai utilizzato per installare dei programmi java dal sito sun... sei sicuro si possa anche impostare in maniera predefinita per installare un programma sulla macchina di un utente?

Se no conoscete altre soluzioni semplici per farlo?

Comunque se non trovo altre soluzioni seguo la via più semplice:
Creo un nuovo .jar che faccio aprire automaticamente con java web start e in questo .jar ci metto delle istruzioni per copiare tutti i file necessari per far partire il programma con tutti i annessi e connessi (script bash o batch per l'avvio del jar, link veloci su barra applicazione e desktop e tutto il necessario).

Certo non ho tanta voglia di scrivere l'n-esima applicazione ma in mancanza di altro mi accontento.

Grazie di tutto, e aspetto ancora un po' primo di "mettere mani alla tastiera"  ;)
Ultima modifica di daemon_nio il sabato 27 settembre 2008, 14:48, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: Creare "installatore" programma Java

Messaggio da daemon_nio »

Niente da fare.

Da emerito idiota ho scritto tutta l'applicazione "installer" per installare tutti i jar con un click del mouse su un link.
Vado a inserire l'applicazione in java web start e si impalla.

Credo proprio di aver capito il perché  ::)
Problemi di permessi.

Infatti "installare" un'applicazione significa salvare dei file da qualche parte sul computer, e java web start funzionando in maniera molto simile ad un'applet non consente di accedere al filesystem. Non ne sono sicuro al 100% ma per quale altro motivo non dovrebbe andare la mia applicazione?

Ora la domanda è sempre la stessa: come fare per creare un'installatore della mia applicazione?

Avete qualche altra soluzione? Oppure riuscite a darmi una mano con java web start?

grazie

P.S.

come prevedevo il problema è proprio l'accesso al filesystem. Ho trovato quest'articolo che conferma la mia supposizione :(

Penso che l'unica soluzione sia un programmino scritto in c++
Ultima modifica di daemon_nio il martedì 7 ottobre 2008, 22:30, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
IppatsuMan
Prode Principiante
Messaggi: 199
Iscrizione: mercoledì 14 febbraio 2007, 1:31
Contatti:

Re: Creare "installatore" programma Java

Messaggio da IppatsuMan »

C'è il trucco:
http://java.sun.com/javase/technologies/desktop/javawebstart/1.2/docs/developersguide.html

In particolare devi aggiungere:

Codice: Seleziona tutto

<security>
   <all-permissions/>
</security>
e firmare digitalmente tutti i jar.
ハッカー
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: Creare "installatore" programma Java

Messaggio da daemon_nio »

Niente!

Ho provato, riprovato, googlato e rigooglato, letto decine e decine di POST ma non sono riuscito ad andare avanti.

Il link dice di fare così
Signing JAR Files with a Test Certificate

Here are the steps needed to sign a JAR file with a test certificate:

  1. Make sure that you have a JDK 1.2 or JDK 1.3 keytool and jarsigner in your path (located in the J2SE SDK bin directory).

  2. Create a new key in a new keystore as follows:

          keytool -genkey -keystore myKeystore -alias myself

      You will get prompted for a information about the new key, such as password, name, etc. This will create the myKeystore file on disk.

  3. Then, create a self-signed test certificate as follows:

          keytool -selfcert -alias myself -keystore myKeystore

      This will prompt for the password. Generating the certificate takes a few minutes.

  4. Check to make sure that everything is ok. To list the contents of the keystore, use the command:

          keytool -list -keystore myKeystore

      It should list something like:

          Keystore type: jks
          Keystore provider: SUN

          Your keystore contains 1 entry:

          myself, Tue Jan 23 19:29:32 PST 2001, keyEntry,
          Certificate fingerprint (MD5):
          C2:E9:BF:F9:D3:DF:4C:8F:3C:5F:22:9E:AF:0B:42:9D

  5. Finally, sign the JAR file with the test certificate as follows:

          jarsigner -keystore myKeystore test.jar myself

      Repeat this step on all of your JAR files.

Please note that a self-signed test certificate should only be used for internal testing, since it does not provide any guarantees about the identity of the user and therefore cannot be trusted. A trust-worthy certificate can be obtained from a certificate authority, such as VeriSign, and should be used when the application is put into production.
ma ovviamente non mi funziona.

Ho un errore di keytool error: java.lang.IllegalStateException: not encrypted dopo la certificazione.

Codice: Seleziona tutto

daemon_nio@matrix:~/keytool$ keytool -genkey -keystore myKeystore -alias myself
Enter key store password: pass
Enter key password for <myself>: mypass

You are about to enter information that will be incorporated into
your certificate request.  This information is what is called a
Distinguished Name or DN.  There are quite a few fields but you
can use supplied default values, displayed between brackets, by just
hitting <Enter>, or blank the field by entering the <.> character
before hitting <Enter>.

Common Name (hostname, IP, or your name): host.org
Organization Name (company) [The Sample Company]: a
Organizational Unit Name (department, division): b
Locality Name (city, district) [Sydney]: c
State or Province Name (full name) [NSW]: d
Country Name (2 letter code) [AU]: IT
daemon_nio@matrix:~/keytool$ keytool -selfcert -alias myself -keystore myKeystore
Enter key store password: pass
Enter key password for <myself>: mypass
keytool error: java.lang.IllegalStateException: not encrypted
daemon_nio@matrix:~/keytool$  
però alla generazione delle chiavi non c'è errore infatti mostrandola l'ha creata:

Codice: Seleziona tutto

aemon_nio@matrix:~/keytool$ keytool -genkey -keystore myKeystore -alias myself
Enter key store password: pass
Enter key password for <myself>: mypass

You are about to enter information that will be incorporated into
your certificate request.  This information is what is called a
Distinguished Name or DN.  There are quite a few fields but you
can use supplied default values, displayed between brackets, by just
hitting <Enter>, or blank the field by entering the <.> character
before hitting <Enter>.

Common Name (hostname, IP, or your name): host.org
Organization Name (company) [The Sample Company]: a
Organizational Unit Name (department, division): b
Locality Name (city, district) [Sydney]: c
State or Province Name (full name) [NSW]: d
Country Name (2 letter code) [AU]: IT
daemon_nio@matrix:~/keytool$ keytool -list -keystore myKeystore
Enter key store password: pass
Key store type: gkr
Key store provider: GNU-CRYPTO

Key store contains 1 entry(ies)

Alias name: myself
Creation timestamp: giovedì ottobre 9, 2008 AD - 10:45:24;801 o'clock  GMT+02:00
Entry type: key-entry
Certificate fingerprint (MD5): 91:03:C7:E8:E6:AB:C0:2A:10:38:56:24:55:49:3D:35
ma ovviamente poi il jar non lo firma... non ho certificato le chiavi:

Codice: Seleziona tutto

daemon_nio@matrix:~/keytool$ jarsigner -keystore myKeystore ../Desktop/PhotoReadyClientInstaller.jar myself
Enter Passphrase for keystore: pass
jarsigner error: java.lang.RuntimeException: keystore load: Invalid keystore format
Avete mai provato a certificare un Jar?
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
IppatsuMan
Prode Principiante
Messaggi: 199
Iscrizione: mercoledì 14 febbraio 2007, 1:31
Contatti:

Re: Creare "installatore" programma Java

Messaggio da IppatsuMan »

Eseguendo esattamente quella procedura riesco a firmare un .jar. Sei sicuro che stai utilizzando keytools e jarsigner della sun jdk e non di gcj?
ハッカー
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: Creare "installatore" programma Java

Messaggio da daemon_nio »

IppatsuMan ha scritto: Eseguendo esattamente quella procedura riesco a firmare un .jar. Sei sicuro che stai utilizzando keytools e jarsigner della sun jdk e non di gcj?
Sìsì, usavo proprio quello di gcj.
Avevo provato ad usare anche quello di java6 ma non andava lo stesso.

Poi li ho provati tutti:

Codice: Seleziona tutto

daemon_nio@matrix:~/Desktop$ locate jre*keytool
/opt/matlab/sys/java/jre/glnx86/jre1.5.0/bin/keytool
/opt/matlab/sys/java/jre/glnx86/jre1.5.0/man/ja_JP.eucJP/man1/keytool.1
/opt/matlab/sys/java/jre/glnx86/jre1.5.0/man/man1/keytool.1
/usr/lib/jvm/java-6-sun-1.6.0.03/jre/bin/keytool
/usr/lib/jvm/java-6-sun-1.6.0.03/jre/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.03/jre/man/man1/keytool.1.gz
/usr/lib/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre/bin/keytool
/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/jre/bin/keytool
/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/jre/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-1.5.0-sun-1.5.0.13/jre/man/man1/keytool.1.gz
/usr/java/jre1.6.0_01/bin/keytool
/usr/java/jre1.6.0_01/man/ja_JP.eucJP/man1/keytool.1
/usr/java/jre1.6.0_01/man/man1/keytool.1
e proprio l'ultimo /opt/matlab/sys/java/jre/glnx86/jre1.5.0/bin/keytool quando ormai mi ero dato per vinto ha funzionato.

Meno male che tempo fa ho installato il matlab.  (rotfl)

Grazie per l'aiuto!  (good)
Sempre costruendo qualcosa di nuovo: Matag: The Game
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti