J'essaye de déployer une application ClickOnce, mais l'installation échoue sur le client. Voici le journal des erreurs:
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.
L'exe principal que je dois déployer est MyProductFrontDesk.exe
, qui a une dépendance sur MyProductSiteServer.exe
- et qui semble être là où l'erreur est levée: "La référence dans le manifeste ne correspond pas à l'identité de l'assembly téléchargé MyProductSiteServer.exe."
Quel manifeste doit être corrigé? Et comment?
c#
visual-studio-2010
clickonce
Shaul Behr
la source
la source
Réponses:
Il y avait un problème avec Visual Studio 2008 qui est résolu en n'incorporant pas le manifeste par défaut - l'un des commentaires sur cet article suggère que le problème existe toujours dans Visual Studio 2010.
la source
<assemblyIdentity/>
élément du manifeste personnalisé peut être ajusté (ou omis pour permettre au compilateur d'émettre la bonne identité d'assemblage) dans votre.manifest
fichier personnalisé , ce qui permet de spécifier des choses comme<requestedExecutionLevel/>
sans casser ClickOnce.J'ai eu le même problème lorsque j'ai ajouté une référence à un autre projet.
La façon de résoudre ce problème était d'activer les paramètres de sécurité ClickOnce dans tous les projets référencés, comme Ian l'a expliqué ici (c'est moi qui souligne):
Je pense que c'est la bonne façon de résoudre ce problème lorsque vous faites référence à un autre projet sous la même solution.
Le message lié au forum a expiré maintenant, mais il est disponible dans les archives ici .
la source
.cproj
fichier avec<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Lorsque mes déploiements ClickOnce (hors production) ont cessé de fonctionner, j'avais tout oublié.Je rencontrais le même problème, mais ma solution était très différente.
Mon application ClickOnce faisait référence à un autre projet de fichier EXE dans ma solution, donc lorsque le client l'a téléchargé et qu'il y avait un autre fichier EXE, celui-ci n'avait pas de manifeste.
La suppression de la dépendance à un autre exécutable a résolu mon problème.
la source
J'ai confirmé que le problème existe également dans Visual Studio 2010. La sélection de «Créer une application sans manifeste» dans Propriétés du projet - Application - Ressources a résolu le problème.
la source
Cela peut également se produire si vous avez deux versions différentes d'un package NuGet référencées dans différents fichiers DLL de votre projet. Dans mon cas, j'utilisais un framework appelé Catel, et j'avais une version plus récente référencée dans un fichier DLL qu'un autre (oubli), mais cela a provoqué ClickOnce à cracher cette erreur. Le référencement de la même version a résolu le problème.
la source
J'ai eu le même problème, mais ma solution était de changer la «cible de la plate-forme» en «x86» (Propriétés du projet -> onglet Construire). Il a été défini sur N'importe quel processeur. Dès que j'ai changé le paramètre et republié, le programme d'installation de ClickOnce a pu se terminer.
la source
J'ai rencontré la même erreur lors du déploiement avec le projet défini sur Debug. Lorsqu'il a été rétabli en Release, il n'y avait aucune erreur.
la source
J'ai eu exactement le même problème. Je n'ai pas pu supprimer la dépendance car elle était requise par le projet principal. Le deuxième projet était un projet de console.
Je suis passé à la bibliothèque de classes , puis tout a fonctionné.
la source
Une autre solution de contournement, au cas où l'exe de dépendance avec le manifeste d'application défectueux ne peut pas être modifié (par exemple, provenant d'un package NuGet). Le binaire peut être inclus en tant que contenu avec une extension factice afin que ClickOnce n'essaie pas de valider le manifeste, puis renommé au démarrage de l'application.
csproj:
App.xaml.cs:
la source
J'ai eu le même problème, et j'ai essayé toutes les solutions suggérées précédemment ici, et toutes n'ont pas fonctionné.
Je l'ai corrigé en changeant l'emplacement de mise à jour. Depuis les propriétés du projet -> Publier -> Mises à jour . Remplacez l'emplacement de mise à jour par votre dossier publié.
la source
ÉGALEMENT RÉSOLU POUR ClickOnce .exe appelant .exe appelant .exe.
J'ai également eu ce problème, en utilisant VB.NET dans Visual Studio 2010.
J'ai une application ClickOnce Windows Forms qui fait référence à une deuxième application Windows Forms qui à son tour fait référence à une troisième application Windows Forms. (Ces deuxième et troisième applications sont EXE fichiers plutôt que des fichiers DLL pour plus de simplicité, car elles sont également susceptibles d'être exécutées de manière autonome ou appelées avec des propriétés qui leur sont transmises.)
J'ai dû commenter le contenu du manifeste des deuxième et troisième applications par:
Procédure pas à pas: déploiement manuel d'une application ClickOnce
Cela fonctionne parfaitement.
la source
Si vous avez un programme principal qui en référence un autre, vous devez faire l'astuce "Créer une application sans manifeste" sur le programme du programme principal:
Projet -> Propriétés -> Onglet Application -> Ressources -> Manifeste -> menu déroulant "Créer une application sans manifeste"
puis basculez vers les propriétés du projet du programme référencé et répétez le processus.
la source
J'utilise Visual Studio 2012 sur Windows 7 et je dois publier une solution composée de deux projets.
Comme l'a souligné Eduardo, marquer les deux projets comme ClickOnce et activer l'application Full Trust résout le problème.
la source
J'avais un problème un peu différent que j'ai pu résoudre et j'ai donc voulu publier. Mes problèmes étaient que je dirigeais 3 branches sur TFS. J'avais amélioré les contrôles Telerik dans l'une de mes succursales mais pas dans les autres. Une fois que j'ai mis à jour les contrôles Telerik dans les 3 branches et republié, cela a fonctionné et cette erreur a disparu.
J'utilisais VS2015 à l'époque.
la source
C'est intéressant. Je viens de redéployer l'application et le problème est résolu. Peut-être une corruption de fichier à cause du réseau.
la source
J'utilise
mage.exe
pour générer mon manifeste. L'ajout de ceci à mon a.csproj
résolu le problème. Vous pouvez également essayer l'-nowin32manifest
indicateur du compilateur ; Je ne l'ai pas testé. Je ne vois pas «Créer une application sans manifeste» de stuartd dans Visual Studio 2017; Je pense que c'est ce qu'il fait cependant.J'ai aussi ceci dans mon
.csproj
:la source
Dans ma version de Visual Studio 2017, version 15.6.6 (mais il y en avait peut-être plus tôt), j'ai trouvé que les fichiers d'application n'étaient pas dans le projet Exe clic droit et publier, mais sous l'onglet Propriétés du projet Publier où vous pouvez définir quels des fichiers d'application que vous souhaitez placer dans l'installation.
Alors éliminez ceux qui posent problème. Si quelque chose est déjà installé sur un ordinateur sur lequel cette application sera installée, il n'y a aucune raison d'essayer de la réinstaller de toute façon, sauf si vous avez besoin de la référence pour qu'elle s'exécute. S'il devait installer ce qui était déjà sur le PC, mais dans un dossier différent, cela pourrait ne pas fonctionner. Il est préférable d'utiliser les autres applications ou les assemblys dll au même emplacement qu'ils étaient précédemment installés.
la source
J'ai eu le même problème il y a quelques minutes, et voici les étapes que j'ai utilisées pour le résoudre.
Clé
Liste de contrôle
Accédez aux propriétés -> Application -> Ressources -> Vérifiez les icônes et le manifeste (pour a et b)
Accédez aux propriétés -> Build: assurez-vous que a et b sont sur la même plate-forme cible
Accédez à propriétés -> Sécurité et assurez-vous que les paramètres a et b sont cochés: «Activer les paramètres de sécurité ClickOnce» et «Ceci est une application de confiance totale»
Accédez aux propriétés -> Publier: je vous recommande de modifier le chemin du dossier de publication
la source
J'ai eu exactement le même problème avec mon application VS 2019.
J'ai essayé de créer l'application sans manifeste, mais cela n'a pas fonctionné.
Ce qui a fonctionné était cependant le suivant:
Espérons que cela aide!
la source