MSI 安装失败 - 错误 1723

Posted

技术标签:

【中文标题】MSI 安装失败 - 错误 1723【英文标题】:MSI Install Failed - Error 1723 【发布时间】:2016-02-03 10:49:59 【问题描述】:

在安装 VS2015 中内置的 .msi 时,我无法在某些机器上安装我们的软件。

没有 VS2015,我在日志文件中得到了这个:

MSI (s) (24:64) [11:21:22:095]:执行操作:InstallFinalize 行动 11:21:22:InstallFinalize。 动作开始时间 11:21:22:InstallFinalize。 MSI (s) (24:64) [11:21:22:095]:用户策略值“DisableRollback”为 0 MSI (s) (24:64) [11:21:22:095]:机器策略值“DisableRollback”为 0 行动 11:21:22:回滚清理。删除备份文件 MSI (s) (24:64) [11:21:22:585]:为线程 8036 创建类型为 790536 的 MSIHANDLE (13) MSI (s) (24:74) [11:21:22:595]:调用远程自定义操作。 DLL:C:\Windows\Installer\MSIAE3F.tmp,入口点:_KSTInstallSC@4 MSI (s) (24:74) [11:21:22:595]:生成随机 cookie。 MSI (s) (24:74) [11:21:22:645]:使用 PID 1160 (0x488) 创建了自定义操作服务器。 MSI (s) (24:5C) [11:21:22:765]:作为服务运行。 MSI (s) (24:5C) [11:21:22:775]:您好,我是您的 32 位高架非重新映射自定义操作服务器。 CustomAction _3F7B94EF_231A_421E_BF8B_C0760F3B266E 返回实际错误代码 1157(请注意,如果翻译发生在沙箱内,这可能不是 100% 准确) MSI (s) (24:74) [11:21:22:975]:为线程 8036 关闭 790536 类型的 MSIHANDLE (13) MSI (s) (24:64) [11:21:22:975]:注意:1:1723 2:_3F7B94EF_231A_421E_BF8B_C0760F3B266E 3:_KSTInstallSC@4 4:C:\Windows\Installer\MSIAE3F.tmp MSI (s) (24:64) [11:21:22:975]:注意:1:2262 2:错误 3:-2147287038 MSI (c) (8C:0C) [11:21:22:975]:注意:1:2262 2:错误 3:-2147287038 调试:错误 2835:在对话框 ErrorDialog 上找不到控件 ErrorIcon 安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码为 2835。参数为:ErrorIcon、ErrorDialog、 错误 1723。此 Windows 安装程序包有问题。无法运行完成此安装所需的 DLL。请联系您的支持人员或软件包供应商。操作 _3F7B94EF_231A_421E_BF8B_C0760F3B266E,条目:_KSTInstallSC@4,库:C:\Windows\Installer\MSIAE3F.tmp MSI (s) (24:64) [11:21:25:796]:注意:1:2262 2:错误 3:-2147287038 MSI (s) (24:64) [11:21:25:796]:产品:KST -- 错误 1723。此 Windows 安装程序包有问题。无法运行完成此安装所需的 DLL。请联系您的支持人员或软件包供应商。操作 _3F7B94EF_231A_421E_BF8B_C0760F3B266E,条目:_KSTInstallSC@4,库:C:\Windows\Installer\MSIAE3F.tmp

我查看了 Visual Studio 并没有与日志文件中的任何内容匹配的自定义操作。

需要注意的是,在测试 PC 上安装 VS2015 后,安装工作正常,因此肯定缺少 DLL 或其他东西。但是在我们所有客户的机器上安装 VS2015 是不切实际的。

有什么方法可以将所需的文件与 msi 一起打包?如果是这样,我怎样才能找到依赖的 DLL 文件的名称?

【问题讨论】:

Visual Studio 本身不构建 MSI 文件;你用的是什么扩展或插件? 这个:visualstudiogallery.msdn.microsoft.com/… 您还记得这个案例的问题所在吗? 【参考方案1】:

根据您构建此软件包的方式,可能有更好的方法可以在项目中进行跟踪。但是,让我们假设我们收到了这个包裹,并且想要让它工作,尽管它有问题。

您知道入口点是_KSTInstallSC@4,它使您可以使用您最喜欢的 MSI 编辑程序在内置的 MSI 中的CustomAction table 的目标列中寻找一些东西。该表中的记录应以其源列引用二进制表中包含 DLL 的行。提取该 DLL 后,您可以使用任何显示依赖项的工具,例如 Dependency Walker、CFF Explorer 甚至 dumpbin /imports

至于如何修复,单机安装依赖即可。但是要在包中修复它,您可能必须更改 DLL 的构建方式。例如,您可以让它静态导入 C++ 运行时,这样它就没有异常的外部运行时依赖项。

【讨论】:

【参考方案2】:

您已经做了一些与 KST 产品相关的事情,它是一个 C++ 应用程序,显然您正在作为自定义操作运行,无论是有意还是通过包含一个合并模块。错误 1157 表示加载失败,因此它必须依赖于至少一个未安装的其他 Dll。

【讨论】:

【参考方案3】:

根据附加到自定义操作名称的 GUID (3F7B94EF_231A_421E_BF8B_C0760F3B266E) 判断,我会说您的包/项目中包含一个合并模块,它运行此自定义操作,正如 Phil 提到的那样。

【讨论】:

【参考方案4】:

我最近遇到了同样的问题,在我的情况下,Windows Defender 对 MSI 日志中提到的 tmp 文件误报为它无法找到的 DLL。 Defender 将其识别为病毒,并在 MSI 包可以使用它之前删除了该文件。

因此,请尝试禁用 Defender/任何其他防病毒软件,然后重试。

【讨论】:

以上是关于MSI 安装失败 - 错误 1723的主要内容,如果未能解决你的问题,请参考以下文章

用msi安装MySQL时MySQL Server组件不能安装,或安装失败

Wix:MSI 失败:错误 3:-2147287038

MySQL .msi 安装失败改用.zip安装步骤

Microsoft.NETFrameworkVersion2.0安装失败怎么办

vs2017安装失败

如果安装了 AVG 防病毒软件,则下载失败