我开发了一个 vsto excel 插件。
这就是我将其部署到新电脑上的方法。
然后我将以下信息添加到注册表中:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\Addins\Bill Generator For Quickbooks]
"Description"="Bill Generator For Quickbooks"
"FriendlyName"="Bill Generator For Quickbooks"
"LoadBehavior"=dword:00000003
"Manifest"="file:///c:\Users\SiamIT-VMW7\Desktop\redist\Bill Generator For Quickbooks.vsto|vstolocal"
然后当我运行/打开 Excel 时,它会显示以下警告窗口(因为文件未签名)。如果我点击“安装”,它就会正常工作
因为我想删除该警告,所以我已使用 mage 实用程序签署了清单和 vsto 文件。但如果我尝试使用签名版本运行,Excel 会抛出以下错误?!?
那么我在这里缺少什么?避免该警告窗口的正确方法是什么?
提前致谢
致以诚挚的问候
经过相当多的研究,我找到了解决方案..
当我使用 maze -sign 命令签署两个文件(清单和 vsto)时,显示了该错误。但这不是正确的程序..
首先我需要使用 maze -sign 命令签署清单文件
然后我需要使用 maze -update 命令对 vsto 文件进行签名,以便 maze 可以在 vsto 文件中添加签名的清单哈希,以便可以通过 excel 进行匹配。
这是用于签署清单的示例命令行代码:
mage.exe -s "Bill Generator For Quickbooks.dll.manifest" -a sha256RSA -ch [My Certificate Hash] -csp "[My Certificate Service Provider]" -kc [My Certificate Key Container] -TimeStampUri [My Certificate Provider Timestamp URL]
这是使用更新命令对 vsto 文件进行签名的示例命令行代码
mage.exe -u "Bill Generator For Quickbooks.vsto" -appmanifest "Bill Generator For Quickbooks.dll.manifest" -a sha256RSA -ch [My Certificate Hash] -csp "[My Certificate Service Provider]" -kc [My Certificate Key Container] -TimeStampUri [My Certificate Provider Timestamp URL]
当我将这种方式签名的文件添加到部署中时,效果很好!
这是屏幕截图:
我发布了自己的答案,希望有一天它可能会对某人有所帮助:)
第一次安装和使用插件时,VSTO 系统总是显示第一个提示。即使证书是可信的。
显示第二个提示是因为manifest/vsto/dll文件中指定的证书不匹配。
当您尝试安装未签名的应用程序时,您可以看到 ClickOnce 安装程序的标准对话框。为了避免此类对话框,您需要签署应用程序和部署清单。它们必须使用公钥/私钥对进行签名,并使用 Authenticode 技术进行签名。您可以使用 Windows 证书存储中的证书或密钥文件对清单进行签名。
因为我想删除该警告,所以我已使用迷宫实用程序签署了清单和 vsto 文件。
Maze
与数字签名无关。您需要使用来自任何受信任供应商的数字签名来签署您的 ClickOnce
安装程序,请参阅如何:签署应用程序和部署清单以了解更多信息。
此外,您可能会发现使用 ClickOnce 部署 Office 解决方案一文很有帮助。
2025 年更新: 您现在可以使用 .NET Sign CLI 工具,该工具还支持使用 Azure Key Vault 进行远程签名。