我们正在使用Wix进行安装项目,并且在其中有一个单独的CustomAction项目。 CustomAction项目(强签名)有一个依赖项目(称为ProjA)引用,该引用是强签名的。
案例1#自定义操作和ProjA项目都已签名,然后出现以下错误。 无法加载文件或程序集XXX.CustomAction,Version = 2.5.2.0,Culture = neutral,PublicKeyToken = XXXXXXXXX'或其中一个依赖项。强名称验证失败。 (来自HRESULT的异常:0x8013141A)。
Case2#如果我们从自定义操作项目中删除了强烈签名并保持ProjA签名,那么我们会收到以下错误 无法加载文件或程序集XXX.ProjA,版本= 2.5.2.0,Culture = neutral,PublicKeyToken = XXXXXXXXX'或其中一个依赖项。强名称验证失败。 (来自HRESULT的异常:0x8013141A)。
案例3#如果我们从自定义操作和ProjA项目中删除了强烈签名,则设置运行成功。 所以我们正在寻找要解决的案例#1。
有人对此有所了解吗?
答案 0 :(得分: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技术重建/重新检查。