Autore Topic: installare una dipendenza in fase di installazione pacchetto  (Letto 1943 volte)

Offline kirner

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Salve a tutto il gruppo,

mi domandavo se era possibile istruire il pacchetto di installazione ad installare anche una dipendenza non inerente a gambas.

mi spiego meglio ho fatto un frontend per un tool testuale, ma dovrei in fase di installazione del pachetto fargli anche installare il tool.

ok grazie a chi puo' darmi qualche dritta :)

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #1 il: 28 Maggio 2008, 18:11:30 »
Ciao.

Secondo me è meglio che il tuo frontend verifichi
la presenza del tool sul sistema. Nel caso che non ci sia
metti un messaggio all'utente che spieghi dove reperire il tool.
In teoria, potresti anche installare direttamente il tool, ma non è
detto che l'eseguibile del tool compilato sul tuo sistema vada bene
anche nel sistema che dovrà  ospitarlo.

Offline kirner

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #2 il: 29 Maggio 2008, 09:11:11 »
grazie, anche se non e' proprio come avevo intenzione di fare, mi hai dato una bella idea.

Thx ;)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #3 il: 29 Maggio 2008, 14:37:38 »
Comeunque, ad oggi, gambas non prevede l'inclusione di file esterni durante la creazione dei pacchetti.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #4 il: 29 Maggio 2008, 16:18:04 »
Citazione

md9327 ha scritto:
Comeunque, ad oggi, gambas non prevede l'inclusione di file esterni durante la creazione dei pacchetti.


Più o meno. Se nel tuo progetto metti una cartella con files di tuo interesse,
questa viene inglobata nell'eseguibile e all'occorrenza i files possono essere
estratti e usati. Allego un piccolo esempio per spiegare la procedura.

Offline kirner

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #5 il: 30 Maggio 2008, 09:41:40 »
Citazione

giulio ha scritto:
Citazione

md9327 ha scritto:
Comeunque, ad oggi, gambas non prevede l'inclusione di file esterni durante la creazione dei pacchetti.


Più o meno. Se nel tuo progetto metti una cartella con files di tuo interesse,
questa viene inglobata nell'eseguibile e all'occorrenza i files possono essere
estratti e usati. Allego un piccolo esempio per spiegare la procedura.



Grazie per l'allegato,

anche se nel caso specifico ho risolto diversamente, mi e' tornato molto utile e ne ho compreso l'utilita' mi servira' per il futuro.
Grazie ancora!

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #6 il: 30 Maggio 2008, 15:18:41 »
Bravo Giulio, questa mi giunge nuova e pure inaspettata...
Ho letto le poche ma esplicative righe del tuo esempio, e la cosa mi lascia di stucco, nonchè perplesso.
Ovviamente stasera lo provo, la cosa mi interessa molto perchè spiega molte cose su Gambas, oltre al fatto che amplia i confini di quello che ci si può fare...
La cosa brutta è che, credendolo impossibile, non ho mai provato a farlo...
La stranezza è il come gambas riesca a capire da dove prelevare il file, dato che questo è inglobato nell'eseguibile...
La mia domanda, prima di provarlo stasera a casa, è: il nome "mybin" all'interno della COPY, viene interpretato non come directory, ma come puntamento all'eseguibile stesso, e rilevandone il file interno di conseguenza... è giusto? Ovvero, se non lo trova nella vera directory, allora lo cerca all'interno di se stesso ?

Stà cosa sembra più un'anomalia che una cosa voluta, ma ad ogni modo se funziona è la benvenuta, perchè con questo giochetto si potrebbero fare delle belle cosette....

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #7 il: 30 Maggio 2008, 16:39:27 »
Ciao.

Spiego come posso :-)

COPY "mybin/feed" TO sTmpBin

All'interno della cartella del progetto ho creato la
cartella "mybin". Dentro "mybin" c'è l'eseguibile "feed".
Comunque quando aprirai il progetto nell'IDE, tutto sarà chiaro.

Bisogna però sempre usare COPY, cioè estrarre il file d'interesse dall'eseguibile Gambas, nel caso di binari da eseguire con SHELL o EXEC. Se per esempio
mettessi il comando:

SHELL "mybin/feed" WAIT

non funzionerebbe. Una volta chiesi a Benoit il perché di questo
comportamento. Adesso andrò a spulciare gli archivi per vedere se ritrovo la risposta esatta, ma mi pare di ricordare che mi rispose che l'eseguibile diventa
una specie di filesystem (più o meno) con tutte le cartelle del progetto
al loro posto. Quindi se cerco "mybin/feed" Gambas lo cerca in pratica dentro "eseguibilegambas/mybin/feed". Dentro "mybin" ci posso mettere
tutti i file che voglio.  

A livello IDE, invece dovrei dargli il percorso
assoluto con Application.Path &/ "mybin/feed"

SHELL Application.Path &/ "mybin/feed" WAIT

funziona nell'IDE, ma una volta compilato non va più bene,
a meno che non esista un file "mybin/feed" dove stai eseguendo l'eseguibile Gambas.

