Estou tentando implantar um aplicativo ClickOnce, mas a instalação falha no cliente. Aqui está o log de erros:
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.
O exe principal que preciso implantar é MyProductFrontDesk.exe
, que depende de MyProductSiteServer.exe
- e parece ser onde o erro está sendo lançado: "A referência no manifesto não corresponde à identidade do assembly baixado MyProductSiteServer.exe."
Qual manifesto precisa ser corrigido? E como?
c#
visual-studio-2010
clickonce
Shaul Behr
fonte
fonte
Respostas:
Houve um problema com o Visual Studio 2008 que foi resolvido ao não incorporar o manifesto padrão - um dos comentários naquele artigo sugere que o problema ainda existe no Visual Studio 2010.
fonte
<assemblyIdentity/>
elemento no manifesto personalizado pode ser ajustado (ou omitido para permitir que o compilador emita a identidade do assembly correta) em seu.manifest
arquivo personalizado , permitindo especificar coisas como, por exemplo,<requestedExecutionLevel/>
sem quebrar o ClickOnce.Tive o mesmo problema quando adicionei uma referência a outro projeto.
A maneira de resolver isso era habilitar as configurações de segurança do ClickOnce em todos os projetos referenciados, conforme Ian explicado aqui (ênfase minha):
Acredito que esta seja a maneira adequada de consertar ao fazer uma referência a outro projeto na mesma solução.
A postagem do fórum vinculada já expirou, mas está disponível no arquivo aqui .
fonte
.cproj
arquivo com<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Quando meu ClickOnce (de não produção) parou de funcionar, eu tinha me esquecido completamente disso.Eu estava enfrentando o mesmo problema, mas minha solução era muito diferente.
Meu aplicativo ClickOnce estava fazendo referência a outro projeto de arquivo EXE em minha solução, então quando o cliente baixou, e havia outro arquivo EXE, aquele não tinha um manifesto.
Remover a dependência de outro executável resolveu meu problema.
fonte
Confirmei que o problema também existe no Visual Studio 2010. A seleção de "Criar aplicativo sem manifesto" em Propriedades do projeto - Aplicativo - Recursos resolveu o problema.
fonte
Isso também pode acontecer se você tiver duas versões diferentes de um pacote NuGet referenciado em arquivos DLL diferentes em seu projeto. No meu caso, eu estava usando uma estrutura chamada Catel e tinha uma versão mais recente referenciada em um arquivo DLL do que em outro (descuido), mas isso fez o ClickOnce cuspir esse erro. Fazer referência à mesma versão resolveu o problema.
fonte
Eu tive o mesmo problema, mas minha solução foi mudar o 'destino da plataforma' para 'x86' (Propriedades do projeto -> guia Compilar). Ele foi definido como Qualquer CPU. Assim que alterei a configuração e publiquei novamente, o instalador do ClickOnce foi concluído.
fonte
Eu experimentei o mesmo erro ao implantar com o projeto definido como Debug. Quando foi alterado de volta para Release, não houve erro.
fonte
Eu tive exatamente o mesmo problema. Não consegui remover a dependência porque ela era necessária para o projeto principal. O segundo projeto foi um projeto de console.
Mudei para a Biblioteca de classes e tudo funcionou.
fonte
Outra solução alternativa, caso o exe de dependência com o manifesto do aplicativo inválido não possa ser alterado (digamos, vindo de um pacote NuGet). O binário pode ser incluído como conteúdo com uma extensão fictícia para que ClickOnce não tente validar o manifesto e, em seguida, renomeado durante a inicialização do aplicativo.
csproj:
App.xaml.cs:
fonte
Eu tive o mesmo problema e tentei todas as soluções sugeridas anteriormente aqui, mas todas não funcionaram.
Consertei alterando o local de atualização. Nas propriedades do projeto -> Publicar -> Atualizações . Altere o local de atualização para a pasta publicada.
fonte
TAMBÉM RESOLVIDO PARA ClickOnce .exe chamando .exe chamando .exe.
Eu tive esse problema também, usando VB.NET no Visual Studio 2010.
Eu tenho um aplicativo ClickOnce Windows Forms que faz referência a um segundo aplicativo Windows Forms que, por sua vez, faz referência a um terceiro aplicativo Windows Forms. (Esses segundo e terceiro aplicativos são arquivos EXE em vez de arquivos DLL para simplificar, pois têm a mesma probabilidade de serem executados de forma autônoma ou chamados com propriedades passadas a eles.)
Tive que comentar AMBOS o conteúdo do manifesto do segundo e do terceiro aplicativo por:
Passo a passo: Implantando manualmente um aplicativo ClickOnce
Funciona perfeitamente.
fonte
Se você tiver um programa principal que faz referência a outro, deverá executar o truque "Criar aplicativo sem manifesto" no programa do programa principal:
Projeto -> Propriedades -> Guia Aplicativo -> Recursos -> Manifesto -> menu suspenso "Criar aplicativo sem manifesto"
e então mude para as Propriedades do Projeto do programa referenciado e repita o processo.
fonte
Estou usando o Visual Studio 2012 no Windows 7 e preciso publicar uma solução que consiste em dois projetos.
Como Eduardo apontou, marcar os dois projetos como ClickOnce e ativar o aplicativo Full Trust resolve o problema.
fonte
Tive um problema diferente que consegui resolver e por isso queria postar. Meu problema era que eu estava executando 3 branches do TFS. Eu havia atualizado os controles da Telerik em uma de minhas filiais, mas não nas outras. Depois de atualizar os controles do Telerik em todos os 3 branches e publicar novamente, ele funcionou e esse erro foi embora.
Eu estava executando o VS2015 na época.
fonte
É interessante. Acabei de reimplantar o aplicativo e o problema foi resolvido. Talvez um arquivo corrompido por causa da rede.
fonte
Eu uso
mage.exe
para gerar meu manifesto. Adicionar isso ao meu.csproj
corrigiu o problema. Você também pode tentar o-nowin32manifest
sinalizador do compilador ; Eu não testei. Não vejo "Criar aplicativo sem manifesto" de stuartd no Visual Studio 2017; Eu acho que é isso que ele faz.Eu também tenho isso no meu
.csproj
:fonte
Na minha versão do Visual Studio 2017, versão 15.6.6 (mas pode estar lá antes), descobri que os arquivos do aplicativo não estavam no botão direito Exe Project and Publish, mas na guia Publish das propriedades do projeto, onde você pode definir quais dos arquivos do aplicativo que você deseja incluir na instalação.
Portanto, elimine os que são um problema. Se algo já estiver instalado em um computador onde este aplicativo será instalado, não há razão para tentar reinstalá-lo de qualquer maneira, exceto se você precisar da referência para que ele seja executado. Se fosse para instalar o que já estava no pc, mas em uma pasta diferente, pode não funcionar. É melhor usar os outros aplicativos ou assemblies dll no mesmo local em que foram instalados anteriormente.
fonte
Tive o mesmo problema alguns minutos atrás e, a seguir, estão as etapas que usei para resolvê-lo.
Chave
Lista de controle
Navegue até propriedades -> Aplicativo -> Recursos -> ícones de verificação e manifesto (para a e b)
Navegue até propriedades -> Construir: certifique-se de que a e b estão na mesma plataforma de destino
Navegue até propriedades -> Segurança e certifique-se de que aeb tenham estas configurações marcadas: "Ativar configurações de segurança ClickOnce" e "Este é um aplicativo de confiança total"
Navegue até propriedades -> Publicar: eu recomendo que você altere o caminho da pasta de publicação
fonte
Eu tive exatamente o mesmo problema com meu aplicativo VS 2019.
Tentei criar o aplicativo sem um manifesto, mas isso não funcionou.
O que funcionou, no entanto, foi o seguinte:
Esperançosamente, isso ajuda!
fonte