2009-06-09 20 views
8

Possiedo un progetto .NET che utilizza Crystal Reports. L'applicazione è distribuita usando ClickOnce. Le cose funzionano alla grande se l'utente ha installato Crystal sul proprio computer. Tuttavia, non tutti gli utenti finali hanno installato Crystal Reports sui loro computer. Questi utenti ricevono il seguente errore ....NET ClickOnce non sta installando i file prerequisiti?

"Impossibile installare o eseguire l'applicazione. L'applicazione richiede che l'assembly CrystalDecisions.ReportAppServer.XmlSerialize Versione 10.5.3700.0 sia installato nella Global Assembly Cache (GAC)."

C'è un modo per forzare le installazioni di ClickOnce per garantire che sia installato un prerequisito?

+0

Avete incluso Crystal Reports come parte dei prerequisiti nelle vostre impostazioni di pubblicazione ClickOnce? –

risposta

11

No. C'è molta confusione su ClickOnce e prerequisiti.

ClickOnce fa niente con prereq. Niente. ClickOnce copia i file da un server alla macchina di un cliente e mantiene sincronizzati quei file quando i file del server vengono aggiornati - il gioco è fatto. Non è possibile inserire elementi nel GAC, registrare le DLL, installare file msi, ecc.

Il punto in cui la confusione entra è quando si distribuisce con Visual Studio. VS fa molte cose per te quando pubblichi che non hanno nulla a che fare con ClickOnce. Per uno, crea una bella pagina html per te con alcuni collegamenti alla tua implementazione. Inoltre, ti consente di scegliere tra diversi prereq e creerà un exe bootstrap per te. Suppongo che tu l'abbia fatto per l'installazione di Crystal Reports. Il bootstrapper è solo un modo semplice per gestire più prereq. Piuttosto che dire al tuo utente di installare X, poi Y, poi Z prima di installare la tua app, il bootstrapper rende queste tre installazioni "ininterrotte" in modo che appaiano come se fossero una grande installazione. Può anche saltare installazioni prereq se l'utente lo ha già.

Se si presta attenzione alla pagina html che VS genera, è possibile visualizzare due collegamenti. Uno per il file .application (la distribuzione ClickOnce) e uno per il file exe bootstrapper. Sei praticamente in balia dell'utente e devi fare affidamento su di loro per leggere la pagina ed eseguire il bootstrapper se necessario. L'unica eccezione è il .Net Framework poiché la pagina html può controllarlo attraverso la stringa UserAgent.

Se essi non eseguono eseguono il bootstrapper, otterranno errori simili a quello che si sta chiedendo.

Una possibile soluzione è scrivere codice per verificare se è installato. Potrebbe controllare il registro o la cartella "Programmi"; qualunque cosa tu abbia bisogno di fare per assicurarti che sia installato. Quindi uscire con garbo e informare l'utente se non ce l'hanno. Questo funzionerà finché eseguirai il controllo prima di provare a caricare e utilizzare gli assembly Crystal.

Buona fortuna! Per favore, rispondi se trovi una soluzione migliore.

+1

Whatknott, ho letto alcuni dei tuoi altri post e sento di avere una migliore comprensione. Grazie per aver confermato e spiegato questo argomento. – proudgeekdad

+0

Benvenuto. Ricordo di aver passato tutte le stesse domande e frustrazioni con ClickOnce. Spero di averti salvato un piccolo dolore :) – codeConcussion

+0

Ottima spiegazione! –

-1

Nei Prerequist, selezionare Report cristo per .Net Framework (NOT Crystal Report per Visual Studio) e pubblicare.

Problemi correlati