2013-06-21 88 views
2

我正在尝试在Inno Setup中自动执行我们的代码签名过程。不幸的是,我们对.pfx和密码分发有相当严格的协议,只有一个人可以访问它。Inno Setup SignTool密码请求

如果所有安装都在该人机器上编译,这本身不会有问题。 SignTool可以在IDE中设置,并且密码在用户PC上将保持安全。但是,我们使用共享机器来编译我们的版本,所以我们无法设置SignTool,因为我们不能将该密码容易访问。这有很多原因,不能改变。

我想要做的是Inno在编译完成后弹出一个“Enter .pfx Password”对话框。

目前,我的想法是让Inno安装程序请求身份验证,我不知道该怎么办,或者编写一个编译安装程序的小脚本,并在Inno安装程序之外签名。后来我可以做得相对容易,但是由于我们的工作流程的性质,如果Inno setup可以被利用,这将会更好。

任何人都可以帮助我获取Inno Setup为.pfx文件请求SignTool密码吗?

+0

您使用哪种标志工具?微软标志工具?如果是这样,你可以使用'signwizard'命令,这将启动签名向导,如果需要,将会提示输入密码。但考虑一下当你自己编译脚本时你会做什么。你会打电话给老板输入密码吗?我会为你提到的后一个想法,让你的团队成员编译未签名的安装程序,一旦你完成了,让老板签名(从InnoSetup之外)。 – TLama

+0

是的,使用Windows sdk 7.1的微软标志工具。建议的解决方案不适合我们,不幸的是,我们每天编译超过20-40个安装程序,跨越大约20个.iss文件,所以我们不能传递文件进行签名。这就是为什么我们要把它与Inno的构建过程联系起来,这样如果密钥持有者不存在,我们可以跳过签名,但是对于大多数构建,他将会这样。 问题的一部分是我们的测试是外包的,而且我们很快通过构建,所以编译完成后,它几分钟内就可以正常运行。 我将尝试在Innosetup中使用signwizard –

+0

Signtool/a将搜索证书,并且您可以安装私钥而无需导出。 –

回答

2

如果钥匙持有人可以自动签署版本而不是他的实际许可,那么你可以在他的机器上设置某种服务器程序来执行签名,然后更改Inno中的命令以交付通过网络构建该程序而不是直接调用signtool。这样只有他的机器才会知道密码和/或拥有私钥。

另外,只需签署构建,直到他们通过QA并实际上向客户发布。删除SignTool设置并将其替换为SignedUninstaller设置。

SignedUninstaller而不SignTool使用,则需要密钥持有者手动登入卸载文件一次,那么这可以从共享位置没有进一步辞职(直到你升级的Inno,此时你需要做的可重复使用它再次)。正在构建的脚本将具有签名的卸载,但是是未签名的输出安装程序。然后,您可以将其传递给QA,并在密钥持有者可用时手动签名(如果QA失败,则丢弃)。

+0

这是非常有用的信息。我有一半使用这个。我实现的是一个python文件,它从不在SVN上的本地文件读取.pfx位置。如果该文件存在,python会请求密码,并运行签名工具。 我现在需要弄清楚如何让inno安装程序继续编译,如果符号失败 –

+0

如果您按照我的建议做了,那么它只会停止编译,如果您以前没有使用特定版本的Inno。您在上面采取的方法将无法正常工作,因为Inno会在继续之前确保卸载程序已正确签名。 – Miral

+0

IT安全要求密码不能以任何方式存储在任何其他方式,除了精神上 –