Newsgroup: it.comp.appl.access
Titolo: aggiornamento automatico via web

un piccola curiosità...ma qualcuno di voi ha già realizzato qualche
procedura per l'aggiornamento automatico dei propri programmi?
Una procedura che di tanto in tanto testi se su un sito (ftp) è
disponibile una versione più aggiornata del FE attualmente in uso.
Pro: quando ti accorgi che il tuo software ha un problema, basta che
ne metti una versione patchata sul server FTP ed hai risolto..senza
fare il giro di tutti i clienti :P
Contro:
Ci vuole un pochino di tempo per sviluppare questa cosa..mentre invece
mandare una mail a tutti i clienti con un link costa tempo di sviluppo
zero :)
voi che dite?

 ha scritto nel messaggio 
news:bd4d9a6e-0aad-45b3...@m3g2000hsc.googlegroups.com...



voi che dite?
--------------------
Considerando il fatto che devi comunque chiudere il FE prima di fare 
l'aggiornamento, a meno di usare un secondo db per l'aggiornamento, credo 
che la seconda soluzione sia quella da preferire (mandare una e-mail con il 
link all'aggiornamento che risiede su un sito ftp).
Almeno io uso questo sistema, in accoppiata con WinRar che mi crea un file 
.exe e che va a sostituire il FE nella cartella dove è installato.
Ciao, Carlo

 ha scritto nel messaggio 
news:bd4d9a6e-0aad-45b3...@m3g2000hsc.googlegroups.com...



voi che dite?
------------------
Risposta :
Pro : Tutti quelli che hai esposto (quindi tantissimi)
Contro : Nessuno (tranne l'obbligo di connettività attiva per i clienti 
almeno nel momento dell'accesso... ma con le ADSL ormai di questi problemi 
non ve ne sono poi tanti)
Io uso da sempre tale procedura, e onestamente mai avuto problemi... e poi 
non ci vuole tanto tempo per crearla (ovviamente se poi ti applichi con i 
fronzoli il tempo aumenta... io ovviamente mi sono applicato pure per quelli 
:-D )
-- 
---
Ciao
Pablitomf 

 applicato pure per quelli :-D )
Interessante...
potresti scendere un pò più nei dettagli?
Grazie
Gianni 


appunto.. :D che ne dici di spiegarci meglio il tuo modo di fare? :P

 ha scritto nel messaggio 
news:2465fb9c-f781-44e3...@8g2000hsu.googlegroups.com...


appunto.. :D che ne dici di spiegarci meglio il tuo modo di fare? :P
Denomino gli aggiornamenti con i numeri... bhè diciamo che io di BE ne ho 5 
per cui faccio 5 diversi aggiornamenti... per cui su server FTP mi troverò 
ad es. :
AGG1_096.EXE
AGG2_045.EXE
AGG3_112.EXE
AGG4_254.EXE
AGG5_738.EXE
Dove
AGG1 è il tipo di BE a cui si riferisce
096 è il numero progressivo al quale l'aggiornamento stesso è arrivato
exe è l'estensione eseguibile del file (visto che faccio fare poi all'exe le 
sostituzioni e/o aggiunte di files/cartelle/registrazioni da fare)
oltre ad avere questi exe sul server FTP, ne avrò altrettanti anche sul PC 
client remoto che voglio si aggiorni...
come funziona sta cosa :
da un DB esterno (da cui partirò sempre per arrivare ad aprire quello 
master) interrogo con il codice opportuno i files exe nella cartella locale 
AGG/ e ad uno ad uno, aumentando il nome degli stessi di 1 in modo tale da 
avere la versione successiva del file esistente in locale (Es. Locale 
AGG1_096.exe trasformo variabile in AGG1_097.exe), verifico connettendomi al 
server FTP l'esistenza di un file avente il nome della variabile (in questo 
caso AGG1_097.exe) se c'è, faccio partire lo scaricamento (poi a 
scaricamento terminato lo eseguo pure attendendone la fine)... e così via 
per tutti e 5 i files che mi interessano... (ovviamente se non ve ne sono, 
non aggiorno nulla)... alla fine di tutto sempre da codice poi avvio il mio 
mde primario (che ha sempre lo stesso nome), eventualmente sostituito dagli 
aggiornamenti appena fatti.
Spero di esser stato chiaro
-- 
---
Ciao
Pablitomf 

 ha scritto nel messaggio 
