繁体   English   中英

从安装的文件中,如何查找哪个msi将安装该文件?

[英]From installed file ,how to find which msi would have installed the file?

我的经理为我提供了安装了msi的计算机上的配置文件列表。

他要我找出他们来自哪个msi。 (因为我们需要为该msi编写一些逻辑)。

如何找到此文件来自哪个msi?

手动打开orca并进行搜索非常困难,因为msi的数量更多。

还有其他替代方法吗? 我们正在使用Wix创建msi。

我将获取.config文件的MD5哈希,然后查询.msis中的MsiFileHash表,直到找到匹配的哈希。

无法保证MSI已安装该文件。 也就是说,我经常使用的一个快速技巧是ms-dos findstr命令

在安装了配置文件的计算机上:

CD %WINDIR%\Installer
FINDSTR -i -m dark.exe *.msi *.msi

这将在所有MSI文件中搜索字符串dark.exe,不区分大小写。 然后,使用ORCA检查生成的MSI,以查看匹配是否准确以及匹配的产品。 提醒:MSI名称将是一些短的十六进制哈希,因为这些是剥离/缓存的MSI,而不是原始MSI。

如果您可以在计算机上运行代码,则使用Windows Installer API的实用程序将为您提供答案。 这些实用程序很容易用VC ++编写。

Windows Installer API的起点是MsiEnumComponents ,它将为您提供系统上安装的每个组件的组件代码。 从那里, MsiEnumClients将为您提供每个包含特定组件的产品的产品代码。 然后,您可以使用MsiGetComponentPath获取组件的路径。 如果这是您感兴趣的路径,请使用MsiGetProductInfoEx查找有关安装它的产品的信息,例如INSTALLPROPERTY_INSTALLSOURCEINSTALLPROPERTY_PACKAGENAME.

听起来很复杂,但事实并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM