【问题标题】:How to view and/or edit the manifest of a Setup.exe file如何查看和/或编辑 Setup.exe 文件的清单
【发布时间】:2025-12-13 08:20:03
【问题描述】:

这个问题似乎与thisthis 重复,它们相似。但事实并非如此!首先-我从安装文件而不是从我分发的程序中收到此错误 其次-版本不同,Installshield 2009 和 10.5 中的目录不同。 .

我正在尝试修复我的设置中由 Windows 兼容模式引起的错误,该设置是使用 Installshield 10.5 构建的。到目前为止,我的研究使我得出一个结论,即我需要将 [this][3] 添加到我的清单文件中。我看到微软的工具 mt.exe 可以从 dll 中提取清单文件,但是我没有看到它可以从可执行文件中提取它的任何地方。 所以我的问题如下:

有没有办法查看使用 Installshield 构建的 Setup.exe 的清单文件?

有没有办法为 Installshield 中的某个项目配置此清单文件?

[3]Can one edit an InstallShield setup.exe's manifest file?

【问题讨论】:

  • @MichaelUrman Installshield的版本不同,目录也不一样。
  • 在 Visual Studio 中使用文件 > 打开 > 文件。打开 RT_MANIFEST 节点。不太可读,最容易将其导出到文本文件。顺便说一句,您不太可能通过清单解决此问题,安装日志文件应该会提示出现了什么问题。
  • @AlexanderDemerdzhiev:很公平。这些目录非常相似,但我更多地指的是 ISReMan 的链接。这并没有改变这样一个事实,即您似乎在问一个派生问题而不是它的基础,并且没有解释实际发生的事情。

标签: windows manifest installshield


【解决方案1】:

据我所知,mt.exe 可以很好地处理 EXE 文件; EXE 和 DLL 文件都是Portable Executable (PE) 文件,而 PE 文件对清单等资源使用完全相同的结构。 Visual Studio、CFF 资源管理器和无数其他工具(包括原始资源 API)也可用于查看和更新​​清单。

但是,对于已构建的 InstallShield setup.exe,有​​一个转折点。 InstallShield 使用文件中的区域来存储未以 PE 格式描述的信息。更新 EXE 上的资源的工具可能会无意中破坏这些数据,因为他们不希望这些数据存在,也不知道如何检测或调整它。

InstallShield 12 或更高版本允许您指定清单,它会从它提供的文件中选择清单,您可以在将它们添加到 setup.exe 之前对其进行更新。此外,还有一个名为 ISReMan 的工具可以识别额外信息,并且可以在该数据存在时正确更新清单。

顺便说一句,提及您要解决的实际问题通常会有所帮助,以防您选择的方法(在这种情况下更新清单)不是正确的解决方案。另请注意,InstallShield 10.5 已有 10 多年的历史,对 UAC、PCA 和其他 Vista 及更高版本的技术一无所知;调整清单可能无助于解决与海拔相关的问题。

另外请注意,我在 InstallShield 上工作是有报酬的,所以当我推荐升级之类的东西时,我可能会有偏见。 :)

【讨论】:

  • 如果由我决定,我会立即升级。然而,这个决定与我们项目的阶段以及预算有关。关于案例:我发现我可以在注册表中记录:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Persisted 并取消消息。但是 Perisisted 文件夹在 Windows 10 中不可用。
  • 我对 Persisted 如何与清单关联的线索为零,更不用说它是用于设置还是应用程序。你真正的问题是什么? (在当前项目中没有时间升级到 10 年前的技术,虽然这太常见了,但对于显然试图支持 Windows 10 的产品来说是非常不幸的。)