Newsgroup: it.comp.appl.access
Titolo: Aggiornamento automatico dei FE.

Diversi utenti usano applicazioni ripartite in FE e BE. Se devo
cambiare qualcosa nell'applicativo, bisogna che tutti gli utenti
ottengano la nuova versione, che si tratti di una nuova tabella, o un
campo modificato, o maschere, query e report cambiati.
Prima usavo un'iconcina sul loro schermo che apriva un file .bat,
dicevo loro di cliccare e veniva copiato il nuovo FE.
Poi trovai su 
www.lebans.com
 un'applicazione che compiva
l'aggiornamento automaticamente, se necessario, cliccando sull'icona
dell'applicazione.
A seguito di aggiornamenti nel parco macchine, con alcune restrizioni
nei programmi utilizzabili, entrambe le soluzioni sono diventate
inapplicabili.
Ho ancora l'esigenza che gli utenti avviino automaticamente il
programma con tutte le ultime modifiche, ma non ho le idee chiare su
come fare.
Qualcuno ha suggerimenti?
Grazie a tutti.
Buon lavoro.

 ha scritto nel 
messaggio 
news:9647b41c-15fc-4f6d...@d1g2000hsg.googlegroups.com...

Ciao Riccardo,
prova a vedere se questo 
http://www.granite.ab.ca/access/autofe.htm
può esserti di aiuto.
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
http://accessdaziacin.live.spaces.com
---------------------------------------- 

 può esserti di aiuto.
Ho sbattuto il nasello anch'io su questo problema che inizialmente puo' 
sembrare semplice, ma che volendo risolverlo per bene, non lo e'
Nel mio caso, l'utente avvia sempre un AUTO_UPDATER che va a verificare 
(dentro un file ini)  se ci sono aggiornamenti rispetto alla versione 
attuale del FE
Se non ci sono aggiornamenti allora avvia il FE attuale, altrimenti scarica 
l'aggiornamento, lo rende l'eseguibile attuale, e lo avvia, poi 
l'AUTO_UPDATER si uccide
Il FE deve avere nella prima form un controllo sul collegamento alle tabelle 
(che dopo l'aggiornamento non e' mai a posto) e se necessario avvia la 
procedura RELINK_TABELLE
Fine
Molto semplice, ma efficace, quando tu vai dal cliente gli passi 
l'aggiornamento nella directory deputata a contenerli e basta, anche durante 
il periodo di attivita' dele postazioni lavoro
Ogni postazione se lo 'ciuccia' da sola al primo riavvio del FE
Non so esattamente come sia il sistema usato dal   
granite.ab.ca
  ma credo 
che sia abbastanza simile
Ciao
RobertoA
 

 ha scritto nel 
messaggio 
news:9647b41c-15fc-4f6d...@d1g2000hsg.googlegroups.com...



Vedi l'ultima parte di 
www.donkarl.com/it?FAQ1.35
.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 - Mostra testo tra virgolette -

 ha scritto nel 
