Estoy intentando implementar una aplicación ClickOnce, pero la instalación falla en el cliente. Aquí está el registro de errores:
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.
El ejecutable principal que necesito implementar es MyProductFrontDesk.exe
, que depende deMyProductSiteServer.exe
archivo ejecutable - y parece ser donde se produce el error: "La referencia en el manifiesto no coincide con la identidad del ensamblado descargado MyProductSiteServer.exe".
¿Qué manifiesto debe corregirse? ¿Y cómo?
c#
visual-studio-2010
clickonce
Shaul Behr
fuente
fuente
Respuestas:
Hubo un problema con Visual Studio 2008 que se resuelve al no incrustar el manifiesto predeterminado ; uno de los comentarios sobre ese artículo sugiere que el problema aún existe en Visual Studio 2010.
fuente
<assemblyIdentity/>
elemento en el manifiesto personalizado se puede ajustar (u omitir para permitir que el compilador emita la identidad de ensamblaje correcta) en su.manifest
archivo personalizado , lo que permite especificar cosas como<requestedExecutionLevel/>
sin romper ClickOnce.Tuve el mismo problema cuando agregué una referencia a otro proyecto.
La forma de resolver esto fue habilitar la configuración de seguridad de ClickOnce en todos los proyectos referenciados como Ian explicó aquí (el énfasis es mío):
Creo que esta es la forma correcta de solucionarlo al hacer una referencia a otro proyecto con la misma solución.
La publicación del foro vinculada ya ha expirado, pero está disponible en el archivo aquí .
fuente
.cproj
archivo con<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Cuando mis implementaciones de ClickOnce (que no son de producción) dejaron de funcionar, me había olvidado por completo de esto.Me estaba encontrando con el mismo problema, pero mi solución era muy diferente.
Mi aplicación ClickOnce hacía referencia a otro proyecto de archivo EXE en mi solución, por lo que cuando el cliente lo descargó y había otro archivo EXE, ese no tenía un manifiesto.
Eliminar la dependencia de otro ejecutable resolvió mi problema.
fuente
Confirmé que el problema también existe en Visual Studio 2010. Al seleccionar "Crear aplicación sin un manifiesto" en Propiedades del proyecto - Aplicación - Recursos se resolvió el problema.
fuente
Esto también puede suceder si tiene dos versiones diferentes de un paquete NuGet referenciado en diferentes archivos DLL en su proyecto. En mi caso, estaba usando un marco llamado Catel, y tenía una versión más nueva referenciada en un archivo DLL que en otro (supervisión), pero esto hizo que ClickOnce escupiera este error. Hacer referencia a la misma versión resolvió el problema.
fuente
Tuve el mismo problema, pero mi solución fue cambiar el 'Objetivo de la plataforma' a 'x86' (Propiedades del proyecto -> Ficha de compilación). Se configuró en Cualquier CPU. Tan pronto como cambié la configuración y volví a publicar, el instalador de ClickOnce pudo completarse.
fuente
Experimenté el mismo error al implementar con el proyecto configurado en Debug. Cuando se cambió de nuevo a Release, no hubo ningún error.
fuente
Tuve exactamente el mismo problema. No pude eliminar la dependencia ya que la necesitaba el proyecto principal. El segundo proyecto fue un proyecto de consola.
Cambié a la Biblioteca de clases y luego todo funcionó.
fuente
Otra solución alternativa, en caso de que el archivo ejecutable de dependencia con el manifiesto de la aplicación incorrecta no se pueda cambiar (digamos que proviene de un paquete NuGet). El binario se puede incluir como contenido con una extensión ficticia para que ClickOnce no intente validar el manifiesto y luego se le cambie el nombre durante el inicio de la aplicación.
csproj:
App.xaml.cs:
fuente
Tuve el mismo problema y probé todas las soluciones sugeridas anteriormente aquí, y todas no funcionaron.
Lo arreglé cambiando la ubicación de actualización. Desde las propiedades del proyecto -> Publicar -> Actualizaciones . Cambie la ubicación de la actualización a su carpeta publicada.
fuente
TAMBIÉN RESUELTO PARA ClickOnce .exe llamando a .exe llamando a .exe.
También tuve este problema al usar VB.NET en Visual Studio 2010.
Tengo una aplicación ClickOnce Windows Forms que hace referencia a una segunda aplicación Windows Forms que a su vez hace referencia a una tercera aplicación Windows Forms. (Estas segundas y terceras aplicaciones son EXE archivos lugar de archivos DLL para simplificar, ya que es igualmente probable que se ejecuten de forma independiente o se llamen con las propiedades que se les pasan).
Tuve que comentar AMBOS contenidos del manifiesto de la segunda y tercera aplicaciones por:
Tutorial: Implementación manual de una aplicación ClickOnce
Funciona perfectamente.
fuente
Si tiene un programa principal que hace referencia a otro, entonces debe hacer el truco "Crear aplicación sin un manifiesto" en el Programa del programa principal:
Proyecto -> Propiedades -> Pestaña Aplicación -> Recursos -> Manifiesto -> menú desplegable "Crear aplicación sin manifiesto"
y luego cambie a las Propiedades del proyecto del programa al que se hace referencia y repita el proceso.
fuente
Estoy usando Visual Studio 2012 en Windows 7 y necesito publicar una solución que consta de dos proyectos.
Como señaló Eduardo, marcar ambos proyectos como ClickOnce y habilitar Full Trust Application resuelve el problema.
fuente
Tenía un problema un poco diferente que pude resolver y por eso quería publicar. Mi problema era que estaba ejecutando 3 ramas de TFS. Había actualizado los controles de Telerik en una de mis sucursales, pero no en las demás. Una vez que actualicé los controles de Telerik en las 3 ramas y los volví a publicar, funcionó y este error desapareció.
Estaba ejecutando VS2015 en ese momento.
fuente
Es interesante. Acabo de volver a implementar la aplicación y el problema se resolvió. Tal vez un archivo dañado debido a la red.
fuente
Utilizo
mage.exe
para generar mi manifiesto. Agregar esto a mi.csproj
solucionó el problema. También puede probar la-nowin32manifest
bandera del compilador ; No lo he probado. No veo "Crear aplicación sin un manifiesto" de stuartd en Visual Studio 2017; Creo que esto es lo que hace.También tengo esto en mi
.csproj
:fuente
En mi versión de Visual Studio 2017, versión 15.6.6 (pero puede haber estado allí antes), encontré que los archivos de la aplicación no estaban en el proyecto Exe Click derecho y publicar, sino en la pestaña Publicar de propiedades del proyecto, donde puede establecer qué de los archivos de la aplicación que desea colocar en la instalación.
Así que elimine los que son un problema. Si ya hay algo instalado en una computadora donde se instalará esta aplicación, no hay razón para intentar reinstalarla de todos modos, excepto si necesita la referencia para que se ejecute. Si fuera a instalar lo que ya estaba en la PC, pero en una carpeta diferente, podría no funcionar. Es mejor utilizar las otras aplicaciones o ensamblajes dll en la misma ubicación en la que se instalaron anteriormente.
fuente
Tuve el mismo problema hace un par de minutos, y a continuación se muestran los pasos que utilicé para resolverlo.
Llave
Lista de Verificación
Navegue a propiedades -> Aplicación -> Recursos -> verifique los íconos y el manifiesto (para ayb)
Navegue a propiedades -> Construir: asegúrese de que ayb estén en la misma plataforma de destino
Vaya a propiedades -> Seguridad y asegúrese de que ayb tengan marcada esta configuración: "Habilitar la configuración de seguridad de ClickOnce" y "Esta es una aplicación de plena confianza".
Navegue a propiedades -> Publicar: le recomiendo que cambie la ruta de la carpeta de publicación
fuente
Tuve exactamente el mismo problema con mi aplicación VS 2019.
Intenté crear la aplicación sin un manifiesto, sin embargo, no funcionó.
Sin embargo, lo que funcionó fue lo siguiente:
¡Con suerte, esto ayuda!
fuente