Unknown Publisher仍出现在使用VS2010构建的正确代码签名的VSTO插件上

时间:2012-05-09 10:51:11

标签: vsto add-in oneclick

我有一个OneClick部署的VSTO Addin,我已使用最新的Verisign代码签名证书(PFX)签名。我已经确认我正在通过电话正确签署Verisign支持 - 他们同意。我正在使用VS2010构建。尽管如此,当我尝试安装时,Addin会显示“未知发布者”。

为什么?

如何使用PFX证书上的发布者名称替换“Unknown Publisher”?

这是我迄今为止尝试解决问题的方法:

  1. 在Addins上找到关于“Unknown Publisher”问题的this questionaccepted answer to that question讨论使用mage.exe签署部署和应用程序清单。

  2. 我使用mage.exe将PFX签名应用于应用程序和部署清单,但无济于事;我安装Addin时仍会显示“Unknown Publisher”。只有在那时我才看到MS程序经理在最后一个链接的页面上发表了评论,VSTO Addin在2008或更早版本中构建的不会读取应用程序或部署清单。

  3. 然后我在底部链接to this page看到了相同的MS程序经理的评论,并断言从VS2010开始,指定链接页面中指定的发布者的VSTO Addin现在将读取其清单并且正确Addin安装时显示的发布者名称。

  4. 我已经做了所有这些,我正确的代码签名的OneClick部署上的发布者仍然显示“Unknown Publisher” - 为什么?

1 个答案:

答案 0 :(得分:8)

  1. 在本地计算机上安装证书。在Windows资源管理器中,右键单击证书文件,选择安装PFX ,然后按照说明操作。

  2. 确保VSTO项目清单和程序集已签名。在签名选项卡上的VSTO项目属性中,应选中“签署ClickOnce清单”(如果没有,请选择您的PFX文件)。还应检查“签署程序集”并使用相同的PFX文件。

  3. 发布VSTO后,您需要从命令行对清单和已发布的.vsto文件进行签名。您还需要将.dll从bin中复制到运行mage.exe之前发布的文件夹(以避免“找不到文件”错误)。请遵循以下语法,我强烈建议您出于安全考虑同时签署.vsto。

  4. 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关于可能的额外步骤的评论。