Newsgroup: it.comp.lang.visual-basic
Titolo: Update automatico

Salve ragazzi,
per l'aggiornamento di un programma mi farebbe comodo svincolarmi dalle
solite perdite di tempo:
- realizzare l'update
- copiarlo su cd o eseguire l'upload su spazio web
- recapitare il cd o avvertire il cliente di scaricare l'aggiornamento
- installare materialmente l'aggiornamento sul client nel caso di utenti
poco esperti
Sull'esempio del Live Update della Norton sto progettando una procedura che
verifichi in automatico la presenza di aggiornamenti con il client connesso
a Internet; in modo totalmente trasparente al cliente finale.
Questo argomento č stato saltuariamente trattato nel NG ed il metodo della
verifica di un checksum tra software installato e software presente su uno
spazio web č la soluzione piů efficace.
Qualcuno ha soluzioni differenti o tecniche da suggerire?
A presto
Fabio

 Qualcuno ha soluzioni differenti o tecniche da suggerire?
Entriamo nel mio campo :-))
Allora...
La soluzione che adottiamo noi, e che ritengo sinceramente molto bella, è
quella di mettere la logica applicativa dentro ActiveX, Controlli o
Documenti.
Nel caso dei Documenti ActiveX, abbiamo una soluzione ideale per grosse
intrante, dove ci sono molti client distribuiti per l'azienda. In sostanza,
un piccolo server IIS interno rende pubblici i documenti ActiveX.
L'applicativo gira sul client, ma all'interno di una sessione IE, per cui è
lo stesso IE a verificare che la Dll di supporto presente sul client sia
compatibile con ogni documento ActiveX del progetto. Quando c'è una nuova
versione, basta copiare i file della versione nella cartella IIS, e al primo
accesso ogni client si autoaggiorna automaticamente (c'è giusto un avviso di
IE a cui occorre dare OK). E' una soluzione affidabilissima e molto semplice
da realizzare. Lo stile di sviluppo è pressochè identico ad un progetto
classico con Form.
Nel caso dei controlli ActiveX, il contenitore può essere IE o una form. Se
si decide di usare IE, la gestione della distribuzione è assolutamente
identica a quella dei Documenti ActiveX. Se invece si utilizza una form come
container, la procedura è questa:
- Sviluppare TUTTO il progetto dentro al controllo ActiveX (considera che un
controllo ActiveX può essere a sua volta container per altri controlli, e
può chiamare anche form modali).
- Realizzare un progetto con una form che contiene il nostro controllo
ActiveX. Questo sarà l'applicativo da distribuire inizialmente al cliente
- Realizzare un piccolo progetto ActiveX Document o UserControl, che
contenga solamente il nostro ActiveX principale, e che non faccia altro che
visualizzare un messaggio del tipo "Aggiornamento completato". Questo
progetto sarà distribuito su un qualunque spazio web, anche di quelli
gratuiti, e il cliente avrà il link. Quando occorre aggiornare un client,
basta che l'utente si colleghi al link di questo progetto, e IE si occuperà
di registrare il controllo ActiveX, aggiornato, sulla macchina target.
Siccome tutta la logica applicativa è dentro all'ActiveX, aggiornando questo
si sarà aggiornata l'intera applicazione. Volendo, il collegamento al link
potrà essere schedulato nelle attività di sistema, o invocato direttamente
da applicativo, ecc...
E' un po' contorto da leggere, ma credimi che si tratta di una pratica molto
semplice (se si ha ben chiaro come funziona l'installazione di applicativi,
riferimenti e controlli). Una volta preso confidenza con la tecnologia,
usare form, ActiveX Document o ActiveX Control diventerà equivalente.
Ciao
Alberto

 spazio web è la soluzione più efficace.
A mio parere è un metodo troppo affamato di banda.
Molto meglio leggere il numero di versione del programma in locale, e
scaricarsi dal sito un piccolo file di testo che contenga solo il numero di
versione dell'eseguibile che hai messo online. Se quel numero è maggiore di
quello in locale, scarichi l'update (è un setup, vero?) lo lanci ed esci dal
programma.
L'unico piccolo inconveniente, è che ogni volta che metti online una nuova
versione devi anche aggiornare questo file di testo, ma se proprio temi di
dimenticartene puoi sempre fare un programma che automatizzi anche questa
procedura.
Ciao
*Roby*

 compatibile con ogni documento ActiveX del progetto.
Molto interessante.
Nel mio caso si tratta di una rete geografica e preferirei che il server
remoto fosse solo uno spazio web, ma con un po' di fantasia penso si possa
utilizzare questa tecnica.
Grazie per il consiglio
Fabio

 programma.
Verissimo.
La soluzione migliore è effettivamente il confronto tra due report testuali
di pochi bytes.
A quel punto può essere scaricato il solito setup (Il mattone da evitare se
possibile) e/o alcune tabelle di configurazione.
A presto
Fabio

 utilizzare questa tecnica.
C'è un solo punto da considerare: il server web può benissimo essere uno
spazio gratuito (visto che di fatto è solamente un distributore di file), ma
deve essere disponibile per il client ogni volta che si passa da un Document
ad un altro. In Intranet, come dicevo, va benissimo. Per Internet, va bene
se c'è una connessione fissa. Ogni Document occupa pochi bytes, per cui non
ci sono problemi di banda, ma IE verifica la versione della Dll che ha in
locale con quella che è marcata dentro al document, per cui se non hai la
connessione, e IE non riesce a scaricare il Document, l'applicativo si
inchioda.
Con l'altra modalità, quella dell'ActiveX control dentro ad una form,
l'update avviene su richiesta o su schedulazione, per cui la connessione può
anche non esserci, per poter operare.
Ciao
Alberto

 versione devi anche aggiornare questo file di testo!
se lasci il setup senza zippare si puo' usare il "setup.lst" come file di
riferimento , cosi non devi nemmeno preoccuparti del file di testo !!!


Io ho realizzato un piccolo server exe che viene installato con
l'applicazione nella
cartella di avvio automatico.  Esso rileva un file di schedulazione per
confrontare
una stringa di versione che viene salvata in un file locale dove possono
essere
elencate + applicazioni di produttori diversi (sono stato ottimista :-) ).
Inoltre dispone di un metodo per invocare il controllo direttamente da una
applicazione client.
Viene installato nell'avvio automatico perchè continua a verificare se il PC
in cui
gira si è connesso ad Internet, nel cui caso esegue una connessione al
server
remoto per il download delle novità attraverso una chiamata particolare ad
un
server HTTP (evitando eventuali problemi di proxy  - il server può non
inviare mai
il codice 304 -  e firewall).
Il server (quello HTTP online) mantiene un database degli applicativi
registrati con
relativa versione.
Il file da scaricare può trovarsi ovunque (su internet).
Se viene rilevato che deve essere scaricato un aggiornamento il server invia
una notifica al programma registrato per chiuderlo, scarica il file e avvia
il setup
di aggiornamento.  Può inoltre essere usato per scaricare file tipo adware.
Il programmino merita una revisione, magari anche per adeguarsi a varie
esigenze,
se esiste un interesse sono disponibile a rilasciarne i sorgenti (è scritto
in VB) .
Scrivere a:     clod  @   ghnet  .  com .
Saluti, Clod.

 Saluti, Clod.
se puoi inviarlo al webmaster del sito comune (v. sotto), sarebbe
davvero meritorio.
grazie e ciao
--
www.it-lang-vb.net