在工作中,我们有一个ClickOnce应用程序,当客户端尝试安装时,它会抛出异常:
从文件中读取异常:/ FILEPATH:清单可能无效或无法打开文件.
清单XML签名无效.
无法为提供的签名算法创建SignatureDescription.
为了解决这个问题,我们最终使用了另一个证书文件,并且工作正常(重新签署了清单).
但是我们无法理解为什么在开发人员机器中安装应用程序(甚至是不使用该应用程序的开发人员)会起作用,但它不适用于客户端的机器?
我们没有太多关于如何创建证书或ClickOnce包的信息,因为执行该证书的人已经离开并且没有留下关于它的文档.
正在使用的证书没有密码,普通用户没有管理员权限.
从Stack Overflow问题Manifest XML签名无效,我猜测问题可能是他们使用.NET Framework 4.5 创建项目和证书,然后当他们将应用程序设置为使用.NET Framework 4.0运行时,他们没有更改签名算法.但后来我认为它不应该对开发人员起作用.
您可以给我的任何见解将不胜感激.
我在网络驱动器上的发布文件夹中有一组ClickOnce软件包,需要将它们全部移动到另一台服务器(我们的DR机器).
复制/粘贴整个目录并在新机器上运行安装程序后,我收到一条错误消息,指出它无法找到旧路径:
激活... MyClickOnceApp.application导致异常.检测到以下失败消息:
+正在下载文件://oldMachine/c$/MyClickOnceApp.application未成功.
+无法找到路径'\\ oldMachine\c $\MyClickOnceApp.application'的一部分.
一旦我将安装URL更改为指向我的新机器,我就会收到另一个错误:
清单XML签名无效.
+对象的数字签名未验证.
我已经尝试使用MageUI.exe来修改部署URL,但它要求提供我没有的证书.
我做错了什么以及如何成功移动已发布的ClickOnce软件包?
我正在尝试使用clickonce安装程序部署Outlook加载项.我有一个几乎可以工作的批处理文件,但是,当我尝试在Windows XP上安装时,我收到错误"xml signature无效".众所周知,XP以SHA256证书为例失败.众所周知,Visual Studio 2013的Update 3修复了使用Visual Studio界面发布时的问题.我想知道如何在命令行上使用signtool或mage完成相同的修复.这是我当前的批处理文件,适用于除Windows XP之外的所有内容:
:: Build and publish
msbuild /target:clean,publish /property:MapFileExtensions=false /property:Configuration="Release" /property:ApplicationVersion="1.0.0.0" /property:InstallUrl="https://example.com" /property:UpdateEnabled="true" /property:UpdateMode="Foreground" /property:UpdateInterval="0" /property:UpdateIntervalUnits="days" /property:PublisherName="Example" /property:ProductName="Example Outlook Add-In" /property:FriendlyName="Example Outlook Add-In" /property:LoadBehavior="3" /property:BootstrapperEnabled="true" /property:IsWebBootstrapper="true"
:: Sign the exe
signtool sign /fd SHA1 /f "certificate.pfx" "publish\setup.exe"
:: Sign the application manifest
mage -sign "publish\Application Files\Example_1_0_0_0\Example.dll.manifest" -CertFile "certificate.pfx"
mage -update "publish\Application Files\Example_1_0_0_0\Example.dll.manifest" -CertFile "certificate.pfx" -algorithm sha1RSA
:: Sign the deployment manifests (there are 2 locations)
mage -update "publish\Application Files\Example_1_0_0_0\Example.vsto" -appmanifest "publish\Application Files\Example_1_0_0_0\Example.dll.manifest" …Run Code Online (Sandbox Code Playgroud) 我有一个VS2012解决方案(WinForm vb.net),我通过ClickOnce部署了它.我今天做了一些测试来部署这个应用程序.我可以发布和部署此应用程序,而无需签署ClickOnce清单或签署程序集.在我的项目的签名选项卡上,我取消选中"签署ClickOnce清单"和"签署程序集".安装此应用程序时,我没有任何错误(关于程序集未签名).
我将发布的文件夹复制到USB密钥上,并将其安装在另一台计算机上没有问题.我也可以更新我的应用程序并自动安装这些更新(感谢ClickOnce).
我阅读了很多关于ClickOnce和签名的内容,似乎我没有签署WinForm应用程序.
有人可以证实吗?我想知道如果我可以随时安装它而没有问题我是否将我的ClickOnce文件夹复制到网络公司的共享上?
明天我将有机会尝试安装在公司的网络上(而不是今天).
谢谢你的帮助.
我有一个VS2010 .NET 4.0 VSTO Outlook Addin项目,我希望迁移到VS2012(但保留在.NET 4.0中).它编译得很好,并且从IDE内部运行就好了,但是当我尝试运行已发布的ClickOnce安装程序时,我得到以下异常:
System.Deployment.Application.InvalidDeploymentException:从file://MyPath/MyAddIn.vsto读取清单的异常:清单可能无效或无法打开文件.---> System.Deployment.Application.InvalidDeploymentException:Manifest XML签名无效.---> System.Security.Cryptography.CryptographicException:无法为提供的签名算法创建SignatureDescription.
基于我的测试和在线研究(在这里和那里),似乎只在我的机器上安装了VS2012(无论是从VS2010还是VS2012发布),强制ClickOnce安装程序在使用.NET 4.0时需要 SHA1证书.使用VS2010(未安装VS2012)编译时,我现有的SHA256证书与.NET 4.0完全兼容.
还有其他建议让我继续前进吗?
clickonce ×4
.net ×1
batch-file ×1
c# ×1
c#-4.0 ×1
command-line ×1
mage ×1
manifest ×1
signing ×1