3

我们正在使用 Nant 准备使用 Clickonce 设置我们的软件。

使用 signtool 对 dll(s) 和 exe(s) 进行签名。

标志工具命令signtool sign /f ${certFile} /p ${certFilePwd} {path of setup.exe}

使用Mt.exe将清单嵌入 exe 文件中。

山命令mt -manifest {manifest file} -outputresource:{filepath};#1

我们有两个exe文件。一个是我们的 app.exe,第二个是 setup.exe(由 clickonce 创建的引导程序)

app.exe 在嵌入清单后签名没有问题。

但是在嵌入清单后签名 setup.exe给出以下错误:

SignTool Error: SignedCode::Sign returned error: 0x80070057. The parameter is incorrect.

清单文件包含:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
        <ms_asmv2:security>
            <ms_asmv2:requestedPrivileges>
                <ms_asmv2:requestedExecutionLevel level="asInvoker" 
                           uiAccess="false"></ms_asmv2:requestedExecutionLevel>
            </ms_asmv2:requestedPrivileges>
        </ms_asmv2:security>
    </ms_asmv2:trustInfo>
</assembly>

如果我在嵌入清单之前签名没有错误,但它不能工作,因为任何文件都需要在更改后辞职。

我还尝试了以下步骤:

  1. 登录 setup.exe
  2. 嵌入清单
  3. 退出 setup.exe(此步骤中的错误与上述相同)

有没有解决这个问题的方法/解决方法?

4

2 回答 2

1

我找不到可以引用的来源,但我不久前遇到了类似的问题,您无法签署之前已签名的 setup.exe。您可以从头开始生成引导程序(请参阅 MSDN),应用您的清单,然后对其进行签名(第一次!)它应该可以工作。

于 2013-11-08T16:25:24.573 回答
0

结论

有时,混淆器工具会生成不可签名的文件。这意味着,对于我尝试过的任何事情, signtool都会返回错误 0x80070057。

我还注意到“无效”文件上的版本语言属性为空白,请参阅第一个 DLL 有效,而第二个 DLL 无效

所以,我的结论是,这是文件本身的问题,而不是签名工具或签名服务器的问题。

我是如何得出这个结论的

我尝试了所有建议的答案:

我尝试了多个标志服务器:

于 2020-01-02T07:36:25.810 回答