Newsgroup: it.comp.lang.c++
Titolo: Problemi con Builder e InstallShield

Salve a tutti,
ho un'applicazione che dovrei distribuire, creata con C++ Builder 5.0
L'applicazione fa uso di alcuni componenti presenti nelle palette:
Standard, Dialogs, Win32, System, Additional (TChart).
Compilo senza spuntare la checkbox "Runtime packages" nel tab packages.
Quando creo il set di dischi di intallazione con InstallShield Express
(quello fornito sullo stesso CD), spunto "Standard VCL packages" e "Tee
Chart component packages" per farmi installare anche i files "VCL50.BPL" e
"TEE50.BPL". Nessun altro file, tranne l'exe e quelli dell'applicazione,
viene installato.
Il problema è questo: l'installazione su un computer dove non è installato
il Builder, avviene apparentemente senza problemi, ma lanciando il programma
viene presentato il messaggio d'errore FAILED TO GET DATA FOR
"NomediUnaMiaFunzione", e termina.
Che cosa può essere?
P.S.: quando distribuivo la stessa applicazione con C++ Builder 3 e relativo
Intallshield, venivano installati anche i files "CP3240MT.DLL" e
"BORLNDMM.DLL", che non vengono presi in considerazione dal nuovo
InstallShield.
Qualcuno ha suggerimenti? Ho letto tutto quello che c'era da leggere, senza
trovare soluzione al problema...
--
Ciao, AntoGal
*************************************************
Gestione punti vendita (casse e pos NCR)
 
www.powerretail.it
-------------------------------------------------------------
per scaricare un gioco di DAMA ITALIANA
http://volftp.mondadori.com/italiani/galletta/
*************************************************

Compilo senza spuntare la checkbox "Runtime packages" nel tab packages.
[snip]
Devi tirarti dietro (con l'installazione) tutte le dll ed i bpl
che ci vogliono. Per sapere quali potresti provare
ad usare tdump TuaApp.exe.
Ciao

 ad usare tdump TuaApp.exe.
Grazie per il consiglio. Facendo il dump sull'eseguibile, ho visto che ci
sono riferimenti alle seguenti DLL:
ADVAPI32.DLL, KERNEL32.DLL, VERSION.DLL
WINSPOOL.DRV, COMCTL32.DLL, COMDLG32.DLL
GDI32.DLL, SHELL32.DLL, USER32.DLL, WINMM.DLL
OLE32.DLL, OLEAUT32.DLL
le quali dovrebbero essere già tutte presenti nell'altro computer (o no?).
Adesso provo a spuntare, da InstallShield, tutti i BPL selezionabili, per
verificare se sto dimenticando qualcosa io, o se si tratta di qualche bug di
IS express, durante la creazione delle necessarie chiavi nel registry, o
nell'impacchettamento dei files necessari.


 "NomediUnaMiaFunzione", e termina.
Allora, posto la soluzione, sperando che possa essere utile anche ad altri,
qualora si imbattessero in questo problema.
Riepilogo (sperando di aver capito bene la faccenda):
Nel menù Project->Options del C++ Builder 5, tab Packages, c'è l'opzione
"RunTime packages".
Se l'opzione è spuntata, l'eseguibile sarà più piccolo, ma dovranno essere
installate tulle le librerie BPL cui l'eseguibile fa riferimento. Queste
vanno specificate quando si crea il set di dischi di installazione con
InstallShield Express (fornito sullo stesso CD). Spuntando ad esempio
"Standard VCL packages", verrà installata "VCL50.BPL". Per sapere quali BPL
sono necessarie, basta fare un Tdump sull'eseguibile, come mi è stato
suggerito da Giuliano in un altro post.
La seconda possibilità è di includere tutto nell'eseguibile, che di
conseguenza sarà più grosso, ma nessuna libreria dovrà essere installata.
Quindi, le relative checkbox, nelle impostazioni di InstallShield, non
andranno spuntate. Infatti, facendo il Tdump sull'eseguibile, si vedrà che
non c'è alcun riferimento a BPL.
Se percaso le librerie vengono incluse nell'eseguibile, e si chiede a
InstallShield di installare anche le relative BPL, l'eseguibile non parte
segnalando il messaggio di errore di cui sopra. E' strano, perchè
teoricamente nell'installazione mi sto solo portando dietro dei file
superflui, ma l'applicazione dovrebbe partire ugualmente.