news:fs6jq9$voj$1...@tdi.cu.mi.it...

hahahahahhahahhhhhaahhaha :-D 

"geppo" <c...@tin.it.invalid> ha scritto nel messaggio 
news:SKAFj.273766$%k.39...@twister2.libero.it...

Scappato "INVIA" ;-) 


E come fai se devi mettere un aggiornamento che 'salta' un numero ad esempio 
l'AGG_097.EXE non desideri distribuirlo e vuoi passare direttamente al 
AGG_099.EXE ?
Inoltre, come fai se desideri far 'tornare indietro' i client perche' un 
aggiornamento sta provocando dei problemi non previsti ?
Ciao
RobertoA

 RobertoA
Ciao
-- 
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader 
http://newsgroup.alice.it
Gerarchie it, italia, it-alt, tin, it.binari. Unico!

 della ricerca.
No, non l'ho dimenticato...l'ho omesso perchè di fatto io il 
nome del file non lo tocco per niente... l'aumento di 1 lo 
faccio su una variabile che poi ha il compito del confronto su 
quello trovato in FTP... infatto poi appena scaricato poi la 
vers precedente la cancello sostituendola in AGG con quella 
appena scaricata...
;-)
Pablitomf


 -- 
Ciao, Carlo 

ma che metodo usi per collegarti al sito ftp?


La domanda è rivolta a me...o a PablitoMF?
Ovviamente ho acquistato un dominio e vi accedo come e quando voglio.
I clienti scaricano l'aggiornamento perchè mando loro il link al file in un 
messaggio di posta.
Ciao, Carlo 

 ma che metodo usi per collegarti al sito ftp?
cos'è che intenderesti per "motodo"?


 cos'è che intenderesti per "motodo"?
Probabilmente intendeva "..che istruzioni usi in Access, per leggere un file 
da un server ftp.."


esatto..in questo NG la parola "metodo" ha diversi significati!!! :D
ho googlato un pochino ed ho trovato veramente poco.
sul sito mvp ho trovato un'articolo "Internet Data Transfer Library"
all'indirizzo 
http://www.mvps.org/access/modules/mdl0037.htm
ma forse a causa di vista non funziona.
poi sul sito di alex ho notato che ha utlizzato l'activex
MSXML2.XMLHTTP per scaricare il codice hmtl di una pagina..ma non so
se può essere utile anche per il download di un file binario...

 ha scritto nel messaggio 
news:e0bf8f9f-4cec-4664...@q78g2000hsh.googlegroups.com...


--------------------------------
Ti posto quello che faccio io per verificare una connessione tramite modem:
In un modulo pubblico:
Option Compare Database
Option Explicit
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public ReturnCode As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
hKey As Long) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName _
As String, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long
Public Function ActiveConnection() As Boolean
On Error Resume Next
  Dim hKey As Long
  Dim lpSubKey As String
  Dim phkResult As Long
  Dim lpValueName As String
  Dim lpReserved As Long
  Dim lpType As Long
  Dim lpData As Long
  Dim lpcbData As Long
  ActiveConnection = False
  lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
  ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, _
  phkResult)
  If ReturnCode = ERROR_SUCCESS Then
         hKey = phkResult
    lpValueName = "Remote Connection"
    lpReserved = APINULL
    lpType = APINULL
    lpData = APINULL
    lpcbData = APINULL
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, ByVal lpData, lpcbData)
    lpcbData = Len(lpData)
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, lpData, lpcbData)
  If ReturnCode = ERROR_SUCCESS Then
  If lpData = 0 Then
    ActiveConnection = False
  Else
    ActiveConnection = True
  End If
  End If
    RegCloseKey (hKey)
  End If
End Function
'Usa la funzione ActiveConnection come nell'esempio:
'If ActiveConnection = True Then
'MsgBox "Hai una connessione attiva.", vbInformation
'Else
'MsgBox "Non hai una connessione attiva.", vbInformation
'End If
In una maschera di aggiornamento:
If ActiveConnection = True Then
    MsgBox "Ora il programma provvede a scaricare il file di Aggiornamento." 
& vbCrLf & _
    "Al termine, chiudere il programma del xxxxxx e fare doppio clic sul 
file scaricato." & vbCrLf & _
    "Eseguito l'aggiornamento far ripartire il programma del frantoio."
    Me.Etichetta46.HyperlinkAddress = "
