PDA

Visualizza la versione completa : [DELPHI] Confronto Activex


ElyFly
10-02-2005, 11:27
Salve a tutti,
volevo sapere in che modo posso confrontare le versioni di due activex. Mi spiego meglio: tramite una pagina web un activex viene installato sul client; quando l'utente apre nuovamente la pagina, bisognarebbe controllare se l'activex è stato modificato (sul server) e quindi sia necessario fare l'update dell'activex (che è contenuto in un cab).
Thx
Elisa

alka
10-02-2005, 11:48
Non ho capito bene...la pagina Web viene caricata all'interno di un'applicazione Delphi? :)

ElyFly
10-02-2005, 13:16
No, io ho una pagina web, aprendo la quale posso scaricare un activex.
Questo activex è stato scritto in delphi e viene visualizzato all'interno del browser.

La prima volta l'activex deve essere scaricato e installato su client. Poi però questa operazione non deve più essere eseguita perchè il controllo activex è già presente sulla macchina client. Tuttavia, può succedere che l'activex sul server venga aggiornato e quindi il client se ne dovrebbe accorgere e fare di nuovo il download della versione aggiornata.

In che modo riesco ad ottenere le versioni dei miei due activex (lato client e lato server) e confrontarle?

Thx

Eli

alka
10-02-2005, 13:23
Originariamente inviato da ElyFly
La prima volta l'activex deve essere scaricato e installato su client. Poi però questa operazione non deve più essere eseguita perchè il controllo activex è già presente sulla macchina client. Tuttavia, può succedere che l'activex sul server venga aggiornato e quindi il client se ne dovrebbe accorgere e fare di nuovo il download della versione aggiornata.

In che modo riesco ad ottenere le versioni dei miei due activex (lato client e lato server) e confrontarle?

Ciao,
l'installazione del controllo ActiveX sia gestita automaticamente da Internet Explorer, pertanto quando si rende necessario il suo utilizzo, il browser provvede a scaricare e ad installare il software necessario.

Non credo che tu debba inserire istruzioni nel codice del controllo stesso in Delphi per ottenere l'installazione della versione aggiornata; piuttosto, prova a verificare le opzioni del tuo progetto facendo in modo che il numero di versione sia differente (superiore) a quello relativo al precedente controllo rilasciato. Tale informazione inoltre, inserita nella pagina HTML che richiama il controllo ActiveX, dovrebbe indurre IE a scaricare e installare la nuova versione del controllo.

Fai qualche prova tecnica e poi fammi sapere... :)

Ciao! :ciauz:

ElyFly
10-02-2005, 13:43
A dire il vero ho fatto una prova (banalissima....) e ho notato che IE mi fa scaricare ogni volta l'activex.... insomma, una scocciatura, perchè se non ha subito modifiche è solo tempo che perdo per il download.

Quindi avevo provato a fare una cosa (diciamo che procedo x tentativi x' non conosco bene gli strumenti, essendo abituata a progammare in java) e ho tolto dalla pag html il 'CODBASE' ma ho lasciato solo il 'CLASSID'. In questo modo non scarico + nulla x' non ho un riferimento dal quale farlo, però mi carica lo stesso l'activex che ho già installato.

Per questo avevo pensato ad una procedura di controllo delle versioni.....

Io pensavo che con gli activex funzionasse così: il client prima controlla se l'ocx è già sulla sua macchina, se c'è lo carica, se non c'è lo scarica...

alka
10-02-2005, 13:54
Originariamente inviato da ElyFly
Io pensavo che con gli activex funzionasse così: il client prima controlla se l'ocx è già sulla sua macchina, se c'è lo carica, se non c'è lo scarica...
Quando il browser incontra un riferimento ad un controllo ActiveX, deve determinare se tale controllo è già presente e installato sulla macchina; se usi il CODEBASE indicando solo un percorso, il browser ogni volta dovrà scaricarsi il controllo poichè non è in grado di determinare se la versione posseduta è uguale a quella pubblicata sul Web, poichè non sono presenti informazioni aggiuntive.

Usando il CLSID, probabilmente ottieni l'effetto contrario: quando un browser possiede un controllo già registrato con quella chiave, ove trova riferimenti a tale chiave utilizza il controllo già installato senza reperire gli aggiornamenti.

Credo che la soluzione giusta sia una "mezza via"... :)

