0

我们正在使用 Wix 进行安装项目,并在其中有一个单独的 CustomAction 项目。CustomAction 项目(强签名)有一个依赖项目(称为 ProjA)引用,该引用是强签名的。

Case1# Custom Action 和 ProjA 项目都已签名,然后出现以下错误。无法加载文件或程序集 XXX.CustomAction、Version=2.5.2.0、Culture=neutral、PublicKeyToken=XXXXXXXXX' 或其依赖项之一。强名称验证失败。(来自 HRESULT 的异常:0x8013141A)。

Case2#如果我们从自定义操作项目中删除强签名并保持 ProjA 签名,那么我们会收到以下错误无法加载文件或程序集 XXX.ProjA,版本 = 2.5.2.0,文化 = 中性,PublicKeyToken = XXXXXXXXX' 或其依赖项之一. 强名称验证失败。(来自 HRESULT 的异常:0x8013141A)。

案例 3 #如果我们从自定义操作和 ProjA 项目中删除强签名,则设置运行成功。因此,我们正在寻找要解决的案例#1。

有人对此有想法吗?

4

1 回答 1

0

首先阅读有关 DTF 如何工作的背景:

http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html

当您将打包的 CA DLL 重命名为 .zip 并查看其内容时,您可能不会在其中看到已签名的 DLL。

自从我这样做以来已经有一段时间了,但我认为这与 SfxCA 的默认构建行为有关,即试图决定它应该和不应该打包什么。(假设你 DLL 是,其他一些 DLL 是,system.dll 否),我认为它考虑了代码签名。切换参考上的 CopyLocal (true|false) 标志并使用 zip 技术重建/重新检查。

于 2017-01-27T19:01:46.013 回答