http://www.xxxxxx.com/Aggxxxx.exe
"
    Else
    MsgBox "Nessuna connessione con modem attiva. Attivare una connessione e 
riprovare."
    Exit Sub
    End If
Se invece il cliente ha una ADSL mi basta mettere una etichetta con 
http://www.XXXXXX.com/Aggxxxx.exe
in "Indirizzo Coll. Ipertestuale".
Siccome gli aggiornamenti che invio sono cumulativi e siccome il file di 
agg. è sempre e solo uno, il cliente non potrà mai fare danni...avrà 
comunque la versione più aggiornata anche se la dovesse installare molte 
volte.
Ciao, Carlo 

 ha scritto nel messaggio 
news:e0bf8f9f-4cec-4664...@q78g2000hsh.googlegroups.com...
esatto..in questo NG la parola "metodo" ha diversi significati!!! :D
ho googlato un pochino ed ho trovato veramente poco.
[risposta]
Strano.
sul sito mvp ho trovato un'articolo "Internet Data Transfer Library"
all'indirizzo 
http://www.mvps.org/access/modules/mdl0037.htm
ma forse a causa di vista non funziona.
poi sul sito di alex ho notato che ha utlizzato l'activex
MSXML2.XMLHTTP per scaricare il codice hmtl di una pagina..ma non so
se puň essere utile anche per il download di un file binario...
[risposta]
se vuoi una alternativa: 
http://activex.sourceforge.net/esftp.html
Ciao.
-- 
Sergio MAZZA 

 voi che dite?
ti dico una ulteriore cosa a corredo... ATTENZIONE AL BROWSER 
IE7... con gli accessi FTP da codice vi sono notevoli e noti 
problemi... tant'è che ho dovuto disattivarne l'aggiornamento  
da windows sui PC che necessito tenere aggiornati. IE7 di per se 
non tratta l'accesso all'FTP come faceva il suo predecessore 
IE6, pertanto vi sono difficoltà al momento che non ho studiato 
ancora... li affronterò a breve e magari vi terrò aggiornati.


 aggiornati.
Ovviamente ripristinando la vers. di IE6 tutto torna a 
funzionare alla meraviglia. Per cui se poni tale procedura e ti 
accorgi che il download non va, bhè si è installato 
l'aggiornamento IE7... disinstallalo e panta rei free. ;-|


 voi che dite?
Dico che nel periodo Pasquale con la pastiera e il casatiello 
sullo stomano non si dovrebbe scrivere su icaa, io invece ho 
osato farlo e rileggendomi mi è venuta l'orticaria... risultato 
(sembravo un bimbetto alla quinta elementare che ha appena 
imparato a fare gli insiemi) :-D
CERCO DI RISPIEGARE MEGLIO IL TUTTO (magari può servire ad 
altri) :
Scenario :
:: SERVER FTP (Proprio o in fitto)
dedico una directory al servizio FTP nella quale inserirò 
manualmente o automaticamente con altrettanti processi il/i 
file/s che intendo trasferire ai client remoti come 
aggiornamento del mio software
:: CLIENT locale
nella dir del mio software avrò una subdir che conterrà 
l'ultimo/i file/s scaricati dall'FTP e quindi attivati in locale 
(l'ultima vers. scaricata dal client)
:: NOMENCLATURA FILE on-line e locali : 
i files hanno questo tipo di nomenclatura AGG1_001.exe
il cui parse corrisponde a : 
AGG1 - Nome BE/FE al quale il file si riferisce
001 - Numero progressivo di riferimento dell'aggiornamento stesso
exe - Estensione del file (io uso un exe per automatizzare 
esecuzioni dopo lo scaricamento)
:: MDB/MDE INTERESSATI : 
Per eseguire il processo di aggiornamento via FTP uso 1 solo 
file mde che ha l'esclusivo compito di controller; dall'icona 
del mio mio software, infatti, anzichè avviare il file 
dell'applicativo vero e proprio, faccio partire questo mde che 
esegue tali attività in successione :
1) verifica le versioni locali (esegue il parse dei nomi come da 
nomenclatura);
2) interroga l'FTP;
3) verifica le versioni on-line;
4) compara le versioni locali con quelle on-line (le 
comparazioni avvengono su variabili valorizzate - senza toccare 
fisicamente alcunchè - );
5) scarica il/i file/s nel caso in cui le vers. presenti on-line 
risultino superiori a quelle locali (Es. locale : AGG1_001.exe e 
on-line AGG1_002.exe)
6) esegue (attendendone la fine) il file scaricato per applicare 
realmente gli aggiornamenti;
7) sostituisce in locale nella subdir di rif. il file appena 
scaricato a quello precendente (cancella AGG1_001.exe e 
sostituendolo con AGG1_002.exe, per evitare alla prossima 
connessione di risultare nuovamente non aggiornato)
8) IMPORTANTE : riparte dal punto 1 per eventuali aggiornamenti 
arretrati da dover eseguire (Es. in locale presente AGG1_001.exe 
e on-line presenti AGG1_002.exe, AGG1_003.exe e AGG1_004.exe)
9) a comparazione avvenuta senza che vi siano + aggiornamenti da 
fare, avvia il file FE dell'applicativo (che intanto potrebbe 
essere stato sostituito con una versione + aggiornata insieme ad 
eventuali BE)
Spero questa volta di essere stato + chiaro. :-D
--
Ciao
Palitomf (Maurizio Facciuti)
Webmaster : 
www.accessgroup.it


 Spero questa volta di essere stato + chiaro. :-D
