Ich versuche, eine ClickOnce-Anwendung bereitzustellen, aber die Installation auf dem Client schlägt fehl. Hier ist das Fehlerprotokoll:
PLATFORM VERSION INFO
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.1
System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll : 4.0.31106.0 (Main.031106-0000)
SOURCES
Deployment url : http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
Deployment Provider url : http://MyProduct.com/Download/Workstation/MyProduct%20Front%20Desk.application
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
Application url : http://MyProduct.com/Download/Workstation/Application%20Files/MyProduct%20Front%20Desk_1_0_0_7/MyProduct%20Front%20Desk.exe.manifest
Server : Microsoft-IIS/7.5
X-Powered-By : ASP.NET
IDENTITIES
Deployment Identity : MyProduct Front Desk.application, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil
Application Identity : MyProduct Front Desk.exe, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil, type=win32
APPLICATION SUMMARY
* Installable application.
ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application resulted in exception. Following failure messages were detected:
+ Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.
COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.
WARNINGS
There were no warnings during this operation.
OPERATION PROGRESS STATUS
* [03/17/11 11:51:04] : Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application has started.
* [03/17/11 11:51:04] : Processing of deployment manifest has successfully completed.
* [03/17/11 11:51:04] : Installation of the application has started.
* [03/17/11 11:51:05] : Processing of application manifest has successfully completed.
* [03/17/11 11:51:06] : Found compatible runtime version 4.0.30319.
* [03/17/11 11:51:06] : Request of trust and detection of platform is complete.
ERROR DETAILS
Following errors were detected during this operation.
* [03/17/11 11:51:30] System.Deployment.Application.InvalidDeploymentException (RefDefValidation)
- Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.
Die wichtigste Exe, die ich bereitstellen muss, ist eine MyProductFrontDesk.exe
, von der eine Abhängigkeit besteht MyProductSiteServer.exe
- und an der anscheinend der Fehler ausgelöst wird: "Die Referenz im Manifest stimmt nicht mit der Identität der heruntergeladenen Assembly MyProductSiteServer.exe überein."
Welches Manifest muss korrigiert werden? Und wie?
c#
visual-studio-2010
clickonce
Shaul Behr
quelle
quelle
Antworten:
Es gab ein Problem mit Visual Studio 2008, das behoben wurde, indem das Standardmanifest nicht eingebettet wurde. Einer der Kommentare zu diesem Artikel weist darauf hin, dass das Problem in Visual Studio 2010 weiterhin besteht.
quelle
<assemblyIdentity/>
Element im benutzerdefinierten Manifest kann in Ihrer benutzerdefinierten.manifest
Datei angepasst (oder weggelassen werden, damit der Compiler die richtige Assemblyidentität ausgibt) , sodass Sie beispielsweise Dinge angeben können,<requestedExecutionLevel/>
ohne ClickOnce zu beschädigen.Ich hatte das gleiche Problem, als ich einen Verweis auf ein anderes Projekt hinzufügte.
Der Weg, dies zu lösen, bestand darin, die ClickOnce-Sicherheitseinstellungen in allen referenzierten Projekten zu aktivieren , wie Ian hier erklärte (Hervorhebung von mir):
Ich glaube, dies ist der richtige Weg, um das Problem zu beheben, wenn auf ein anderes Projekt unter derselben Lösung verwiesen wird.
Der verlinkte Forumsbeitrag ist inzwischen abgelaufen, steht aber hier im Archiv zur Verfügung .
quelle
.cproj
<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Als meine (nicht produktiven) ClickOnce-Bereitstellungen nicht mehr funktionierten, hatte ich alles vergessen.Ich hatte das gleiche Problem, aber meine Lösung war sehr unterschiedlich.
Meine ClickOnce-Anwendung hat in meiner Lösung auf ein anderes EXE-Dateiprojekt verwiesen. Als der Client es herunterlud und es eine andere EXE-Datei gab, hatte diese kein Manifest.
Das Entfernen der Abhängigkeit von einer anderen ausführbaren Datei löste mein Problem.
quelle
Ich habe bestätigt, dass das Problem auch in Visual Studio 2010 besteht. Durch Auswahl von "Anwendung ohne Manifest erstellen" in Projekteigenschaften - Anwendung - Ressourcen wurde das Problem behoben.
quelle
Dies kann auch passieren, wenn Sie zwei verschiedene Versionen eines NuGet- Pakets haben, auf die in verschiedenen DLL-Dateien in Ihrem Projekt verwiesen wird. In meinem Fall verwendete ich ein Framework namens Catel und hatte eine neuere Version, auf die in einer DLL-Datei verwiesen wurde als in einer anderen (Versehen), aber dies führte dazu, dass ClickOnce diesen Fehler ausspuckte. Durch Verweisen auf dieselbe Version wurde das Problem behoben.
quelle
Ich hatte das gleiche Problem, aber meine Lösung bestand darin, das "Plattformziel" in "x86" zu ändern (Projekteigenschaften -> Registerkarte "Erstellen"). Es wurde auf Beliebige CPU eingestellt. Sobald ich die Einstellung geändert und erneut veröffentlicht hatte, konnte das ClickOnce-Installationsprogramm abgeschlossen werden.
quelle
Beim Bereitstellen mit dem auf Debug eingestellten Projekt ist der gleiche Fehler aufgetreten. Als es wieder auf Release geändert wurde, gab es keinen Fehler.
quelle
Ich hatte genau das gleiche Problem. Ich konnte die Abhängigkeit nicht entfernen, da sie vom Hauptprojekt benötigt wurde. Das zweite Projekt war ein Konsolenprojekt.
Ich wechselte zur Klassenbibliothek und dann funktionierte alles.
quelle
Eine weitere Problemumgehung für den Fall, dass die Abhängigkeitsexe mit dem Manifest der fehlerhaften App nicht geändert werden kann (z. B. aus einem NuGet-Paket). Die Binärdatei kann als Inhalt in eine Dummy-Erweiterung aufgenommen werden, sodass ClickOnce nicht versucht, das Manifest zu validieren und es dann beim Start der App umzubenennen.
csproj:
App.xaml.cs:
quelle
Ich hatte das gleiche Problem und habe alle zuvor vorgeschlagenen Lösungen hier ausprobiert, und alle haben nicht funktioniert.
Ich habe es behoben, indem ich den Speicherort des Updates geändert habe. Über Projekteigenschaften -> Veröffentlichen -> Updates . Ändern Sie den Aktualisierungsspeicherort in Ihren veröffentlichten Ordner.
quelle
AUCH GELÖST FÜR ClickOnce .exe Aufruf .exe Aufruf .exe.
Ich hatte dieses Problem auch bei der Verwendung von VB.NET in Visual Studio 2010.
Ich habe eine ClickOnce Windows Forms-Anwendung, die auf eine zweite Windows Forms-Anwendung verweist, die wiederum auf eine dritte Windows Forms-Anwendung verweist. (Diese zweite und dritte Anwendung sind EXE Einfachheit halber Dateien und keine DLL-Dateien, da sie wahrscheinlich auch eigenständig ausgeführt oder mit an sie übergebenen Eigenschaften aufgerufen werden.)
Ich musste BEIDEN Inhalt der zweiten und dritten Anwendung auskommentieren :
Exemplarische Vorgehensweise: Manuelles Bereitstellen einer ClickOnce-Anwendung
Es funktioniert perfekt.
quelle
Wenn Sie ein Hauptprogramm haben, das auf ein anderes verweist, müssen Sie den Trick "Anwendung ohne Manifest erstellen" im Programm des Hauptprogramms ausführen:
Projekt -> Eigenschaften -> Registerkarte Anwendung -> Ressourcen -> Manifest -> Dropdown-Liste "Anwendung ohne Manifest erstellen"
Wechseln Sie dann zu den Projekteigenschaften des referenzierten Programms und wiederholen Sie den Vorgang.
quelle
Ich verwende Visual Studio 2012 unter Windows 7 und muss eine Lösung veröffentlichen, die aus zwei Projekten besteht.
Wie Eduardo betonte, wird das Problem behoben, indem beide Projekte als ClickOnce markiert und die Full Trust-Anwendung aktiviert werden.
quelle
Ich hatte ein etwas anderes Problem, das ich lösen konnte, und deshalb wollte ich etwas posten. Meine Probleme waren, dass ich 3 Filialen von TFS aus betrieben habe. Ich hatte die Telerik-Steuerung in einer meiner Niederlassungen aktualisiert, in den anderen jedoch nicht. Nachdem ich die Telerik-Steuerelemente in allen drei Zweigen aktualisiert und erneut veröffentlicht hatte, funktionierte sie und dieser Fehler verschwand.
Ich habe damals VS2015 ausgeführt.
quelle
Es ist interessant. Ich habe gerade die Anwendung erneut bereitgestellt und das Problem gelöst. Möglicherweise eine Dateibeschädigung aufgrund des Netzwerks.
quelle
Ich benutze
mage.exe
, um mein Manifest zu generieren. Das Hinzufügen zu meinem hat.csproj
das Problem behoben. Sie können auch das-nowin32manifest
Compiler-Flag ausprobieren . Ich habe es nicht getestet. Ich sehe stuartds "Anwendung ohne Manifest erstellen" in Visual Studio 2017 nicht. Ich denke, das ist es, was es tut.Ich habe dies auch in meinem
.csproj
:quelle
In meiner Version von Visual Studio 2017, Version 15.6.6 (aber möglicherweise schon früher), habe ich festgestellt, dass sich die Anwendungsdateien nicht in der rechten Maustaste auf Projekt exe und veröffentlichen befinden, sondern auf der Registerkarte Veröffentlichen von Projekteigenschaften, auf der Sie festlegen können, welche der Anwendungsdateien, die Sie in die Installation einfügen möchten.
Nehmen Sie also diejenigen heraus, die ein Problem darstellen. Wenn auf einem Computer, auf dem diese App installiert wird, bereits etwas installiert ist, gibt es keinen Grund, eine Neuinstallation zu versuchen, es sei denn, Sie benötigen die Referenz, damit sie ausgeführt werden kann. Wenn es installiert, was sich bereits auf dem PC befand, aber in einem anderen Ordner, funktioniert es möglicherweise nicht. Es ist am besten, die anderen Anwendungen oder DLL-Assemblys am selben Speicherort zu verwenden, an dem sie zuvor installiert wurden.
quelle
Ich hatte vor ein paar Minuten das gleiche Problem. Nachfolgend sind die Schritte aufgeführt, mit denen ich es gelöst habe.
Schlüssel
Checkliste
Navigieren Sie zu Eigenschaften -> Anwendung -> Ressourcen -> Symbole und Manifest überprüfen (für a und b).
Navigieren Sie zu Eigenschaften -> Erstellen: Stellen Sie sicher, dass sich a und b auf derselben Zielplattform befinden
Navigieren Sie zu Eigenschaften -> Sicherheit und stellen Sie sicher, dass a und b die folgenden Einstellungen aktiviert haben: "ClickOnce-Sicherheitseinstellungen aktivieren" und "Dies ist eine voll vertrauenswürdige Anwendung".
Navigieren Sie zu Eigenschaften -> Veröffentlichen: Ich empfehle, den Pfad des Veröffentlichungsordners zu ändern
quelle
Ich hatte genau das gleiche Problem mit meiner VS 2019-Anwendung.
Ich habe versucht, die Anwendung ohne Manifest zu erstellen, aber das hat nicht funktioniert.
Was jedoch funktionierte, war Folgendes:
Hoffentlich hilft das!
quelle