Newsgroup: it.comp.lang.visual-basic
Titolo: auto-aggiornamento programma

Vorrei che un mio prog, su richiesta, si collegasse con un sito web, e se
trova un certo file scarica un aggiornamento di sè stesso.
volevo solo sapere com'è meglio farlo...
lancio una semplice shell ftp? uso inetcontrol? winsocket?
il problema di ftp è che devo fornire la password... che è la stessa che io
uso per aggiornare il sito...
accedendo via http non serve pwd
... e poi come aggiorno "me stesso"? non posso autoriscrivermi. lancio un
.bat?
grazie

 ha scritto nel messaggio
news:btja1e$7o2as$1...@ID-77234.news.uni-berlin.de...

Se non sbaglio c'è qualcosa su IoProgrammo di questo mese che fa quello che
dici tu ed è gratuito!
Ciao, Vincenzo

 ha scritto nel messaggio
news:btjdad$7qfh0$1...@ID-207068.news.uni-berlin.de...

che è, 'na rivista?
non c'è online?

 non c'è online?
sì, è cartacea e anche ovviamente online, 
www.ioprogrammo.it
.
Si basa che un ocx da installare in locale e una sorta di piccolo file
scritto (per quanto ne so) in un linguaggio simil-Perl, che praticamente
dice la release di ciascun file e così via....
non l'ho provato, quindi.....boh.....
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

 ha scritto nel messaggio
news:btjdad$7qfh0$1...@ID-207068.news.uni-berlin.de...

ho visto sul sito, ma temo sia "liveupdate" di symantec... non va bene per
me

 -- 
ah, allora non l'ho visto...

 me
NO NO, si chiama LiveUpdate, come quello di Symantec, ma è tutta un'altra
cosa.....usa la stessa finestra di dialogo.....dagli un'occhiata....
io onestamente star lì a diventare matto ad imparare il linguaggio con cui
bisogna scrivere il file sul server mi viene la morte nel cuore....ho
preferito scrivere un engine tutto mio che non è ancora terminato, perchè
l'ho un po' accantonato.....
sarebbe da mettere sul SC e farlo vedere un po' a tutti, potrebbe <anche>
funzionare.....


 l'ho un po' accantonato.....
per me potrebbe essere una cosa molto sempliciotta:
sul server metto un file pippo.exe-010203 che significa che è l'exe versione
1.2.3
il client, a richiesta, chiede al server cos'ha di bello, lo paragona con se
stesso e nel caso fa il download
... il mio problema in realtà è solo come fare il download...
 via ftp? ma dovrei dare una pwd, e sarebbe poi la stessa che io uso per
aggiornare il sito... non se ne parla.
sarebbe facilissimo... lancio la shell di un .bat e via... ma la pwd non se
ne parla.
via http? come si fa SEMPLICEMENTE da vb?
cià

 cià
beh, io ho previsto un po' di tutto.....piccoli esempi che ho affrontato:
1) mica è detto che è sempre e solo l'exe che deve essere aggiornato. Gran
parte degli applicativi hanno dll/ocx/report di stampa/documenti word che
vengono distribuiti. Supponi di fare un report con crystal report; un bel
giorno ti accorgi che il report è bacato (ordina male i record, oppure le
formule che hai messo hanno qualche problema), allora lo devi rifare. Ok, a
questo punto sarebbe bello che il software venga aggiornato solo per quel
file. Bisogna fare il download di quel file, e sovrascrivere quello
vecchio.........
2) stesso discorso per le dll o gli ocx che devono essere registrati......
come vedi, quindi, mi sembra semplicistico far scaricare solo l'exe, anche
per problemi di banda. Magari il tuo exe è grande 11Mb, mentre in realtà al
cliente serve solamente il file rpt da 45Kb, cosa fai?!?!?!
Gli fai scaricare tutto!?!?!?!? 11Mb non sono poi tanti, è vero, ma è il
concetto che conta.....


 ... il mio problema in realtà è solo come fare il download...
Molto semplicemente usi Inet (Internet Transfer Control) lo trovi tra i
componenti standard di Vb.
Mi pare ci siano degli esempi sul sito comune e trovi un mucchio di
documentazione su MSDN e google cercando in questo gruppo, se hai dei dubbi
mandami una mail, che se posso una mano la do più che volentieri.
questo è il mio indirizzo
chr(114) & chr(117) & chr(115) & chr(99) & chr(101) & chr(108) & chr(108) &
chr(105) & chr(64) & chr(105) & chr(110) & chr(116) & chr(101) & chr(115) &
chr(97) & chr(99) & chr(111) & chr(111) & chr(112) & chr(46) & chr(99) &
chr(111) & chr(109)
è in ascii per via degli spammer, ti basterà convertirlo.
Bye!
-- 
Le persone non sono il proprio comportamento: devi sempre andare oltre,
essere flessibile, capire il punto di vista degli altri, interpretarne i
comportamenti ed intuirne le esigenze.
Per rispondere in privato elimina
dall'indirizzo "togliquesto"
MasterDavidex
David Ruscelli

 vengono distribuiti.