messaggio 
news:b0dc5472-a71d-4a64...@34g2000hsf.googlegroups.com...
Ringrazio tutti per le risposte e mi scuso per il ritardo nel
riscontro. Do qui risposta a tutti.
- effettivamente, era proprio l'applicativo di 
http://www.granite.ab.ca/access/autofe.htm
quello che usavo, con soddisfazione, ma hanno blindato le macchine al
punto che nessun eseguibile, e neppure un file batch, può esser fatto
girare se non installato su c:
- mi interessa la storia AUTO_UPDATER, se potessi avere informazioni
ne sarei grato. Si tratta di un'apposita applicazioni in Access? E,
dopo che si è ucciso, come posso resuscitarlo :-)? Seriamente, devo
chiudere l'applicazione subito dopo avere avviato il programma
richiesto?
- abbiamo un server di rete, i nuovi pc hanno Windows SVISTA, ma non
tutti sono stati cambiati e perciò i FE e BE sono ancora in formato
W2K. Non conosco i dettagli del server.
- appena ho un momento vado a vedermi gli applicativi segnalati su
donkarl. Non conosco il tedesco (e mi vergogno...) ma spero nella
logica. Siccome Avenius offre un eseguibile di setup che non posso
avviare, proverò con dbdev.
Ancora grazie a tutti.
Riccardo Baldinotti
============================================
AUTO_UPDATER e' un'applicazioncina realizzata in Access, che si occupa di:
- controllare la presenza di aggiornamenti su una directory di rete
- verificare se l'ultimo aggiornamento disponibile e' quello che gia' viene 
eseguito in locale
- nel caso, scaricare l'ultimo aggiornamento dalla directory di rete
- rendere attuale l'utilimo aggiornamento appena scaricato
- avviare l'ultimo front-end disponibile
Quindi, dal lato permessi, ti basta poter 'leggere' file su una directory 
che il server aggiornamenti condividera'
In realta' il 'sistema' di aggiornabilita' e' composto sia dall'auto_updater 
che dalla procedura di test e relink tabelle sul front-end
Sia l'auto_updater che i front end vengono copiati in locale, nella 
directory applicazione, e da qui avviati
L'auto_updater una volta avviato il front end si accoppa, per rilanciarlo 
devi re-cliccare sull'iconcina che lo avvia
Non capisco cosa intendi con "..formato W2K..", credo che il formato file 
sia lo stesso sia che lo avvi da Win98 a Vista
Sempre che sia del file MDB o MDE che stiamo parlando
Ciao
RobertoA

 RobertoA
Ciao e grazie.
Riccardo Baldinotti

Karl Donaubauer ha scritto:

Ho provato l'applicazione di dbdev. Purtroppo, quando premo il tasto
"Befehl zum Starten der Anwendung aufbauen", nelle due caselle del
gruppo "vorhandene Versionen" rimaneva il valore "N/A", segno, dicono
le istruzioni del file ReadMeFirst.txt, che la configurazione non era
corretta.
Avevo anche provato con l'esempio del file suddetto, con risultato
identico.
Le due tabelle Settings vengono regolarmente trovate, e non capivo
perché l'operazione non andasse a buon fine.
Guardando nel codice del tasto "Befehl..." non ho però trovato il
punto in cui le due caselle dovrebbero essere aggiornate. Ciò accade
appena compilo i campi che chiedono dove si trovano il file origine e
il file destinazione.
Ho perciò scoperto che i valori sono aggiornati correttamente se PRIMA
inserisco il valore nel campo "Feld, welches Versionskennzeichen
beinhaltet", quindi correggo il contenuto del campo "Bedingung dur das
Einlesen des Versionsdatensatzes nel solo valore "Version" anziché
"key='Version'", come invece suggerito, e DOPO inserisco nel campo
"Master Anwendung fur die Installation" il percorso della mia
applicazione d'origine.
Ho gridato un "Urrà" (come si dice urrà in tedesco?) ma il risultato
non cambia, e il grido mi si è spento in gola.
Ho visto che il loro sito è interamente in tedesco; credi che potrei
mandar loro un messaggio in inglese, per spiegare la cosa?
Grazie ancora.
Riccardo Baldinotti

 L'auto_updater una volta avviato il front end si accoppa,
