1

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

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

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

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

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

4

3 回答 3

1

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

于 2013-03-26T16:55:43.303 回答
1

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

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

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

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

于 2013-03-26T20:03:50.227 回答
0

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

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

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

于 2013-03-30T18:41:13.847 回答