Ho una procedura realizzata con B4J per l'invio notifiche push usando Firebase Cloud Messaging, la procedura si chiama PIPPO.JAR
Questa procedura dispone di un file per la propria configurazione PIPPO.INI, dove tra le altre cose e' scritto il server key per necessario per l'invio verso i sistemi Firebase
Il file ini se non presente all'avvio viene creato automaticamente col seguente codice
Stessa cosa per un file PIPPO.TXT che uso per passare i comandi da programma esterno alla procedura jar, se non presente viene creato e scritta riga iniziale 'Creazione:...'
Allora, se avvio il tutto da ide funziona tutto come atteso (almeno come mi attendo io), sia il file pippo.ini che il file di testo pippo.txt vengono creati/letti dalla directory dov'e' il jar (quella che dovrebbe essere la File.DirApp dentro al codice)
Una volta completato il programma, per avviare in esecuzione il jar uso un file pippo.bat con dentro 'java -jar c:\dev\superprogetto_xyz\pippo.jar'
Pippo.bat e' nella stessa directory di pippo.jar
Il problema sta nel fatto che quando da sistema operativo doppio-clicco su pippo.bat mi aspetterei che il jar venga eseguito e quindi se mancanti il pippo.ini e pippo.txt se li autocrei
Niente, me li crea dentro c:\users\user1\document
Mentre se doppio-clicco direttamente su pippo.jar sia il file pippo.ini che il file pippo.txt me li autocrea correttamente nella stessa directory di pippo.jar
Quindi quel File.DirApp dentro al codice in realta' non indica la directory dove e' attualmente il jar
Windows 10 pro
Allora qua o c'e' un errore oppure c'e' uno sbaglio, una delle tre
La domanda finale quindi e': com'e' sta storia che quando avvio il file batch il malefico pippo.jar considera la File.DirApp = c:\users\user1\document ?
Questa procedura dispone di un file per la propria configurazione PIPPO.INI, dove tra le altre cose e' scritto il server key per necessario per l'invio verso i sistemi Firebase
Il file ini se non presente all'avvio viene creato automaticamente col seguente codice
B4X:
'Check if the settings file exists, else create a new file
Public Ini_File As String = "pippo.ini"
If File.Exists(File.dirapp, Ini_File) Then
SettingsMap = File.ReadMap(File.DirApp, Ini_File)
Else
'Create a new map and save
SettingsMap = CreateMap ("Creazione": DateTime.date(DateTime.now))
File.WriteMap(File.DirApp, Ini_File, SettingsMap)
End If
Stessa cosa per un file PIPPO.TXT che uso per passare i comandi da programma esterno alla procedura jar, se non presente viene creato e scritta riga iniziale 'Creazione:...'
Allora, se avvio il tutto da ide funziona tutto come atteso (almeno come mi attendo io), sia il file pippo.ini che il file di testo pippo.txt vengono creati/letti dalla directory dov'e' il jar (quella che dovrebbe essere la File.DirApp dentro al codice)
Una volta completato il programma, per avviare in esecuzione il jar uso un file pippo.bat con dentro 'java -jar c:\dev\superprogetto_xyz\pippo.jar'
Pippo.bat e' nella stessa directory di pippo.jar
Il problema sta nel fatto che quando da sistema operativo doppio-clicco su pippo.bat mi aspetterei che il jar venga eseguito e quindi se mancanti il pippo.ini e pippo.txt se li autocrei
Niente, me li crea dentro c:\users\user1\document
Mentre se doppio-clicco direttamente su pippo.jar sia il file pippo.ini che il file pippo.txt me li autocrea correttamente nella stessa directory di pippo.jar
Quindi quel File.DirApp dentro al codice in realta' non indica la directory dove e' attualmente il jar
Windows 10 pro
Allora qua o c'e' un errore oppure c'e' uno sbaglio, una delle tre
La domanda finale quindi e': com'e' sta storia che quando avvio il file batch il malefico pippo.jar considera la File.DirApp = c:\users\user1\document ?