Newsgroup: it.comp.lang.visual-basic
Titolo: [?] ddl activex e distribuzione exe....

Ciao a tutti,
ho un probelam sicuramente banale...
chiedo a voi che ne sapete sicuramente + di me
ho una serie di DLL ActiveX che utilizzo con il late binding (createobject)
ho provato a inserirne una tra i riferimenti del progetto ed è tutto ok..
premetto che la DLL non l'ho sviluppata io..
il problema mi sorge in fase di distribuzione e aggiornamento..
"scenario":
versione 1.0 dell'applicativo usa la 1.0 della DLL
versione 1.1 dell'applicativo usa la 1.0 della DLL
quindi la dll non cambia
ma se cerco di usare la v 1.1 dell'exe mi dice che l'oggetto non può essere
creato...
sembra perda i riferimenti... eppure la dll non è stata ricompilata.. cosa
può casuare il problema?
garzie a tutti,
Davide

 puň casuare il problema?
Non ha (?) senso!
Se sulla macchina di sviluppo funziona (sia col primo che col secondo EXE),
credo che si possa solo pensare che la DLL richiamata sulla macchina di
destinazione (registro, percorso, etc.) non sia quella distribuita dal
Setup, come se questo non la installasse/registrasse perchč meno aggiornata
o ... come se altri ... la modificassero sulla macchina di destinazione.
Verifica quanti file esistono sulla macchina di destinazione con lo stesso
nome della DLL, fanne una tabellina con data, lunghezza, versione, etc. e
poi, parlando con gli altri, cercate di mettervi d'accordo: Inizia con
"Cazzo, ragazzi, non si puň andare avanti cosě!", poi, prima di qualsivoglia
risposta, comincia a menare, forte.

 risposta, comincia a menare, forte.
Direi che i tempi sono fondamentali. A me una volta č capitato che uno mi ha
centrato con un diretto nel naso prima che io dicessi "andare".
Consiglio quindi un robusto randello sotto il tavolo (questa credo sia la
funzione originaria di quelle assurde mensole scorrevoli per tastiera).
PS: secondo me la dll non č registrata sul pc che va in errore. Proverei con
un esplicito regsvr32 prima di dare la colpa a qualcuno piů grosso di me.
(Se sono tutti piů piccoli č comunque possibile che si mettano d'accordo.)
--
rumplestilskin

 risposta, comincia a menare, forte.
LOL :D
quindi se io distribuisco un exe +dll (nei reference)
e poi sostituisco l'exe con una nuova versione (e la dll non cambia)
nulla va fuori posto.. giusto?
oppure s enell'exe č attivato l'aggiorna activex puň succedere?
ciao
Davide

 oppure s enell'exe è attivato l'aggiorna activex può succedere?
Io quel check l'ho attivato (come da default e non mi sono mai sognato di
cambiarlo, nè so cosa faccia) e, ti garantisco che, se la DLL non viene
ricompilata (non importa se modificata o meno nel codice), puoi copiare
(nemmeno setuppare) tutti gli EXE che vuoi, anche in tempi diversi, con
tutte le modifiche fatte.
PS: Io ho la DLL su "Nessuna Compatibilità"

 PS: Io ho la DLL su "Nessuna Compatibilità"
bene.. ma se devo aggiornare la dll e lasciare invariato l'exe?
in questo caso devo ricompilare anche l'exe.. invece se lascio comp binaria
alla dll
basta deregistrare la vecchia ver e registrare la nuova giusto?
Davide

 basta deregistrare la vecchia ver e registrare la nuova giusto?
Probabile, ma non ho mai usato altre dichiarazioni di compatibilità e quindi
non ti posso dare risposte "provate".

 basta deregistrare la vecchia ver e registrare la nuova giusto?
Se usi la comp. binaria, non è neppure necessario deregistrare la vecchia
dll (non ci saranno meno CLSID, altrimenti hai rotto la compatibilità,
semmai ce ne saranno di nuovi). Se non hai aggiunto metodi pubblici (cioè:
se le modifiche riguardano solo il codice e non dichiarazioni pubbliche in
classi) non è neppure necessario registrare la nuova versione. Tranne casi
veramente particolari (quando una tua classe espone oggetti di altre dll o
ocx) ricompilare una dll con la comp. binaria non comporta problemi a nessun
exe che la utilizzi (a questo serve la comp. binaria). Ovviamente, modifiche
all'exe non impattano mai sulle dll. Se non usi la comp. binaria, allora
ogni volta che ricompili la dll devi ricompilare tutti i programmi che la
usano (sinceramente, eviterei come la peste una dll senza comp. binaria e
non solo per questo motivo: prova a pensare che bello se tu hai due
programmi che usano la stessa dll e spedisci ad un cliente la nuova versione
della dll con uno dei de exe...). Siccome non costa (quasi) niente, usa la
comp. binaria.
--
rumplestiltskin