Dovresti riuscire ad introdurre un'informazione di versione nel riferimento al controllo ActiveX; quando aggiorni il controllo e lo pubblichi, sostituisci sia nell'eseguibile sia nel codice HTML il numero di versione; quando il browser incontra il riferimento, deve confrontare per forza la versione riportata con quella installata e scaricare il controllo selettivamente in base a questa condizione.

Forse può esserti d'aiuto questa pagina (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_upgrading_an_existing_activex_control_to_be_ used_on_the_internet.asp).

Ciao! :ciauz:

ElyFly
11-02-2005, 11:13
Ho deciso di mettere da parte un attimo la questione e di affrontarla più avanti.
Ora il mio problema più urgente sono proprio gli activex: non riesco più a visualizzarli nella pagina... l'ocx viene scaricato ma non installato (possibile...?)
Quello che dovrei fare è far fare il download di alcuni file... però non trovo la documentazione che mi serve. Dici sia il caso di usare i componenti indy?
Thx
Eli

alka
11-02-2005, 11:17
Originariamente inviato da ElyFly
Ora il mio problema più urgente sono proprio gli activex: non riesco più a visualizzarli nella pagina... l'ocx viene scaricato ma non installato (possibile...?)
Non posso determinare da qui lo stato della tua macchina. :)
Prova a controllare le impostazioni di Internet Explorer.


Originariamente inviato da ElyFly
Quello che dovrei fare è far fare il download di alcuni file... però non trovo la documentazione che mi serve. Dici sia il caso di usare i componenti indy?

Magari spiegami con precisione cosa devi sviluppare e quali funzionalità devi ottenere...vedrò di aiutarti come posso indicandoti la strada che, personalmente, ritengo migliore.

Ciao! :ciauz:

ElyFly
11-02-2005, 11:24
Veramente adesso sto facendo delle prove per acquisire un po' di familiarità con il linguaggio.
Quello che intendevo fare più o meno era questo:

Scaricare dei file e possibilmente copiarli in determinate directory presenti su client.
In seguito dovrei trovare il modo di scaricare insieme a dei file (che saranno librerie o file di configurazione) anche un file di setup e farlo partire automaticamente.

Questo per ora è quello a cui mi serve l'activex...

Ciao ciao :)

alka
11-02-2005, 11:32
Originariamente inviato da ElyFly
Veramente adesso sto facendo delle prove per acquisire un po' di familiarità con il linguaggio.

Per prove tecniche di apprendimento, forse era meglio partire con qualcosa di più semplice. :)


Originariamente inviato da ElyFly
Scaricare dei file e possibilmente copiarli in determinate directory presenti su client.
In seguito dovrei trovare il modo di scaricare insieme a dei file (che saranno librerie o file di configurazione) anche un file di setup e farlo partire automaticamente.
Una normale applicazione Delphi potrebbe fornire le stesse funzionalità del controllo ActiveX senza tutte le problematiche che girano attorno a quest'ultimo; non credo che il controllo ActiveX sia indispensabile.

Puoi realizzare un'applicazione Windows che scarichi, attraverso un determinato URL, i file che desideri su disco; per fare ciò, puoi appoggiarti benissimo ai componenti Indy che hai citato, in particolare usando il componente TIdHttp.

Eventualmente, consulta il sito ufficiale (http://www.indyproject.org) del progetto: ci sono molti esempi e tanta documentazione che possono tornarti utile.

Ciao! :ciauz:

Loading