我的经理从安装了msi的机器上给了我配置文件列表。
他让我找到他们来自哪个msi。 (因为我们需要为那个msi写一些逻辑)。
如何找到这些文件来自哪个msi?
手动打开orca并搜索它很难,因为msi的数量更多。
还有其他替代方法吗?我们正在使用Wix来创建msi。
答案 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_INSTALLSOURCE
和INSTALLPROPERTY_PACKAGENAME.
听起来很复杂,但事实并非如此。