Wix 从已安装的文件中,如何查找安装该文件的msi?

Wix 从已安装的文件中,如何查找安装该文件的msi?,wix,windows-installer,wix3.5,orca,Wix,Windows Installer,Wix3.5,Orca,我的经理给了我安装msi的机器的配置文件列表 他让我找出他们来自哪个微星。(因为我们需要为msi编写一些逻辑) 如何查找此文件来自哪个msi 在奥卡手动打开和搜索是困难的,因为微星的数量更多 还有其他的替代方法吗?我们正在使用Wix创建msi。我将获取.config文件的MD5哈希,然后查询.msis中的MsiFileHash表,直到找到匹配的哈希。不能保证msi安装了该文件。也就是说,我经常使用的一种快速破解方法是ms-dos-findstr命令 在安装了配置文件的计算机上: CD %WIND

我的经理给了我安装msi的机器的配置文件列表

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

如何查找此文件来自哪个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的起点是,它将为系统上安装的每个组件提供组件代码。从那里,
MsiEnumClients
将为包含特定组件的每个产品提供产品代码。然后可以使用
MsiGetComponentPath
获取组件的路径。如果这是您感兴趣的路径,请使用查找安装该路径的产品,例如
INSTALLPROPERTY\u INSTALLSOURCE
INSTALLPROPERTY\u PACKAGENAME.


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

MSI没有RPM(RPM-qf)这样的功能真是太遗憾了。