嵌入清单后无法对引导程序可执行文件(setup.exe)签名

问题描述 投票:3回答:2

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

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

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

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

Mt命令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. sign setup.exe
  2. 嵌入式清单
  3. 退出setup.exe(与上述步骤相同的错误)
  4. 是否有解决此问题的方法/解决方法?

我们正在使用Nant使用Clickonce准备我们的软件设置。使用signtool对dll和exe进行签名。 signtool命令:signtool登录/ f $ {certFile} / p $ {certFilePwd} {setup.exe的路径} ...

clickonce signing bootstrapper signtool mt
2个回答
1
投票

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


0
投票

结论

© www.soinside.com 2019 - 2024. All rights reserved.