Fragensteller
Probleme bei ClickOnce: Programm wird nicht installiert

Allgemeine Diskussion
-
Hallo, ärgere mich schon seit einer Woche mit einem doofen Problem herunm. Ich habe eine Applikation in Wpf / C# erstellt, die ich für weitere Maschinen mit ClickOnce auf underem Fileserver veröffemtlicht habe. Hatte auch alles bisher toll funktioniert, die Updates kamen auch immer an. Dann kamen neue Anforderungen hinzu. Man mußte Daten filtern können und Zeichnungen anzeigen. Ich habe die beide Punkte dann als zwei Projekte mit in das Ur-Projekt gezogen, und habe soweit alles getestet. Das Progaramm läuft auf meinem Win7-64 Bit-System. Die anderen Rechner in der FIrma sind noch WinXP-32 Bit.
Tja, dann bin ich hingegangen und habe die beiden zusätzlichen Projektmappen so eingestellt, das daraus DLL's werden, diese werden dann mit ClickOnce mit dem Urprojekt veröffentlicht. Allerdings gibt es jetzt da Probleme. Ich kann das Update nicht installieren, es kommt eine Meldung, dias Format der Applikation ist falsch, oder das Manifest ist nicht gültig. Das war auch so, wenn probiere, das setup.exe auf meinem Win7-Rechner zu starten. Dann habe ich begonnen zu experimentieren. Ich habe die Zielplattform auf "x64" gesetzt, das alen drei Projekten. Dann lief die setup.exe auf meinem Win7-Rechner los, stoppte dann aber mit der MEldung, der Plattenplatz sei zu gering (habe aber noch 200 GB Platz). Jetzt mal zu meinem Problem, das ich morgen analysieren kann wen ich in der Firma bin und das auf den Win32-Rechnern testen kann:
Wenn ich für die Anwendung für 32- und 64-Bitsysteme bereitstellen will, dann muss ich doch die EInstellunegn so vornehmen wie im Bild:
Oder mache ich da was falsch? Wenn ich mit dieser Einstekkung veröffentliche, muss der Client doch die richtige Installation für seine Architektur auswählen, oder? Ich habe allerdings noch ein paar DLL's vom SqlServer dabei, da ich die SMO's verwende für erzeugung von Tabellen auf dem SqlServer.
Hat jemand eine Erklärung für mein Problem?
Ach ja, wen ich die *.exe vom Projekt an einer Win32 oder an meinem Win7- System soausführe, startet das Programm (und war da noch auf x86-Architektur eingestellt).
oema von MSDN
Alle Antworten
-
Hallo,
wenn Du Komponenten wie SMO verwendest, so wirst Du für jede Plattform (x86 sowie x64) ein Setup bereitstellen müssen.
Denn die SQL Server Komponenten enthalten auch unmanaged Code. Und der wiederum muss übereinstimmen, sonst erhälst Du eine BadImageFormatException.
Alternativ verwende durchweg x86 und stelle sicher, dass Du das passende SQL SMO installiert hast, z. B. aus dem SQL Server 2012 Feature Pack (Und für alle anderen ungenannten unmanged Komponenten ebenso).
Andersrum: Mit AnyCPU wirst Du immer Probleme bekommen.
Gruß Elmar
-
Hallo Elmar, bevor ich heute morgen etwas versuche: Mein "Ur-Projekt" mit nur einem Projekt in der Projektmappe hatte schon die Sql-Features programmtechnisch integriert. Da ging auch noch alles. Somit nun die Frage, warum geht es nicht mehr, wenn ich "x86" eingestellt habe. Habe "Anwendung ohne Manifest erstellen" eingestellt und trotzdem die Probleme ?
oema von MSDN
-
Hallo,
die Plattform ist Bestandteil der Anwendungs-Identität und eine Änderung verhindert Aktualisierungen, siehe Changing platform target from AnyCPU to x86 breaks ClickOnce updates
Gruß Elmar
-
Hallo Elmar, habe das Problem gefunden. Von meinem "Ur-Projekt" war die "*.exe" zweimal in den Anwendungsdateien. kaum hatte ich die erste ausgesschlossen hat es funktioniert. Dann habe ich getestet, damit es auf 32- und 64-Bitsystemen läuft und per "ClickOnce" funktioniert. Das hat dann geklappt. Allerdings konnte ich bei den Maschinen die neue Version nicht automatisch updaten lassen, da kam dann eine Fehlermeldung. Hängt das dann eben damit zusammen, weil sich die Architektur zur vorigen Version geändert hat? Wie kann ich sowas am besten machen, wenn mir so ein Fehler in einer neuen Version passiert, damit ich nicht an alle Maschinen händisch alles deinstallieren und neu installieren muss? Kann ich in meine neue Version eine Deinstallation einbauen, falls es etwas zu deinstallieren gibt? Die neue Version könnte ich dann auf einen anderen Pfad legen, oder?
Gibt es da Beispiele für?
oema von MSDN