我想验证某些 exe 文件是否已存在于合并模块 .ism(二进制格式)中。有没有不使用 InstallShield 的方法?
3 回答
Chris 的两个建议都应该可以正常工作,就像使用 Orca 一样。但这让我想到使用名为Merge Module Finder的工具可能会有更简单的方法。这完全取决于你真正想做什么?查找合并模块中已有的文件?调查 Installshield 文件中有哪些合并模块?目前还不太清楚你想要做什么。
虽然有时有点笨拙(我认为作者尚未针对最新版本的 Windows 更新它),但它会帮助您以交互方式在一堆合并模块中查找文件。您还可以搜索注册表值。这是一个屏幕截图:
*.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 决定。