Libreria DLL per crystal report

mercoledì 30 dicembre 2009 - 15.48

suono2 Profilo | Newbie

Ciao Ragazzi,
sto creando un piccolo progettino con visual studio 2008 implementando un report con CR.

Questo programmino deve essere messo su supporto mobile (tipo pennina USB) e non deve essere installato.

Siccome non crea il pacchetto installante quando lancio il .exe va in errore poichè (ovviamente) non trova la libreria relativa a CR. Come posso ovviare a questa problematica?

O semplicemente, come posso includere la DLL nella pennina e far si che il mio programmino faccia riferimento a quella libreria?

GRazie millee.. Auguri

dante4691 Profilo | Newbie

Hai proato ha inserire la dll nel progetto prima di compilarlo?? Tramite Aggiungi -> elemento esistente.

suono2 Profilo | Newbie

Grazie mille per il suggerimento... adesso proverò ad includerla nel progetto.

suono2 Profilo | Newbie

Ho provato come mi hai indicato tu, ma anche copiando i file .DLL andando nelle specifiche del progetto il path punta alla directory di windows e non del mio progetto.

Come posso Fare? Grazie.

freeteo Profilo | Guru

Ciao,
non sono sicuro sia possibile fare quello che dici, perchè Crystal ha una serie di dll abbastanza numerosa, quindi penso che tu debba aggiungere parecchie dll, oltre a sapere quali sono.
Io avevo postato una lista qui: http://blogs.dotnethell.it/freeteo/lista-dll-per-crystal-report__2381.aspx
ma non è aggiornata alle ultime versioni, quindi potrebbe non essere corretta.

Ti consiglio cmq di dare un'occhiata dentro alle directory:
C:\Program Files\Business Objects\Common\2.8\
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5
in quest'ultima trovi i pacchetti "msi" che contengono il runtime, non so se esiste qualche tool che riesce ad estrarti i vari assembly...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

suono2 Profilo | Newbie

Ciao e grazie per la risposta... Mettiamo il caso che riesco a trovare tutte le librerie di Crystal Report, come faccio a fare in modo che il programma punti alle librerie presenti nella directory dove gira quest'ultimo? Ho provato ad includerle nel progetto, ma automaticamente il riferimento passa alle cartelle presenti sul mio PC...

Nel caso in cui, tale soluzione non è raggiungibile, hai qualche idea per fari girare il programmino senza effettuare un'installazione?

Grazie mille per l'aiuto... Buona serata ...

dante4691 Profilo | Newbie

ciao e scusa se non ti ho risp prima, puoi provare a copiare i file dll che ti servono nella per esempio nella penna usb dove vorresti mettere il prog e da li includerle nel progetto...comunque e strano che aggiundendo i file dll dall'esprora soluzioni, quando viene compilato il progetto non vengono create nella cartella.

suono2 Profilo | Newbie

Ciao e grazie ancora per l'aiuto... sto facendo in questo modo:

Dal mio progetto sono andato su My project -> Riferimenti. Poi per ogni riferimento a Crystal o settato la copia in locale ed ho visto che automaticamente mi ha copiato le DLL nella cartella Debug dove c'è l'eseguibile.

Siccome uso anche i grafici, questa soluzione va bene, prima mi andava in errore adesso con la copia in locale va bene.

Però Crystal ancora non mi funziona ... secondo te devo aggiungere altre DLL oltre a quelle che mi elenca? Ti posto anche una screenshot ...


Grazie ancora per l'aiuto ...

1127x332 44Kb

freeteo Profilo | Guru

Ciao,
si secondo me oltre ai riferimenti, probabilmente devi incorporare altre librerie che trovi su quella directory che ti ho indicato prima, per farlo senza problemi, puoi fare nella treeview del progetto->tasto Dx->Aggiungi->Elemento esistente e poi nelle proprietà del file appena ggiunto, gli dici "Build Action=None" e "CopyToOutput=Always" così viene trattato come un qualsiasi file di documento, quindi viene copiato e basta senza essere compilato etc...
Se arrivi a trovare tutte le librerie potrebbe funzionare, ti dico "potrebbe" perchè non vorrei che Crystal facesse cmq dei controlli sul registro di chiavi per funzionare...

Per la cronaca: Io una soluzione completamente portabile l'avevo fatta con Sql Reporting (quindi report rdlc) dove bastava copiare le 4 librerie del runtime del report ed il gioco è fatto...ma chiaramente tu non so se puoi cambiare motore di report a questo punto dello sviluppo...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

suono2 Profilo | Newbie

Ciao e grazie per le risposte...

Sto cercando di fare un workaround ...
Se il PC dove viene lanciato (ovviamente da pennina) il programmino non vi è installato il componente "CRRedist2008_x86.msi" allora uscirà una pop-up all'utente informandolo che per continuare dovrà installare il .msi .Premendo ok installerà il componente ed al prossimo avvio non sarà più chiesto.

Cosa ne pensate?

PS. Come posso intercettare l'eccezione di un'import andata male? in modo tale da gestire la pop-up?

Grazie ancora...

freeteo Profilo | Guru

>Cosa ne pensate?
non è il massimo, ma inevitabilmente se hai bisogno di un runtime non ci sono tante alternative...in qualche modo devi installarlo.


>PS. Come posso intercettare l'eccezione di un'import andata male?
>in modo tale da gestire la pop-up?
secondo me fai prima a vedere se esiste quel determinato file che sai essere parte del runtime nella directory dove dovrebbe essere...oppure guardando tra i programmi installati (girando tra le chiavi di registro che te lo dicono)

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

suono2 Profilo | Newbie

>>PS. Come posso intercettare l'eccezione di un'import andata male?
>>in modo tale da gestire la pop-up?
>secondo me fai prima a vedere se esiste quel determinato file
>che sai essere parte del runtime nella directory dove dovrebbe
>essere...oppure guardando tra i programmi installati (girando
>tra le chiavi di registro che te lo dicono)

Avevo pensato anche io un controllo sulla directory dove dovrebbe essere installato, solo che ho il timore che quest'ultima possa cambiare tra i vari sistemi operativi (XP, Vista o Win7) ...

Mentre la tua seconda soluzione la vedo più "pulita", come faccio a "girare" tra le chiavi di registro? Se è troppa onerosa la spiegazione sono disposto a leggere esempi o guide... su quest'argomento sono a secco

Grazie mille per l'aiuto...

suono2 Profilo | Newbie

Sto provando il metodo

My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Business Objects\10.5\Crystal Reports", "??? Cosa metto ???", Nothing)

Ma ho notato una cosa strana, sono andato su regedit e trovo la directory di crystal, ma le chiavi di registro non ci sono all'interno delle sotto cartelle...

freeteo Profilo | Guru

Ciao,
per quanto riguarda l'enumerazione delle applicazioni installate sul pc, puoi usare questo esempio:
http://www.onedotnetway.com/get-a-list-of-installed-applications-using-linq-and-c/
fai un controllo, se installato il runtime di crystal ti compare qualche voce in questo ciclo,perchè non ricordo esattamente se installando il runtime venga inserita qualche voce nel registry, anche se penso proprio di si...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

suono2 Profilo | Newbie

hmm ho controllato ma non inserisce nessuna voce nel registro, crea solo le cartelle ma senza voci registro (ho visto semplicemente con regedit) ...

Grazie comunque ...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5