【问题标题】:InstallShield installer with custom ID without invalidating the signature具有自定义 ID 的 InstallShield 安装程序,不会使签名无效
【发布时间】:2016-12-16 01:01:05
【问题描述】:

我正在寻找一种方法来提供签名的、自定义的 InstallShield 安装程序,该安装程序可以在其中注入一小段信息,而不会破坏签名或不必重新签署安装程序?

用户将从我的网站下载它,但它需要一个专门为该用户注入的自定义 ID。我看到了对 sidecar 文件的引用,但我找不到任何文档。

那么,有什么方法可以在不使签名失效的情况下将该数据注入安装程序?

【问题讨论】:

  • 所以更多信息,您是否尝试过使用Orca 来执行此操作,或者这就是问题所在? Orca 是一个数据库表编辑器,用于创建和编辑 Windows Installer 包和合并模块。这是我们正在谈论的MSI是吗?另一种查看方式是使用 WiX Bootstrapper 嵌入您现有的 InstallShield 可执行文件。
  • @JeremyThompson 我不知道 Orca,我会看看。这可能是一个 MSI,但如果它允许我添加 ID,我可以做一个 EXE。 MSI签名后可以修改数据库,而不需要再次签名吗?我还会在 WiX 上闲逛。谢谢!

标签: c# .net windows installshield


【解决方案1】:

到目前为止,这个问题和 cmets 缺少一个重要警告:对 MSI 或 EXE 文件的任何更改都会导致代码签名签名无效(除非结果文件具有完全相同的文件哈希,这是极不可能的)。

是否有不能重新签署主包的原因?请注意,您可以使用 signtool 编写一个 powershell 或批处理脚本来快速轻松地对 EXE 进行代码签名。您可以一步添加自定义数据并退出包。如果需要,您甚至可以为 MSM 和 EXE 使用不同的代码签名证书。

您可以通过使用预签名的合并模块 (MSM) 来完成非常相似的事情——将您的主安装程序创作为已签名的合并模块。然后,将您已签名的 MSM 包含到未签名的安装程序 EXE 包中,并将您的自定义数据添加到父 EXE 安装程序。可以通过多种不同方式添加自定义数据,例如组件中的文本文件、嵌入自定义操作或作为 InstallShield 中的支持文件。 不幸的是,这意味着您的主 EXE 安装程序未签名,不推荐这样做。

【讨论】:

  • 了解签名和证书用途的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多