【发布时间】:2014-03-31 15:59:34
【问题描述】:
我想验证某些 exe 文件是否已存在于合并模块 .ism(二进制格式)中。有没有不使用 InstallShield 的方法?
【问题讨论】:
-
您是指 .ISM 还是 .MSM?
标签: installshield merge-module
我想验证某些 exe 文件是否已存在于合并模块 .ism(二进制格式)中。有没有不使用 InstallShield 的方法?
【问题讨论】:
标签: installshield merge-module
*.ism 文件实际上是一个扩展名已更改的 MSI 文件。 MSI 文件又是存储为 COM 结构存储文件的 SQL 数据库 - 单个文件内的文件系统,具有用于各种内容的文件流。这与 Office 文档中使用的格式相同。
您可以在 Windows SDK 中使用 Orca 查看 MSI 文件:http://www.hass.de/content/how-install-microsoft-orca
【讨论】:
Windows Installer XML (WiX) 部署工具基础 (DTF) 有一个可用的 InstallPackage 类,该类公开 FindFiles() 方法。这应该很容易查询EXE。请注意,作为一个合并模块,您不会知道完整的安装路径,因为这通常由 MSI 决定。
【讨论】:
Chris 的两个建议都应该可以正常工作,就像使用 Orca 一样。但这让我想到使用名为Merge Module Finder 的工具可能会有更简单的方法。这一切都取决于你真正想做什么?查找合并模块中已有的文件?调查 Installshield 文件中有哪些合并模块?具体你想做什么还不是很清楚。
虽然有时有点笨拙(我认为作者尚未针对最新版本的 Windows 更新它),但它会帮助您以交互方式在一堆合并模块中查找文件。您还可以搜索注册表值。这是截图:
【讨论】: