file - 在 MSI 中解压、修改和重新打包文件?

标签 file windows-installer updating

我正试图找出在我的一个项目中对二进制文件进行 Authenticode 签名的最简单和最安全的方法。

我能看到的最简单的方法是获取编译结果——一个包含我所有二进制文件的完整安装包——从中提取程序集,签名,然后在 MSI 中重新打包这些签名的程序集,然后获得签名。

那里有很多关于从 MSI 解压文件的信息,但没有关于重新打包它们的信息。我该怎么做?

最佳答案

正在编辑我的原始回复....

如果您想将签名嵌入到无人值守的构建过程中,您可以只使用 MSBuild SignFile 任务,它包装了验证码签名 API http://msdn.microsoft.com/en-us/library/ms164304.aspx

或者只需调用 SignTool.exe。

您需要使用 certmgr.exe 或证书 mmc 管理单元将软件发布证书安装到计算机上。一旦将它安装到本地证书存储中,您只需使用 SHA 指纹引用它,您可以在证书属性中找到它,或者只需在 certmgr.exe 中列出证书即可。

我们必须定期更新我们的证书,因此我们在构建中有额外的步骤来在构建开始时在本地重新导入证书,并提取证书哈希。我建议不要将散列存储在源代码管理中,以防您必须返回并构建旧版本 - 它应该是您环境配置的一部分,例如一个环境变量或其他可以与您的源代码分离的东西。

另外,不要忘记给签名的文件加上时间戳,这样才能保证签名的有效性。我还建议您将签名与时间戳分开。时间戳是一种偶尔会出错的网络操作,因此能够区分签名失败和时间戳失败很有用,因为时间戳失败只是可能公开发布的黄金版本的问题。

关于file - 在 MSI 中解压、修改和重新打包文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024761/

相关文章:

html - 仅当上一个文件输入不为空时才显示文件输入

file - 如何启用 FFMPEG 日志记录以及在哪里可以找到 FFMPEG 日志文件?

excel - 从 Excel 电子表格中的每一行创建文本文件

windows-installer - 如何让 InstallShield LE 自动卸载现有安装?

windows - 带 Electron 链接的msi安装程序

Java Swing 更新 JList

java - 变量不会更新(在 Java 中)

C++追加到字符串并写入文件

c# - 如何使用 1 个安装项目安装 2 个不同的 Windows 服务?

xcode - 更新来自不同类别的分数变量