Ecco, ho provato, ma non so come far partire un'applicazione dal mio
updater embrionale e poi far chiudere solo quest'ultimo, dato che
Application.Quit mi chiude entrambi.
Aita!
Riccardo Baldinotti


Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell .Run """" & CurrentProject.Path & "\" & 
nome_file_eseguibile_attuale
DoEvents
Set objShell = Nothing
Application.Quit

RobertoA ha scritto:

Era proprio il tentativo che ho  fatto.
Capita che, eseguendo il codice passo-passo, mi si apre l'applicazione
e poi mi si chiude UPDATER mentre, lanciandolo con doppio click da
explorer, tutto si chiude e non vedo aprirsi nulla.
Il codice sembra essere eseguito, almeno fino al controllo della
versione e alla copia di quella nuova se necessario, ma poi nisba.
Ancora grazie.
RB


Non so cosa dirti
E' il codice che uso per l'aggiornamento dei miei sistemi
E posso dirti che quotidianamente lo sperimento e funziona
Ciao
RobertoA

 mandar loro un messaggio in inglese, per spiegare la cosa?
Sì, il nostro sito (ho fondato il dbdev ;-) è in tedesco.
Henry (l'autore del tool) ha aggiornato la versione e tradotto
le maschere in tedesco. Prova con la vecchia versione
http://www.dbdev.org/down34.htm
 che è interamente in inglese.


RobertoA ha scritto:

Quello che mi fa impazzire è che, se tolgo l'istruzione
Application.Quit dall'esempio, l'applicazione si apre e funziona;
quando poi in una maschera di questa, premo il tasto Uscita, che
esegue a sua volta il Quit, mi si chiude l'applicazione chiamata ma
non quella chiamante, cioè UPDATER.
A questo punto: come faccio a dire a UPDATER di nascondersi, fare
hide, iconizzarsi in modo da essere invisibile (in modo che l'utente
non ci vada a ficcare il naso)? Potrei poi chiamarne la chiusura
dall'applicazione chiamata, e anche qui: come?
Ancora grazie.
RB

 - Mostra testo tra virgolette -
Ho provato l'altra versione, grazie. Purtroppo non sembra essere un
problema di lingua...
Complimenti per tutte le cose che fai. Voialtri ragazzi siete un faro.
Vorrei partecipare al CISA prossimo anche solo per vedervi dal vivo.
Ancora grazie.
RB

 RobertoA
Io uso un piccolo db con una sola maschera, salvato nella stessa cartella
del FE.
All'avvio controlla la versione del FE con quella del FE presente nella
cartella degli aggiornamenti ed eventualmente copia il nuovo file.
Poi lancia il FE e si autoquitta. Ha sempre funzionato.
Unica particolarità: il codice che fa tutto ciò non sta in form_open ma in
form_timer e la prima istruzione è Me.TimerInterval = 0.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Gia', pure la mia sta nella directory del fe
E pure la mia c'ha il codice operativo dentro l'evento timer
Questo perche' altrimenti, la form che nel mio caso riporta l'avanzamento 
progressivo delle operazioni, non si visualizzerebbe e rimarrebbe nascosta
Ciao
RobertoA

 RobertoA
Vi ringrazio.
Avevo messo una macro autoexec, la quale avviava una funzione
faggiorna() (...perché non ho ancora trovato, in A2007, il
corrispondente di "Strumenti/Avvio"...).
Allora l'ho cambiata perché aprisse la maschera mAvvio, su timer ho
messo la chiamata alla funzione, e intervallo timer = 1, altrimenti
non mi si avviava. Anch'io ho aggiunto l'istruzione timer=0 all'inizio
della funzione.
Il risultato è identico a prima (sob, sob): istruzioni passo-passo che
danno il risultato voluto, altrimenti no.
Credo non cambi nulla il fatto che la funzione non si trovi nel modulo
della maschera, vero?
Chiederò di essere adibito a pratiche che non richiedano l'uso di un
computer.
Ciao a tutti.
RB

 - Mostra testo tra virgolette -
Noto solo ora le parole "la form che nel mio caso riporta
l'avanzamento progressivo delle operazioni". Caspita, in che modo? E
forse ciò equivale all'esecuzione passo-passo che ANCHE A ME funziona!
In attesa di chiarimenti, riporto la soluzione parziale adottata.
Siccome ogni utente può usare una o più delle mie applicazioncine,
messe in sottocartelle di D:\sw\, e ogni file ha il nome della
cartella, per esempio: D:\sw\agende\agende.mdb, D:\sw\logistica
\logistica.mdb, ecc., ho fatto avviare la seguente funzione
----inizio funz-----
Option Compare Database
Option Explicit
    Dim fso
    Dim file As String
    Dim RST As Recordset
Function fControllaDate()
' la tabella tAppl contiene i nomi delle applicazioni
    Set RST = CurrentDb.OpenRecordset("SELECT * FROM tAppl;")
    RST.MoveLast
    RST.MoveFirst
    Do While Not RST.EOF
        file = "d:\sw\" & RST!nome & "\" & RST!nome & ".mdb"
        Set fso = CreateObject("Scripting.FileSystemObject")
        If fso.FileExists(file) Then
                FileCopy "t:\progetti\sw_bald\gestione\" & RST!nome &
"\rete\" & RST!nome & ".mdb", "d:\sw\" & RST!nome & "\" & RST!nome &
".mdb"
        End If
        RST.MoveNext
    Loop
    Set RST = Nothing
    Application.Quit
End Function
-----fine funz-----
Hurra!, come dice donkarl.
Avevo aggiunto anche una tabella con la data di aggiornamento dei db,
e un controllo per copiare solo quelli aggiornati, ma la mole di dati
è abbastanza ridotta e ci mette ben poco a copiare tutto. Un domani...
Vengono copiati solo i db già esistenti sul pc dell'utente.
A questo punto si tratta di avere solo un'icona in più sul video.
Succede però che, al termine delle operazioni, riuscite, mi esce il
messaggio d'errore
Impossibile trovare il file "D:\sw\aggiornamenti.mdb" (quello degli
aggiornamenti)
BO!!!
Ciao a tutti.
RB






-----------------------------------------------
Per 'progressione operazioni' intendo che sulla form di AUTO_UPDATER vengono 
visualizzati dei messaggi per informare l'operatore sullo stato di 
avanzamento delle operazioni in corso, messaggi del tipo:
- VERIFICA DISPONIBILITA AGGIORNAMENTO...
- COPIA FILE AGGIORNATO IN CORSO...
- AVVIAMENTO ESEGUIBILE AGGIORNATO...
- AVVIAMENTO ESEGUIBILE ATTUALE...
- RICOLLEGAMENTO TABELLE...
ecc
Essendo la directory contenente  gli agiornamenti in rete locale, le 
operazioni sono molto rapide, quasi non leggibili
L'unica che ci mette una decina di secondi e' l'ultima, l'eventuale 
ricollegamento tabelle se viene trovato e scaricato un aggiornamento
Ciao
RobertoA

 RobertoA
Appena arrivato in ufficio ho provato ad aggiungere dei messaggi,
prima su una etichetta della maschera mAvvio, tipo:
    Forms!mAvvio!etichetta4.Caption = "Avvio di d:\sw\agende
\agende.mdb"
poi con un messaggio come:
    MsgBox "Avvio di d:\sw\agende\agende.mdb"
ma tutto come prima, finché non ho aggiunto un MsgBox subito dopo
l'istruzione
    Set oWshShell = Nothing
a quel punto avevo in primo piano la maschera d'avvio
dell'applicazione chiamata, e in secondo piano il mio UPDATER.
Cliccando su OK ero al punto agognato, ma non ero del tutto
soddisfatto.
Quando tutto il ragionevole si dimostra inadeguato, si può cominciare
con le idee folli: ho aggiunto una seconda istruzione DoEvents, dopo
il Set oWshShell = Nothing (perché spostarlo non aveva sortito
effetto), e anche senza avere dato messaggi ottenevo quanto
desiderato: breve baluginio su schermo (be', non tanto desiderato,
questo...), avvio dell'applicazione chiamata, e aggiornata, chiusura
di UPDATER.
Riporto il codice
-----inizio codice-----
Option Compare Database
Option Explicit
    Dim DataQui As String, DataLa As String
    Dim Quale As String
Function fAvvia()
    Quale = "agende"
    Forms!mAvvio.TimerInterval = 0
    DataQui = DLookup("[setting]", "settings", "key='giornoagg'")
    DataLa = DLookup("[setting]", "settings1", "key='giornoagg'")
    If DataQui <> DataLa Then
        FileCopy "t:\progetti\sw_bald\gestione\" & Quale & "\rete\" &
Quale & ".mdb", "d:\sw\" & Quale & "\" & Quale & ".mdb"
    End If
    Dim oWshShell As Object
    Set oWshShell = CreateObject("WScript.Shell")
    oWshShell.Run Chr$(34) & "d:\sw\" & Quale & "\" & Quale & ".mdb"
    DoEvents
    Set oWshShell = Nothing
    DoEvents
    Application.Quit
End Function
-----fine codice-----
Per ogni nuova applicazione, cambio la variabile Quale col nome sia
delle cartelle che dei file .mdb, e modifico i collegamenti delle due
tabelle Settings e Settings1.
Forse potrò evitare il suicidio... grazie a questo forum.
RB