1

使用 Shake,我想定义一个依赖于一堆可执行文件(例如exedll等)的规则。但是,在使用它们之前,它们需要进行数字签名。由于“签名”实际上不会生成新文件,我如何确保我的规则仅依赖于签名的文件?

编辑:消歧是为了。我的规则会生成其中一些文件,但不是全部。有些是第三方的,是我们存储库的一部分。所以不知何故,我需要在签名依赖这些静态文件。

4

1 回答 1

1

一种简单的方法是让签名步骤先进行复制,因此:

"signed//*" *> \out -> do
    copyFile ("unsigned" </> dropDirectory1 out) out
    cmd "signer" out

另一种是在签名时生成一个文件,作为文件已签名的提醒:

"programs//*.key" *> \out -> do
    writeFile' out ""
    cmd "signer" $ dropExtension out

不鼓励使用第二种表述,因为通常规则不应该修改其他规则产生的值 - 很容易过度重建(我想你可能会在这里)。

如果您为生成的 exes 额外文件,只需一步生成并签名它们 - 如果您正在生成文件然后编辑其属性(editbin在 Windows 上),这是一种相当常见的模式。对于您不生成的文件,您可以在签入之前对其进行签名,但是在 repo 中修改源文件(这是第 3 方的东西的样子)可能是个坏主意,所以副本可能更好。

于 2014-10-16T05:54:22.003 回答