2016-02-03 175 views
1

我在安装VS2015内置的.msi时在某些机器上安装我们的软件时遇到问题。MSI安装失败 - 错误1723

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

MSI(S)(24:64)[11:21:22:095]:做动作:InstallFinalize
行动11:21 :22:InstallFinalize。
行动开始11:21:22:InstallFinalize。 (s)(24:64)[11:21:22:095]:用户策略值'DisableRollback'是0
MSI(s)(24:64)[11:21:22:095]:机器策略值'DisableRollback'是0
操作11:21:22:RollbackCleanup。 MSI(s)(24:64)[11:21:22:585]:为线程8036创建类型790536的MSIHANDLE(13)
: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]:关闭MSIHANDLE(13)类型790536用于线程8036
MSI(s)(24:64)[11:21:22:975]:注意:1:1723 2:_3F7B94EF_231A_421E_BF8B_C0760F3B266E 3:_KSTInstallSC @ 4 4:C:\ Windows \ Installer \ MSIAE3F。 MSI(c)(8C:0C)[11:21:13](MSI(24:64)[11:21:22:975])注意:1:2262 2:错误3:-2147287038
MSI 22:975]:注意:1:2262 2:错误3:-2147287038
DEBUG:错误2835:控件ErrorIcon未在对话框中找到ErrorDialog 安装程序遇到编辑一个意外的错误安装这个包。这可能表明此软件包存在问题。错误代码是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]:Note:1:2262 2:Error 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并不现实。

有什么办法可以打包需要的文件与微星?如果是这样,我怎么才能找到依赖的DLL文件的名称?

+0

Visual Studio本身不会生成MSI文件;你使用什么扩展或插件? –

+0

这一个:https://visualstudiogallery.msdn.microsoft.com/f1cc3f3e-c300-40a7-8797-c509fb8933b9 –

回答

1

根据你建立这个软件包的方式,可能有更好的方法来跟踪这个项目。但让我们假装我们收到了这个软件包,并希望尽管它有问题仍然可以使用它。

您知道入口点是[email protected],它使用您最喜爱的MSI编辑程序为您在内置MSI的CustomAction table的目标列中寻找内容。该表中的记录应该将其源列引用到包含该DLL的二进制表中的一行。一旦你提取了这个DLL,你可以使用任何工具来显示你的依赖关系,比如Dependency Walker,CFF Explorer甚至是dumpbin /imports

至于如何解决它,在一台机器上只安装依赖项。但要将其修复到包中,您可能必须更改DLL的构建方式。例如,您可以使其静态导入C++运行时,以便它没有不寻常的外部运行时依赖关系。

0

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

0

通过附加的GUID(3F7B94EF_231A_421E_BF8B_C0760F3B266E)到自定义动作的名称来看,我会说你纳入你的包/工程,运行此自定义操作,正如菲尔提到的合并模块。