sei stato chiarissimo, piuttosto sono stato io a formulare male la
domanda.
io mi chiedevo, riguardo ai punti 2 e 5 qual'è il codice che utilizzi,
perchè non ho proprio idea di come ottenere, tramite vba, l'elenco dei
file messi un un server FTP, nè tantomeno saprei come scaricarlo.
grazie

 grazie
Facciamo così, appena ho un attimo faccio un demo e lo metto on-
line ok? magari corredato anche di barra di progressione del 
download che è cosa a dir poco chic! :D


 file messi un un server FTP, nè tantomeno saprei come scaricarlo.
Alla pagina segnalata di esftp segnalata da Sergio ci sono esempi di
codice:
http://activex.sourceforge.net/esftp.html
ciao,
Panathos

 aggiornamento del mio software
Solo una domanda, Vostro Onore: non converrebbe tenere una pagina web
che restituisca l'elenco dei file scaricabili sul server remoto, per
gestire l'elenco delle versioni?
Richiede un minimo di codice anche lato server web, ma si evita in
toto FTP oltre a decidere esattamente come deve essere l'elenco da
confrontare.
ciao,
Panathos

 ha scritto nel messaggio 
news:1234c273-4ef5-4041...@e10g2000prf.googlegroups.com...



---------------
Risposta :
Converrebbe in che termini?... premesso non solo che in FTP fai tutto da 
codice una volta proceduralizzato ma che non ti serve assolutamente nulla 
lato server (web), mi chiedo, da pagina web cosa otterresti oltre alla lista 
linkabile e alla sua formattazione?...spiegati meglio e vediamo vuoi 
arrivare con la tua proposta, così capisco dov'è l'inghippo legato alla tua 
obiezione ;-)
-- 
---
Ciao
Pablitomf
WebMaster : 
www.accessgroup.it
 

 linkabile e alla sua formattazione?...
Boh io domandavo solo per amor di discussione; dopotutto sto
predicando forse bene ma poi razzolo male: uso un sistema peggiore del
tuo poiché lancio script FTP dopo il confronto fra una tabella locale
dell'applicazione ed una tabella dell'rdbms.
Visto che non devo espormi su internet tutto sommato va bene così
(ovviamente ho creato utenti apposta nel server FTP, possono scaricare
file solo da una directory, della quale non possono listarne il
contenuto).
ciao,
Panathos

contenuto).
pure di ARUBA non si lista il contenuto e si può decidere di far scaricare 
da una sola directory (basta chiederlo al numero dell'assistenza)... 
figurati se poi il server è tuo (fai quel che ti pare... utenti compresi)...
-- 
---
Ciao
Pablitomf 

 figurati se poi il server è tuo (fai quel che ti pare... utenti compresi)...
Lo so ma l'obiezione che ho posto consisteva proprio nel fatto che
tramite HTTP e pagina apposita, si poteva fare a meno di quelle che ho
definito sovrastrutture (server FTP, autenticazione, protocolli
abilitati nei firewall, utenti appositi). Un intero server a
disposizione è anch'esso una sovrastruttura :-)
ciao,
Panathos