PDA

View Full Version : Il VB6 , problemi di distribuzione.......


visodont
26-11-2004, 17:43
Ho realizzato un pacchetto gestionale composto da diversi *.exe che si chiamano l'un l' altro e si scambiano i valori delle variabili tramite un database che fa da "Caronte", tutto funziona bene.

Tutto il progetto è di 115 MB.

Per altri programmi più piccoli composti da un solo *.exe non è un problema fare il pacchetto per l' installazione, ma per questo non so proprio come fare anche se ho risolto il problema in modo non proprio corretto.
Non so fare il pacchetto per l' installazione che installi tutti gli *.exe del gestionale.

Ho un grave problema nel trasferire il gestionale da un PC all' altro e non posso distribuirlo normalmente come si fa per gli altri programmi.

Debbo seguire la seguente procedura:

1) Trasferisco tutta la cartella che contiene il gestionale nel nuovo PC.
2) Trasferisto tutti i componenti che mi indica i progetto, nella cartella C:/windows/System del nuovo PC. ( perchè credo che li debbano stare e così mi era stato detto di fare )

Ma non funziona, sembra che gli manchi qualcosa.

SE PERO' :
sul nuovo PC Installo anche il VB6 allora tutto funziona regolarmente.

E' una scocciatura notevole. Che cosa posso fare per togliermi da questo impiccio ?

Grazie,
Visodont

Fenomeno85
26-11-2004, 22:27
guarda che c'è un comando che se non mi ric dato che devo reinstallare il soft che è creazione guidata pacchetti fa tutto lui, include tutto il necessario e funziona ;)

~§~ Sempre E Solo Lei ~§~

cionci
27-11-2004, 08:20
Alcune DLL o OCX vanno registrate per farle funzionare...è per questo che appena installi VB6 tutto funziona...

Fenomeno85
27-11-2004, 10:34
Originariamente inviato da cionci
Alcune DLL o OCX vanno registrate per farle funzionare...è per questo che appena installi VB6 tutto funziona...

si ma se utilizzi il programma creazione guidata pacchetto lo fa tutto lui ;)

~§~ Sempre E Solo Lei ~§~

cionci
27-11-2004, 10:39
Chiaro...

visodont
27-11-2004, 15:18
Vi ringrazio per le risposte ma........

Purtroppo il "creazione guidata pacchetti" funziona benissimo con programmi più piccoli ma con il mio gestionale che comprende diversi *.exe non funziona. Ho provato e riprovato, nulla da fare. L' unico modo è installare il VB6 sul PC ma son sicuro che il modo per evitare questo problema c'è e voi sarete tanto bravi da risolverlo ! o vi arrenndete cosi facilmente ? :-)

Dimenticavo di dirvi che una volta installato il VB6 sul nuovo PC, se poi lo disistallo il gestionale funziona egualmente. Vuol dire che su quel PC ci rimane "qualcosa" che.........

Sono molto dispiaciuto per questo inconveniente perchè in questo modo non posso davvero cederlo ad altri. Questo gestionale mi è costato 2 anni di fatica ma ora, per questo motivo, sono ad un punto morto !

Saluti speranzosi.....
Visodont

cionci
27-11-2004, 15:25
Ti ripeto...vanno registrate alcune DLL...

Scarica InnoSetup e ISTools... Devi farti un installer a mano...

Qui ci sono le istruzioni su come installare i file runtime di VB: http://www.jrsoftware.org/iskb.php?a=vb

Per le altre DLL e OCX...tutte quelle che servono per un componente delle tuo programma devono essere registrate (Installing OCXs)...

visodont
27-11-2004, 15:44
ti ringrazio molto, proverò !

Visodont

DooM1
27-11-2004, 22:46
Scusate un dubbio...:
ma con il programma creazione guidata, dovrebbe far funzionare il programma in tutti i sistemi operativi windows 32bit? (Cioè Windows 95/9x/2000/XP... ecc.)
Ciaux :D ;)

Fenomeno85
28-11-2004, 09:50
Originariamente inviato da DooM1
Scusate un dubbio...:
ma con il programma creazione guidata, dovrebbe far funzionare il programma in tutti i sistemi operativi windows 32bit? (Cioè Windows 95/9x/2000/XP... ecc.)
Ciaux :D ;)

si

~§~ Sempre E Solo Lei ~§~

visodont
28-11-2004, 10:02
Ringrazio Cionci per l 'indirizzo :http://www.jrsoftware.org/iskb.php?a=vb
Inno Setup, ho scaricato quello che dovevo scaricare ma purtroppo la mia cnoscenza dell' inglese è un po' scarsa e poi , essendo un hobbysta non ho la preparazione di base necessaria per capire quello che in quiesto caso devo fare. Ho timore di fare dei casini terribili e irreversibili e non ci provo nemmeno !

Credo che l' unica soluzione sia chiedere una consulenza diretta a qualcuno residente a Roma. Pagandola naturalmente, nessuno lavora gratis.

