【问题标题】:How to check if files exist in .ism without using InstallShield如何在不使用 InstallShield 的情况下检查 .ism 中是否存在文件
【发布时间】:2014-03-31 15:59:34
【问题描述】:

我想验证某些 exe 文件是否已存在于合并模块 .ism(二进制格式)中。有没有不使用 InstallShield 的方法?

【问题讨论】:

  • 您是指 .ISM 还是 .MSM?

标签: installshield merge-module


【解决方案1】:

*.ism 文件实际上是一个扩展名已更改的 MSI 文件。 MSI 文件又是存储为 COM 结构存储文件的 SQL 数据库 - 单个文件内的文件系统,具有用于各种内容的文件流。这与 Office 文档中使用的格式相同。

您可以在 Windows SDK 中使用 Orca 查看 MSI 文件:http://www.hass.de/content/how-install-microsoft-orca

【讨论】:

  • 仅当它是二进制格式时。它也可以是 XML 格式,这是使用 Msi2XML 转换为 DTD/XML 的二进制数据库。
【解决方案2】:

Windows Installer XML (WiX) 部署工具基础 (DTF) 有一个可用的 InstallPackage 类,该类公开 FindFiles() 方法。这应该很容易查询EXE。请注意,作为一个合并模块,您不会知道完整的安装路径,因为这通常由 MSI 决定。

【讨论】:

【解决方案3】:

Chris 的两个建议都应该可以正常工作,就像使用 Orca 一样。但这让我想到使用名为Merge Module Finder 的工具可能会有更简单的方法。这一切都取决于你真正想做什么?查找合并模块中已有的文件?调查 Installshield 文件中有哪些合并模块?具体你想做什么还不是很清楚。

虽然有时有点笨拙(我认为作者尚未针对最新版本的 Windows 更新它),但它会帮助您以交互方式在一堆合并模块中查找文件。您还可以搜索注册表值。这是截图:

【讨论】:

  • 我写过很多这类工具,但从未发表过。有一天,我应该告诉您有关 InstallManifest 生成器和 InstallDifferences 工具的信息。但是对于这个简单的搜索,我只说 findstr /s -i -m somefilename *.msm
猜你喜欢
  • 2013-04-12
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 2019-04-06
  • 2023-02-07
  • 2021-04-28
相关资源
最近更新 更多