我有一个可从网站下载的MSI。目前,下载安装程序时会更新MSI中的值(安装配置)。唯一的问题是MSI在执行此操作后将不会被签名(如果已经签名)。
有没有办法签署安装程序而无需重新构建它?
答案 0 :(得分:2)
Microsoft提供了一个名为signtool.exe的实用程序,可用于此目的。
签署Windows Installer文件(.msi)
在开发计算机上,安装要使用。
对文件进行签名的证书打开Visual Studio命令提示符。 切换到包含.msi文件的目录。 使用以下命令对.msi文件进行签名:
signtool sign /sha1 CertificateHash SetupFile.msi
例如,要对名为ExcelAddInSetup.msi的安装文件进行签名,请使用以下命令:
signtool sign /sha1 CCB... ExcelAddInSetup.msi
签署安装程序(.exe)
在开发计算机上,安装要使用该文件签名的证书。 打开Visual Studio命令提示符。 切换到包含.exe文件的目录。 使用以下命令对.exe文件进行签名:
signtool sign /sha1 CertificateHash Setup.exe
例如,要对安装程序进行签名,请使用以下命令: signtool sign / sha1 CCB ... Setup.exe
https://msdn.microsoft.com/en-us/library/ee290833(v=vs.100).aspx
答案 1 :(得分:1)
部署工程师使用的最简单的方法和标准是create a MST file和deploy the MSI together with the MST。
MST可以包含现有属性的新属性或更新值,并将它们应用于MSI安装,而不会影响原始MSI包的内容,因此其数字签名仍然有效。
答案 2 :(得分:0)
我认为您不想将证书交给您的客户,因为这样可以让他们与您的证书签署任何内容并有效地使用您的证书身份。
如果不确切知道如何进行修改,很难确定这是否有效,但您可以在启动之后但在使用表格内容之前使用自定义操作更改MSI 。如果要向Property表中添加行,作为示例,您将有一个自定义操作,通过在使用这些属性的任何自定义操作之前将这些行添加到Property表来更新(现在是内存中)MSI。