Se c'è qualcuno in linea che può suggerirmi il nominativo e l' indirizzo di un programmatore adatto....... altrimenti il mio gestionale rimarrà "al palo" eternamente.

Grazie ancora,

VisOdont

disumano
28-11-2004, 23:42
puoi anche fare un'installazione con il tool di vb per un singolo progetto e poi includere nel progetto gli altri exe come semplici file da installare insieme al programma principale...

io faccio così se con un programma vb devo installare anche un db o un file txt o un altro file qualsiasi, perché non farlo con degli exe?

l'unico accorgimento è dichiarare nell'exe "principale" gli ocx e le dll che servono a tutti gli altri exe.

credo che così sia molto + rapido che non costuirsi un installer apposito...

visodont
29-11-2004, 10:29
HO provato a vedere quali siano i "componenti" di tutti gli exe e a metterli nella directory Windows\system, del nuovo PC ma non funziona.

Credo che mi dovrò arrendere.
Ma per tool del VB cosa intendi l' 0pzione "pacchetto di installazione" ?

CrEdo che il pacchetto di installazione funzioni solamente per un *.exe e se lo devo fare per ogni *.exe è un vero casino.

Per ora ho risolto il problema installando anche il VB6 sul nuovo PC e copiandoci tutta la direttory del gestionale e tutto funziona ma è una complicazione che vorrei evitare.

Non so come fare.

Ti ringrazio e ciao,
visodont

DooM1
29-11-2004, 14:42
Come è già stato accennato se non erro, alcune librerie vanno registrate.
Allora funziona così.
L'exe cerca nella sua cartella le librerie che gli servono. Se non le trova cerca nella cartella di sistema (ovvero system32 [e non system!]). Ma come ho già detto alcune vanno registrate, altrimenti non funzionano manco a cricco.
A dire il vero credo che andrebbero registrate tutte, ma per alcune non c'è bisogno.
Inoltre se le registri, le puoi mettere in una qualunque cartella, perchè la registrazione indica a windows il percorso per dove trovare la libreria.
Una libreria si registra tramite il programma regsvr32.exe che c'è in system32.
Il parametro /u serve a de-registrare la libreria.
Cmq tutto ciò è per l'installazione manuale.
Per quella automatizzata non saprei... ma credo che basti ad includere le librerie ulteriori che servono nel file cab, e penso che poi il setup le registri in automatico...

A poi volevo fare un'altra domandina:
è possibile aggiugere un collegamento nel menù avvio, oltre che all'eseguibile (o eventuali altri eseguibili) del programma, per la disinstallazione? Che riga di comando devo inserire?

Ciaux :D ;)

visodont
29-11-2004, 20:04
Facciamo una bella cosa, è possibile che serva anche a qualcun' altro.
**************************************************
C'è qualche "anima pia" che possa fare un' esempio pratico PASSO PASSO di come registrare le *.dll per il VB6 ?
**************************************************

Chiamando direttamente quell' exe si ha solo un messaggio di impossibilità a proseguire.

Un esempio vale molto di più di qualsiasi descrizione.

( il file regsvr.32.exe non sta nella carrtella System32 ma in quella system e serve proprio per registrare le dll.)

Ok ......Grazie,
visodont

DooM1
29-11-2004, 20:16
Originariamente inviato da visodont
Facciamo una bella cosa, è possibile che serva anche a qualcun' altro.
**************************************************
C'è qualche "anima pia" che possa fare un' esempio pratico PASSO PASSO di come registrare le *.dll per il VB6 ?
**************************************************

Chiamando direttamente quell' exe si ha solo un messaggio di impossibilità a proseguire.

Un esempio vale molto di più di qualsiasi descrizione.

( il file regsvr.32.exe non sta nella carrtella System32 ma in quella system e serve proprio per registrare le dll.)

Ok ......Grazie,
visodont

Ces... allora provo a spiegare io...
In effetti non sono stato molto completo nel precedente post :D ... a volte sono pigro a scrivere :D
Però voglio ribadire che, come ho appena verificato, il regsvr32.exe io ce l'ho in c:\windows\system32 :D. Non scherzo... forse dipende dall'OS... io ho Windows XP Professional (SP2).
Comunque, per registrare una libreria, il metodo "veloce" ma poco pratico è quello di andare su Start -> esegui, e scrivere:
regsvr32.exe x:\percorsodll\nomedll.dll
Un metodo pratico che consiglio, è quello di fare un collegamente da qualche parte di regsvr32.exe, e poi trascinarci sopra le dll che si intendono registrare.
Per de-registrare, basta ad aggiungere dopo regsvr32.exe, il parametro /u.
Quindi nel metodo di Start -> esegui si scrive ciò:
regsvr32.exe /u x:\percorsodll\nomedll.dll
Altrimenti nell'altro metodo del collegamento, si crea un collegamento, e si modifica la destinazione, aggiungendo appunto alla fine dopo ...regsvr32.exe, /u.
Spero di essere stato chiaro, e di aver capito ciò che mi hai chiesto.
Ciaux :D ;)

