从已安装的文件,如何找到哪些msi将安装该文件?

时间:2013-03-26 07:17:27

标签: wix windows-installer wix3.5 orca

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

他让我找到他们来自哪个msi。 (因为我们需要为那个msi写一些逻辑)。

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

手动打开orca并搜索它很难,因为msi的数量更多。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

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

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

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