In fine, pare che il dovere di estrarre il file valga solo per SHELL e EXEC.
Infatti con altri file non c'è bisogno di estrarli per visualizzarli o usarli, ma questo sicuramente lo sai. Lo scrivo per scrupolo. Ad esempio nei
miei progetti metto sempre una cartella "icone" se mi servono icone particolari,
una "docs" per le licenze.

Se nella cartella "docs" metto la licenza GNU-GPL.txt, mi basta fare
TextArea1.Text = file.load("docs/GNU-GPL.txt")

Chiudo avvertendo che magari l'eseguibile "feed" che ho incluso nel progetto,
potrebbe anche non andare bene nel tuo sistema (glibc diverse o altre dipendenze).
Nel caso, una volta compilato il progetto e lanciato dovresti vedere questo messaggio in console:

Usage:

feed input output widthxheight(in) rgb24|yuv420p

example: feed /dev/video0 /dev/video1 352x288 yuv420p



Saluti.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #8 il: 30 Maggio 2008, 17:25:52 »
Citazione


Bisogna però sempre usare COPY, cioè estrarre il file d'interesse dall'eseguibile Gambas, nel caso di binari da eseguire con SHELL o EXEC.



Aggiungo: non solo i binari inglobati, ma anche gli script inglobati.
Insomma, bisogna usare COPY per tutti quei file inglobati nell'eseguibile che vogliamo lanciare con SHELL o EXEC.

Saluti

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #9 il: 30 Maggio 2008, 18:58:45 »
Hai fatto un esempio corretto con le immagini...

In genere, un'applicazione gestisce icone o immagini (vedi menu), che normalmente metti in una sotto cartella (es. /images); quando crei l'eseguibile, si è notato che gambas include tutto quello che si trova dentro la cartella del progetto, incluse le sottocartelle. Ovviamente questo incrementa le dimensioni finali dell'eseguibile ma, finora, pensavo che questo fosse un errore...
Da quanto mi dici, invece la cosa diventa sicuramente un vantaggio, perchè alla fine potresti avere tutto in un singolo file, eliminando cartelle ecc., che potrebbero essere cancellate per errore.
Se mettiamo che si voglia caricare l'immagine della form About dell'applicazione...
Dato che l'eseguibile si è inglobata anche questa immagine, secondo quello che affermi, basterebbe eseguire una COPY TO , per avere a disposizione l'immagine su disco, per poi caricarla con load.

E' corretto quello che dico?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #10 il: 30 Maggio 2008, 20:21:35 »
Citazione

md9327 ha scritto:
Hai fatto un esempio corretto con le immagini...

In genere, un'applicazione gestisce icone o immagini (vedi menu), che normalmente metti in una sotto cartella (es. /images); quando crei l'eseguibile, si è notato che gambas include tutto quello che si trova dentro la cartella del progetto, incluse le sottocartelle. Ovviamente questo incrementa le dimensioni finali dell'eseguibile ma, finora, pensavo che questo fosse un errore...
Da quanto mi dici, invece la cosa diventa sicuramente un vantaggio, perchè alla fine potresti avere tutto in un singolo file, eliminando cartelle ecc., che potrebbero essere cancellate per errore.
Se mettiamo che si voglia caricare l'immagine della form About dell'applicazione...
Dato che l'eseguibile si è inglobata anche questa immagine, secondo quello che affermi, basterebbe eseguire una COPY TO , per avere a disposizione l'immagine su disco, per poi caricarla con load.

E' corretto quello che dico?


Sì è corretto.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #11 il: 30 Maggio 2008, 20:39:19 »
EDIT:

Sì è corretto, anche se non capisco l'esempio che hai fatto. Perché non fare:

ME.Picture = picture["images/immagine"]

che senso ha tirarla fuori dall'eseguibile e poi caricarla?
Sicuramente c'è un motivo che mi sfugge.
Saluti.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #12 il: 31 Maggio 2008, 13:37:35 »
Il motivo è semplice, le funzioni di libreria non vedono quello che è presente all'interno dell'eseguibile, e quindi è necessario copiarla su una cartella reale del sistema operativo.
Il metodo Load dell'oggetto Picture, necessita di vedere dove andare a prendere il file, ma questo non deve trovarsi all'interno di un'altro; è come se volessi leggere un file all'interno di uno zip, devi prima estrarlo. Questo lo fà normalmente, ad esempio, konqueror che estrae prima i file nella temp del sistema, poi te li fà vedere.

A suo tempo avevo tentato di fare una cosa simile in Gambas, ma non avevo sperimentato il semplice comando COPY, per cui non riuscivo... Grazie alla dritta di Giulio, la cosa apre orizzonti molto simpatici...

Ciao

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: installare una dipendenza in fase di installazione pacchetto
« Risposta #13 il: 31 Maggio 2008, 18:29:42 »
Citazione


Il motivo è semplice, le funzioni di libreria non vedono quello che è presente all'interno dell'eseguibile, e quindi è necessario copiarla su una cartella reale del sistema operativo.
 


 funziona il metodo

me.picture=picture.load("immagini/immagine.png")

io lo uso da sempre