disumano
29-11-2004, 23:53
Originariamente inviato da visodont
HO provato a vedere quali siano i "componenti" di tutti gli exe e a metterli nella directory Windows\system, del nuovo PC ma non funziona.

ma tu di ogni exe sai quali sono le dll che servono perché le dichiari tu a vb in fase di progettazione o quantomeno le includi nella sezione "riferimenti" o "componenti"!

se ad es. un exe usa il controllo mswinsck.ocx e un altro usa comct332.ocx, e un altro ancora usa danim.dll, tu aggiungili tutti ad un exe a caso (sempre in fase di progettazione scegliendoli da "riferimenti" o "componenti"), anche se questo non li userà mai.
poi crei un'installazione per quest ultimo exe (la quale inserirà tra i file installati e registrati tutto ciò che hai specificato in fase di progettazione, cioé tutte le librerie e i controlli che usano gli altri exe) e aggiungi gli altri exe che verranno solo copiati in app.path durante l'installazione.

ci hai già provato?

visodont
01-12-2004, 10:02
Ho guardato quali sono i componenti di ogni *.exe e li ho "schiaffati" tutti nella directory System ma forse doveva essere la directory sistem32 per Windows xP

Ora però con il vb6 installato questa prova non la posso fare più , dovrei avere un PC VERGINE di vb6 e di questi tempi anche i PC vergini.......



Avevo provato con il paccheto di installazione ma evidentemente con tutti quegli °exe ci sono problemi perchè non me li porta sul PC nuovo ma ci porta solamente quello per cui è stato fatto il pacchetto. SE si deve fare un pacchetto di installazione per ogni *.exe...buonanotte, preferisco fare tutto a mano se possibile. Per ora non riesco a "cavare il ragno dal buco"

ciao
visodont

cionci
01-12-2004, 10:04
Originariamente inviato da visodont
Ho guardato quali sono i componenti di ogni *.exe e li ho "schiaffati" tutti nella directory System ma forse doveva essere la directory sistem32 per Windows xP
Come ti è già stato detto più volte questo non basta...tutti i componenti di VB vanno registrati...

visodont
01-12-2004, 10:09
Grazie ........Ho capito come si registra una libreria ma questo va fatto sul nuovo Pc naturalmente e per ogni componente che si intende registrare ?

Ma non potevano fare qualcosa di più pratico e semplice questo vb mi comincia a diventare antipatico.

Ciao
visodont

disumano
01-12-2004, 13:32
stasera ti posto un esempio con il mio metodo. a quanto ho capito non hai fatto proprio come ti ho suggerito, forse mi sono espresso in maniera un po' confusa...

visodont
01-12-2004, 21:59
No ! tu sei sicuramente stato chiaro, sono io che sono un po' duro di comprendonio non essendo proprio del "mesitere" ho delle lacune.

Una curiosità :
Nell'elenco dei riferimendi alle *.dll sul progetto è segnalata anche :
msvbvm60.dll e questa c'è su system32

ma è anche segnalata :
msvbvm60.dll\3 ma quest'ultima nella directory system32 non c'è proprio e nemmeno con "cerca" l'ho trovata, sul PCpropri non c'è.

il "ragno sta sempre nel buco" e mi sa che rimarrà li :-(

grazie ancora e ciao,
visodont

visodont
02-12-2004, 10:34
Per registrare una *.dll in VB6 come gentilmente consigliatomi da qualcuno di voi:

Portando una *.dll (es: MSBIND.DLL) direttamente sul collegamento a regsv32.exe ( come suggerito ) si ottiene questo messagglio.
"Impossibile trovare il punto di ingresso smap5 delal procedura nella libreria di collegamento dinamico kernel32.dll"

e poi dopo un altro messaggio :
DllregistrerServer in D:\Documents and Setting\zeno pagliai\DestTop\msbind.DLL succeded"

Se digito in "Esegui" ...regsvr32.exe C:\windows\system\aaplay.dll Ho il seguente messaggio :
"LoadLibrary("C:\windows\system\aaplay.dll") non riuscito, impossibile trovare il modulo specificato.

Se digito in "Esegui" ..."regsvr32.exe D:\windows\system\aaplay.dll" è la stessa cosa:

Ho provato anche a scrivere ...regsvr32.exe "D:\windows\system\aaplay.dll" (con le virgolette)
e anche .................................regsvr32.exe ("D:\windows\system\aaplay.dll") ( con le parentesi)

Se invece di system ci metto system32 nulla cambia.
Ho verificato......regsvr32.exe sta proprio in system e non in system32 mentre in un altro PC è il contrario. Beato chi ci capisce qualcosa cioè...voi !

Il VB6 sta nel disco D: ma le *.DLL sono in C:

Mi ritengo quasi "battuto" e sto pe arrendermi .......

Saluti,
visodont