14

我有一个使用最新的 Verisign 代码签名证书 (PFX) 签名的 OneClick Deployed VSTO 插件。我已验证我在电话上与 Verisign 支持人员正确签署 - 他们同意。我正在使用 VS2010 构建。尽管如此,当我尝试安装时,插件显示“未知发布者”。

为什么?

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

这是我迄今为止为解决问题所做的工作:

  1. 在 Addins 上发现了这个关于“Unknown Publisher”问题的问题。该问题的公认答案讨论了使用mage.exe来签署部署和应用程序清单。

  2. 我曾经mage.exe将 PFX 签名应用于应用程序和部署清单,但无济于事;安装插件时仍然显示“未知发布者”。直到那时,我才在最后一个链接的页面上看到 MS 程序经理的评论,即 VSTO Addin 在 2008 年或更早版本下构建的不会读取应用程序或部署清单。

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

我已经完成了所有这些,但我正确代码签名的 OneClick 部署上的发布者仍然显示“未知发布者” - 为什么?

4

1 回答 1

9

跟着这些步骤:

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

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

  3. 发布 VSTO 后,您需要从命令行对清单和已发布的 .vsto 文件进行签名。在运行 mage.exe 之前,您还需要将 .dll 从 bin 复制到您发布的文件夹(以避免“找不到文件”错误)。为了安全起见,我强烈建议同时签署两个 .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 评论。

于 2012-05-09T14:12:54.650 回答