我有一个OneClick部署的VSTO Addin,我已使用最新的Verisign代码签名证书(PFX)签名。我已经确认我正在通过电话正确签署Verisign支持 - 他们同意。我正在使用VS2010构建。尽管如此,当我尝试安装时,Addin会显示“未知发布者”。
为什么?
如何使用PFX证书上的发布者名称替换“Unknown Publisher”?
这是我迄今为止尝试解决问题的方法:
在Addins上找到关于“Unknown Publisher”问题的this question。 accepted answer to that question讨论使用mage.exe
签署部署和应用程序清单。
我使用mage.exe
将PFX签名应用于应用程序和部署清单,但无济于事;我安装Addin时仍会显示“Unknown Publisher”。只有在那时我才看到MS程序经理在最后一个链接的页面上发表了评论,VSTO Addin在2008或更早版本中构建的不会读取应用程序或部署清单。
然后我在底部链接to this page看到了相同的MS程序经理的评论,并断言从VS2010开始,指定链接页面中指定的发布者的VSTO Addin现在将读取其清单并且正确Addin安装时显示的发布者名称。
我已经做了所有这些,我正确的代码签名的OneClick部署上的发布者仍然显示“Unknown Publisher” - 为什么?
答案 0 :(得分:8)
在本地计算机上安装证书。在Windows资源管理器中,右键单击证书文件,选择安装PFX ,然后按照说明操作。
确保VSTO项目清单和程序集已签名。在签名选项卡上的VSTO项目属性中,应选中“签署ClickOnce清单”(如果没有,请选择您的PFX文件)。还应检查“签署程序集”并使用相同的PFX文件。
发布VSTO后,您需要从命令行对清单和已发布的.vsto文件进行签名。您还需要将.dll从bin中复制到运行mage.exe之前发布的文件夹(以避免“找不到文件”错误)。请遵循以下语法,我强烈建议您出于安全考虑同时签署.vsto。
set AppPublishPath=bin\Release\app.publish
set AppPublishVersionPath=bin\Release\app.publish\Application Files\MyProjectName_1_0_0_0
set CertificatePath=C:\SignedCertificate.pfx
set CertificatePassword=password
copy bin\*.dll "%AppPublishVersionPath%"
mage -update "%AppPublishVersionPath%\MyProjectName.dll.manifest" -certfile "%CertificatePath%" -Password %CertificatePassword%
mage -update "%AppPublishVersionPath%\MyProjectName.vsto" -appmanifest "%AppPublishVersionPath%\MyProjectName.dll.manifest" -certfile "%CertificatePath%" -Password %CertificatePassword%
mage -update "%AppPublishPath%\MyProjectName.vsto" -appmanifest "%AppPublishVersionPath%\MyProjectName.dll.manifest" -certfile "%CertificatePath%" -Password %CertificatePassword%
请参阅Nathan关于可能的额外步骤的评论。