Newsgroup: it.comp.lang.visual-basic
Titolo: Compatibilità ocx

Ciao tutti!
Mi è capitato di dover installare un programma realizzato con VB6(sp6)
con un pc con XPsp2, su un vecchio pc con Win98SE. L'installazione (il
pacchetto è stato compilato con InnoSetup e ha funzionato un'infinità
di volte su pc con XP) non è riuscita a registrare alcuni ocx, tra i
quali alcuni non propriamente recenti, come il Threed32 e lo Spin32.
La registrazione è fallita anche successivamente con Regsvr32.
C'è qualcuno che ha un'idea sul perché si è verificato questo
problema?
Grazie a chi potrà rispondermi!
----------------------
Stefano


Per far funzionare correttamente una OCX è necessario essere coscenti 
delle dipendenze che questa OCX ha, quindi di quali altri files sono 
necessari per il suo corretto funSionamento. Ad esmepio si può trattare 
di runtimes C, o di dll specifiche di supporto... Le possibilità sono 
infinite.
Evidentemente nel pacchetto di installazione in oggetto ci sono solo le 
OCX e non tutti i files a loro correlati (altrimenti non avresti questo 
problema).
Non ti rimane qundi che cercare quali sono le dipendenze dei componenti 
utilizzati ed aggiungere al pacchetto di installazione i relativi files.
Ciao
-> GbC
www.gbcweb.com

 infinite.
Avevo già verificato attentamente che tutti i moduli che vengono
caricati dal programma (ocx e dll) fossero presenti nel pc con Win98.
Ovviamente ce ne sono alcuni che sono di versioni precedenti a quelle
presenti sul mio XP, ma che  non possono essere sovrascritti (vedi ad
esempio le Msvcrt o le Ole).
Il mio dubbio semmai riguardava il fatto che i componenti rifiutati
non sono affatto recenti (vedi il Threed32), quindi non capisco perché
non debbano funzionare su Win98 (anche perché quando scrivevo i
programmi ai tempi in cui XP non c'era gli stessi controlli
funzionavano senza problemi su Win98 e da allora sono sempre gli
stessi...).
------------------
Stefano

 ha
scritto:

Già, possibilissimo purtorro.
Io dopo un paio di problemi come questo (uno mi ricordo era su un pc in
Australia, dove bisogna telefonare di notte e oltretutto capire l'accento
locale) ho cercato di ottimizzare tutto evitando il più possibile l'uso di ocx e
dll activex.
Dipende da come sono fatti i tuoi programmi, da quali ocx usi, ecc. ecc. e non è
semplicissimo, ma problemi di quel tipo non ne ho più avuti.
Ho sempre pensato che chi si è inventato questa storia della registrazione fosse
un testa...fina.
--
ciao
  Stefano

problema?
  Il mio sospetto e' che il programma voglia qualche libreria di
sistema di XP che in Win98SE e' in versione precedente e non gli va
bene. In passato ho letto di parecchi problemi avuti da sviluppatori
che cercavano di installare programmi su versioni di Windows piu'
vecchie di quella usata per sviluppare, tanto che avevo continuato ad
usare Windows 95 per programmare in VB5.
  Purtroppo non ti so suggerire una soluzione.
-- 
  Ciao :-)
  Massimo
Nell'indirizzo, sostituire "micio" con "mc"

 stessi...).
Ho un certo chilometraggio su queste problematiche e la mia sensazione è 
che al 99% qualcosa manchi o non sia stata aggiornata.
Inno ha un meccanismo affidabile per la ricerca delle dipendenze? Non lo 
uso e non saprei proprio.
Peraltro trovare le dipendenze di una PCX può alle volte essere una 
operazione davvero fastidiosa.
Ho provato ad inserire la threed32.ocx in un progetto vuoto e lanciato 
l'installer. Oltre alle solite stupidate di VB6 mi indica MFC40.dll e 
MSVCRT40.dll. Non sono componenti standard, credo.
Il fatto che una libreria sia 'vecchia' non significa che troveremo 
tutto ciò che serve nel computer ospite. Anche perchè potrebbe essere 
stato cancellato da qualche altro programma.
L'installer dovrebbe prevedere queste eventualità ed -eventualmente- 
aggiornare tutte le componenti necessarie al corretto funzionamento 
dell'applicativo aggiornando, in ragione delle solite regole che 
conosciamo, ciò che si dovrebbe.
Concordo pienamente con SB sul limitare l'utilizzo delle OCX allo 
stretto indispensabile, proprio per evitare queste eventualità, ma credo 
che in alcuni casi sia proprio impossibile...
Hola
-> GbC
www.gbcweb.com

che in alcuni casi sia proprio impossibile...
Dipende naturalmente dall'applicazione, ma ad esempio io ho creato una Dll in C
proprio per poter fare a meno dell'MsComm nelle installazioni difficili.
E non perchè MsComm non funzioni bene, ma proprio per evitare i problemi
dell'installazione e messa in opera, dal momento che non so mai su che pc
andranno e se l'installazione la fa un meccanico non posso pretendere che mi
faccia delle verifiche strane di dipendenze e compatibilità.
Una dll standard non ha bisogno di registrazione, basta che sia nel path e la
cosa finorìa ha sempre funzionato, ho dei brutti presentimenti con Vista, ma
vedremo al momento come andrà.
Cercando in giro si trovano facilmente delle classi per sostituire diversi ocx,
come CommonDialogs o CommonControls ad esempio.
Non mi ricordo cosa fa la threed32.ocx ma probabilmente con un workaround si può
sostituire, anche se costa tempo e fatica.
Mi rendo conto che in molti casi può questo può essere un problema.
Ad esempio una API DrawText può sostituire bene una label, io uso sempre quella
oramai, e potrei fare diversi altri esempi del genere.
--
ciao
  Stefano

 installazioni difficili.
[SNIP]
A parte i CommonControls non uso OCX da anni.
Ciao ciao :)
-> GbC
www.gbcweb.com

   Purtroppo non ti so suggerire una soluzione.
Rispondo a te e contemporaneamente agli altri che hanno cercato di
individuare il problema.
Quello che dici potrebbe essere vero, ma ancora non capisco come sia
possibile che dei vecchi controlli che hanno sempre funzionato sotto
Win98 (in passato ho fatto decine di installazioni funzionanti di
programmi che utilizzavano questi OCX su quel sistema operativo,
sicuramente non ho omesso nessuna delle loro dipendenze) e che non
hanno mai avuto aggiornamenti di versione, improvvisamente non siano
più registrabili.
Tra l'altro il problema si è posto all'improvviso, e non riesco
neppure a collegarlo agli aggiornamenti del sistema operativo, che nel
caso di Windows98 la Microsoft ha ormai sospeso da tempo.
----------------------
Stefano

 A parte i CommonControls non uso OCX da anni.
ma ne spargi e diffondi che neanche i seminatori di carducci :)
ciao, a.


No no... Ho smesso da tempo.
Sono stato in comunità e mi sono disintossicato.
Vedere PrnPrv 'clonato' e compilato come OCX a pagamento mi ha fece 
rodere non poco. A quel punto per un periodo non più ho reso disponibile 
il codice sorgente di componenti utili.
-> GbC
www.gbcweb.com

 non poco.
testediminchia, come le chiamava ieri la littizzetto, ce n'e' che ce n'e'.
ora poi ci si mette la cassazione
http://punto-informatico.it/p.aspx?id=1905855&r=PI
tra questa sentenza da una parte e dall'altra i brevetti delle quattro 
operazioni, quelli dei loghi stile iphone, quelli mp3 stile ms, il caos e' 
totale.
ciao, a.