E' risolvibile creando un file di versione per ogni componente, ovvio che se
i componenti cominciano ad essere tanti la questione si complica.
Poi fai in modo che dal sito venga scaricato un minipacchetto che comprenda
il componente da aggiornare ed un exe che esegue l'operazione di
aggiornamento, per sovrascrivere file in uso c'è sempre la chiave runonce
del registro di sistema.


 del registro di sistema.
io ho risolto creando un file XML contenente per ogni file che compone il
mio software tutta una serie di informazioni come nome del file, source da
cui scaricare, descrizione, versione, criticità del file, firma sha,
etc......
ho due file XML: uno in locale (su ciascun PC) ed uno sul server (che
manutengo io quando c'è bisogno).
quando l'utente lancia l'update, viene scaricato il file xml remoto, viene
controllata la release di *ciascun* file e quelli che devono essere
aggiornati vengono scaricati ed installati......
poi ogni tipologia di file viene installato in maniera diversa: gli exe (e
gran parte dei files) vengono semplicemente copiati, altri invece vengono
registrati (ocx, per esempio) e così via....
il download avviene attraverso http, ho usato le funzioni API di explorer
che si appoggiano tra l'altro sulla cache del browser......così se il
download si era interrotto, riprende dal punto da dove mi ero fermato....
good coding!!!
Frank Ottobre: "Io uccido" di Giorgio Faletti......giusto? ho
indovinato?!?!?!?!
;-)))


 componenti standard di Vb.
... ti faccio solo questa domanda: con inetcontrol posso fare un ftp, ma
volevo evitare l'ftp perchè devo fornire una password.
Vorrei quindi fare un download "via http", come quello che ottieni quando
clicchi su un link internet... per questo non occorre alcuna password.
Sai darmi una mano su questo aspetto?
Grazie.

 ;-)))
Hai indovinato.. :-)


 Sai darmi una mano su questo aspetto?
La proprietà protocol ti permette di selezionare HTTP FTP e altre amenità


 download si era interrotto, riprende dal punto da dove mi ero fermato....
WOW! spiegheresti come si fa?   :-)

 La proprietą protocol ti permette di selezionare HTTP FTP e altre amenitą
grazie, provo.

 Hai indovinato.. :-)
bene, ho buona memoria, allora......
good coding!!!


 WOW! spiegheresti come si fa?   :-)
adesso no, non ho il codice sotto mano e non ricordo il nome delle API.
Avevo fatto delle ricerche su 
groups.google.com
 e diverse persone ne hanno
parlato, non ho fatto altro che adattare il loro codice....
comunque è tutto automatico. C'è un API dove gli dico il file da scaricare.
Se il file è già stato scaricato, lo scarica d'un botto prendendolo dalla
cache.....
tra l'altro, era una bella procedura, perchè visualizzava anche i Kb
scaricati rispetto ai Kb totali, così l'utente può tenere sott'occhio se
qualcosa si inchioda o succede qualcosa che non va bene.....
good coding!!!


 ha scritto nel messaggio
news:btjoue$85i11$1...@ID-134521.news.uni-berlin.de...

facciamo così: se tu pensi di poter trovare un pezzettino di codice, nei
prossimi giorni, e non ti costa nulla metterlo qua, io ti sono gratissimo e
non rifaccio l'invenzione dell' H2O calda... attendo fiducioso un tuo post
su questo 3ad...
...altrimenti mi sbatto e cerco cosa mi hai suggerito.
mi dici qualcosa?
grazie.

 grazie
entro le ore 20 di oggi avrà almeno un pezzettino di codice, la
dichiarazione delle API che ti servono e vedrai che ne sarai
soddisfatto.....
parola di Alletun, good coding!!!


NNNNNNNNNNOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MI SONO DIMENTICATO!!!!!!!
:-(((


 > grazie
purtroppo, preso da Kotor, mi sono proprio dimenticato di darti e postare il
codice. Il massimo che posso fare è cercare qualcosa su google. Allora,
vediamo un po'. L'api è questa:
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long
e la puoi usare con questa function:
Public Function DownloadFile(URL As String, LocalFilename As String) As
Boolean
   Dim lngRetVal As Long
   lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
   If lngRetVal = 0 Then DownloadFile = True
End Function
ti chiedo scusa pubblicamente, però mi sono proprio dimenticato.......
:-(


 vediamo un po'. L'api è questa:
E l'api per registrare i componenti?
Anche solo il nome...

 ha scritto nel messaggio
news:btlnro$8eoce$1...@ID-134521.news.uni-berlin.de...

GRAZIE MOLTE!

 GRAZIE MOLTE!
:-((
purtroppo questo č nulla rispetto a quanto ti avrei postato su mi fossi
ricordato.....
non ricordo come facevo, ma in questo modo riuscivo anche a mostrare tramite
progress-bar o su una label il numero di Kb scaricati e mancanti, veramente
una figata.......
