无法为MSI安装程序运行DLL


23

dll无法运行

我猜它是Windows Installer的一个问题。我试过重启服务但没有效果。我无法安装以.msi结尾的任何内容。有时我收到这样的错误信息:

在此输入图像描述

事件查看器日志:

Python安装程序:

产品:Python 2.7.3 - 错误1723.此Windows Installer程序包存在问题。无法运行此安装所需的DLL。请联系您的支持人员或包装供应商。Action CheckDir,entry:_CheckDir @ 4,library:C:\ Users \ x \ AppData \ Local \ Temp \ MSI570C.tmp

SSDLife安装程序:

产品:SSDlife Pro - 错误1723.此Windows Installer程序包存在问题。无法运行此安装所需的DLL。请联系您的支持人员或包装供应商。Action WIX_TestVersion,entry:WIX_TestVersion,library:C:\ Users \ x \ AppData \ Local \ Temp \ MSIA32E.tmp

搜索错误1723:如果您拥有过时的Windows Installer版本,则会发生此错误

我为Windows Installer提供了一些链接,但它们都没有支持操作系统列表中的Windows 7。

https://www.microsoft.com/en-us/download/details.aspx?id=25

https://www.microsoft.com/en-us/download/details.aspx?id=8483&WT.mc_id=MSCOM_EN_US_DLC_DETAILS_131Z4ENUS22007

Windows(7 x64)是最新的。

还试过这个Fixit:http//support.microsoft.com/mats/Program_Install_and_Uninstall

但它找不到任何问题。


@Serge是的,avast,现在尝试禁用并运行安装程序,但它似乎没有帮助
Kedar

清理你的临时文件夹,然后再试一次。
摩押

@Moab nope,这没有帮助
Kedar

请指定您观察问题的操作系统。
阿列克谢伊万诺夫

@Moab所有人
Kedar

Answers:


26

我也遇到了这个问题。阿列克谢伊万诺夫的回应并没有对我有所帮助,但它确实激励我去调查C:\Users\x\AppData\Local\Temp

像往常一样,错误消息只有一半有用。就我而言,DLL没有丢失 - 安装程序没有访问该文件夹的权限。我没有尝试以管理员身份运行安装程序 - 考虑到我已经在使用管理员帐户并希望UAC处理权限提升,这对我没有意义。无论如何,就像Windows中的许多东西一样,这件事对我来说有点神秘。

然而,在进入Properties > SecurityC:\Users\x\AppData\Local\Temp文件夹并给予EveryoneFull control许可后,之前失败的安装程序现在工作了!万岁!既然Everyone已经拥有ReadWrite访问,我怀疑Full control还增加了必要的Execute许可。

我现在想知道的是,这首先发生了什么,以及该目录的正确权限应该是什么。


1
这解决了我的问题!但我认为让'Everyone'完全访问用户的临时文件夹是一个安全问题。我只是授予自己完全访问权限并且有效。默认情况下,该目录只有用户的“特殊权限”。
Kedar 2013年

是的,这比授予Everyone:-) 更有意义。无论如何,我想知道这个问题的根本原因是什么。我遇到了几个安装程序的问题,包括iTunes安装程序 - 一个非常受欢迎的安装程序!我想知道发生什么事情破坏了该目录的权限。
德米特里·明科夫斯基2013年

我检查了同一台机器上的其他有限/管理员帐户,所有这些帐户似乎都正确设置了权限。
Kedar 2013年

这对我不起作用(Windows 7,32位)。这样做了。但是,我的错误是“此Windows Installer程序包存在问题。作为安装程序的一部分运行的程序未按预期完成。请联系您的支持人员或程序包供应商。”
aliteralmind 2014年

尽管症状相似,但这对我没有用。原来是一个冲突的PIP安装。这固定了我:stackoverflow.com/a/23350061/797945
Jagu

8

一个简单的解决方法是以管理员身份运行命令shell(只需搜索cmd.exe,然后右键单击 - >以管理员身份运行),然后转到MSI包的位置并运行msiexec /i packagename.msi。它对我有用。


1
这不是一个解决方法(不能正确安装所有软件),它不起作用(对于这个特定的问题)
Kedar 2013年

一个小错误:这是正确的命令msiexec /i packagename.msi

此解决方案非常有效,并且比仅为安装程序向Everyone提供Temp权限文件夹更好。(请务必阅读第二条评论以获得正确的语法。)
Gaurav Kumar 2013年

+1此解决方案也应包含在上面选择的答案中。选择的答案应该是每个人的最后手段。
tom_mai78101 2014年

1

您的系统必须缺少必需的DLL。

在您描述的两种情况下,Windows Installer都尝试执行DLL中的自定义操作。那些.tmp文件:C:\Users\x\AppData\Local\Temp\MSI570C.tmp并且C:\Users\x\AppData\Local\Temp\MSIA32E.tmp实际上是从MSI中提取的DLL文件。

但由于某种原因,它无法加载DLL。

最重要的是找出缺少的DLL。当错误消息显示在屏幕上时,转到临时目录并查看临时DLL文件是否仍然存在。如果它在那里,用DLL扩展名复制它。然后,要找出缺少所需的DLL的哪个,可以使用depends.exeVisual Studio中的实用程序。

如果已经删除了临时文件,获取DLL的唯一方法是从Binary表中提取它。

我有两个最可能的候选者:缺少Visual C ++运行时或缺少.Net运行时。但是,这只是猜测......


我只看到在temp目录中创建的错误日志。没有其他的。但是考虑从安装程序中提取文件,我尝试使用msiexec命令来提取Python,现在所有文件都可以正常安装。除了我在安装的软件列表中没有看到任何条目。将python添加到路径,它按预期工作...
Kedar

1
我想它只是发生得太快而无法注意到。是的,您可以从Windows Installer程序包中提取文件,但它不会执行程序注册,因为未安装该产品(从MSI的角度来看)。这些tmp DLL文件不是安装映像的一部分,它们是在安装期间运行的帮助程序。要获得它,您可以使用Orca工具或使用WiX反编译msi; 但是,你已经有了Python。
阿列克谢伊万诺夫

我想我可以在没有注册软件的情况下生活。完整命令:msiexec / a python.msi / qb TARGETDIR =“C:\ install_path”
Kedar


@ 101如果是这样,那么安装程序就坏了,我的意思是它是一个错误:安装程序不能依赖其他软件,包括MSVC运行时 - 它必须是自包含的。如果需要MSVC 2008或2010,则必须沿产品安装这些软件包(包含在安装程序本身中)。
阿列克谢伊万诺夫


-1

这些解决方案都不适用于我,但是当我直接进入下载文件夹时,右键单击我想要执行的安装图标,然后单击“以管理员身份运行”安装它而没有任何更多错误消息。


MSI安装程序没有该选项。
Kedar 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.