.NET ClickOnce nicht erforderliche Dateien installieren?

8

Ich habe ein .NET-Projekt, das Crystal Reports verwendet. Die Anwendung wird mit ClickOnce verteilt. Dinge funktionieren gut, wenn der Benutzer Crystal auf ihrem Computer installiert hat. Nicht alle Endbenutzer haben jedoch Crystal Reports auf ihren Computern installiert. Diese Benutzer erhalten den folgenden Fehler ...

"Die Anwendung kann nicht installiert oder ausgeführt werden. Die Anwendung erfordert, dass die Assembly CrystalDecisions.ReportAppServer.XmlSerialize Version 10.5.3700.0 zuerst im globalen Assemblycache (GAC) installiert wird."

Gibt es eine Möglichkeit, ClickOnce-Installationen zu erzwingen, um sicherzustellen, dass eine Voraussetzung installiert ist?

    
proudgeekdad 09.06.2009, 18:13
quelle

2 Antworten

11

Nein. Es gibt eine Menge Verwirrung über ClickOnce und Voraussetzungen.

ClickOnce macht nichts mit den Voraussetzungen. Nichts. ClickOnce kopiert Dateien von einem Server auf den Computer eines Clients und hält diese Dateien synchron, wenn die Serverdateien aktualisiert werden - das ist es. Es kann keine Dinge in den GAC bringen, dlls registrieren, msi-Dateien installieren, usw.

Wo die Verwirrung entsteht, wenn Sie mit Visual Studio bereitstellen. VS macht mehrere Dinge für Sie, wenn Sie veröffentlichen, die wirklich nichts mit ClickOnce zu tun haben. Zum einen erstellt es eine nette HTML-Seite für Sie mit einigen Links zu Ihrer Bereitstellung. Außerdem können Sie aus mehreren Voraussetzungen auswählen und eine Bootstrapper-Exe für Sie erstellen. Ich gehe davon aus, dass Sie dies für die Installation von Crystal Reports getan haben. Der Bootstrapper ist nur eine einfache Möglichkeit, mehrere Voraussetzungen zu verwalten. Anstatt Ihrem Benutzer zu sagen, dass er X, dann Y, dann Z vor der Installation Ihrer App installieren soll, macht der Bootstrapper diese drei Installationen "nahtlos", so dass sie wie eine große Installation erscheinen. Es kann auch erforderliche Installationen überspringen, wenn der Benutzer es bereits installiert hat.

Wenn Sie Ihre HTML-Seite beachten, die VS generiert, können Sie zwei Links sehen. Eine für Ihre .application-Datei (die ClickOnce-Bereitstellung) und eine für die Bootstrapper-EXE. Sie sind dem Benutzer ziemlich ausgeliefert und müssen sich darauf verlassen, dass sie die Seite lesen und bei Bedarf den Bootstrapper ausführen. Die einzige Ausnahme ist das .Net Framework, da die HTML-Seite dies über die UserAgent-Zeichenfolge überprüfen kann.

Wenn sie den Bootstrapper nicht starten, erhalten sie Fehler, die denen ähneln, nach denen Sie fragen.

Eine mögliche Lösung besteht darin, Code zu schreiben, um zu überprüfen, ob er installiert ist. Es könnte die Registrierung oder den Ordner "Programme" überprüfen; was auch immer Sie tun müssen, um sicherzustellen, dass es installiert ist. Dann beenden Sie es elegant und informieren Sie den Benutzer, wenn sie es nicht haben. Das funktioniert so lange, wie Sie die Überprüfung durchführen, bevor Sie versuchen, die Crystal-Baugruppen zu laden und zu verwenden.

Viel Glück! Bitte antworten Sie, wenn Sie eine bessere Lösung finden.

    
codeConcussion 09.06.2009, 22:04
quelle
-1

Wählen Sie in den Voraussetzungen Krystenbericht für .Net Framework (NICHT Crystal Reports für Visual Studio) und veröffentlichen Sie.

    
Anoosh Rahman 26.12.2010 05:47
quelle

Tags und Links