2016-12-03 69 views
0

我的项目使用Wix 7.x.我们有一个用SHA2进行数字认证的自定义操作DLL(用C++编写)。此DLL以前已通过SHA1认证。用SHA2数字签名的自定义动作DLL在Windows 7和8环境中引发1723和1157错误

除数字证书更改外没有其他更改。

安装时,我们收到以下错误消息。

CustomAction customaction_a返回实际的错误代码1157(注意这 可能不是100%准确,如果翻译沙箱里面发生)

错误1723没有与此Windows安装程序包的问题。 A 此安装完成所需的DLL无法运行。联系 您的支持人员或包供应商。行动customaction_a, 条目:FirstCustomAction,库:C:\ WINDOWS \ Installer程序\ MSICD2E.tmp

当DLL与SHA1认证,就可以成功安装没有任何错误,在Windows 7中,Windows 8和Windows 8.1。 当DLL通过SHA2认证时,它在Windows 7,Windows 8中出现上述错误。但是,在Windows 8.1和Windows 10中成功安装。

我搜索了互联网并尝试了提供的选项, temp%文件夹,为msiexec等注册的错误路径......并没有任何帮助。

这是一个已知的问题/错误?任何解决方案/解决方法将是一个很大的帮助。

回答

1

从Windows Installer的角度来看,这里没有什么涉及到签名。 1157错误是“无法找到运行此应用程序所需的库文件之一”。换句话说,它是一个缺失的依赖。如果它没有依赖于你的其他Dll,那么它可能是CRT/MFC/ATL等的缺失版本,或者通用CRT,其中大多数具有各种可再分发部件,这些可再分发部件可能或可能未被安装在某些系统上作为先决条件的其他产品。

您可能正在安装先决条件,您的文章没有说。您可能已经在您的MSI中包含了一些版本的C++合并模块,但是一些SxS版本在定制操作运行并且会导致此失败之后才会落实。因此,考虑到1157错误,这可能会失败的原因有很多,与签名无关,除非与所有版本的Windows上没有签名相关的可选Dll,并且这似乎不太可能。最简单的解释是由错误指示的一个 - 缺少的依赖关系。

的Dependency Walker中的DLL可能会告诉你缺少的DLL是什么,如果你简单地将DLL复制到系统中,如果它不能加载,并在其上运行的依赖学步车存在。

相关问题