signtool:选项解释为 AppVeyor 上的文件
signtool: options interpreted as files on AppVeyor
我在 AppVeyor 构建(Visual Studio 2019)上有这种超级奇怪的行为:在 shell 脚本(cmd.exe)中,当使用 [=11 签署我的应用程序时=],所有选项都被解释为文件(signtool
可以一次签署多个文件)。
行 "$WINDOWSKITBIN\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v /debug "build\TypeWorld.exe"
产生:
Successfully signed: build\TypeWorld.exe
Number of files successfully Signed: 1
Number of errors: 10
SignTool Error: File not found: C:/Program Files/Git/tr
SignTool Error: File not found: http://timestamp.digicert.com
SignTool Error: File not found: C:/Program Files/Git/td
SignTool Error: File not found: sha256
SignTool Error: File not found: C:/Program Files/Git/fd
SignTool Error: File not found: SHA256
SignTool Error: File not found: N:/
SignTool Error: File not found: Jan Gerner
SignTool Error: File not found: V:/
SignTool Error: File not found: C:/Program Files/Git/debug
想要的文件 TypeWorld.exe
已签名,只是没有所有选项,所有选项都被解释为要签名的文件,显然找不到。
我已确认转义的反斜杠和文件夹变量是正确的。
这一行echo "$WINDOWSKITBIN\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v /debug "build\TypeWorld.exe"
产生预期的渲染:C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x86\signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n Jan Gerner /v /debug build\TypeWorld.exe
我在 PowerShell 中尝试了 运行 同样的结果。
None AppVeyor 员工推荐(也通过电子邮件)的帮助。
最终有帮助的是不要混合 Windows 和 Linux (WSL) 环境。在 appveyor.yml
中,我通过 sh
调用构建脚本(或稍后在 AppVeyor 工作人员的推荐下 bash
):
build_script:
- cmd: C:\msys64\usr\bin\bash.exe wxPython/build/Windows/build-all.sh
相反,对于某些命令,最好保持简单,所以我将代码签名部分转换为一个很好的旧 Windows 批处理文件:
build_script:
- wxPython/build/Windows/build-sign.bat
在批处理文件中,行
signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v "build\TypeWorld.exe"
执行得很好。
我在 AppVeyor 构建(Visual Studio 2019)上有这种超级奇怪的行为:在 shell 脚本(cmd.exe)中,当使用 [=11 签署我的应用程序时=],所有选项都被解释为文件(signtool
可以一次签署多个文件)。
行 "$WINDOWSKITBIN\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v /debug "build\TypeWorld.exe"
产生:
Successfully signed: build\TypeWorld.exe
Number of files successfully Signed: 1
Number of errors: 10
SignTool Error: File not found: C:/Program Files/Git/tr
SignTool Error: File not found: http://timestamp.digicert.com
SignTool Error: File not found: C:/Program Files/Git/td
SignTool Error: File not found: sha256
SignTool Error: File not found: C:/Program Files/Git/fd
SignTool Error: File not found: SHA256
SignTool Error: File not found: N:/
SignTool Error: File not found: Jan Gerner
SignTool Error: File not found: V:/
SignTool Error: File not found: C:/Program Files/Git/debug
想要的文件 TypeWorld.exe
已签名,只是没有所有选项,所有选项都被解释为要签名的文件,显然找不到。
我已确认转义的反斜杠和文件夹变量是正确的。
这一行echo "$WINDOWSKITBIN\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v /debug "build\TypeWorld.exe"
产生预期的渲染:C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x86\signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n Jan Gerner /v /debug build\TypeWorld.exe
我在 PowerShell 中尝试了 运行 同样的结果。
None AppVeyor 员工推荐(也通过电子邮件)的帮助。
最终有帮助的是不要混合 Windows 和 Linux (WSL) 环境。在 appveyor.yml
中,我通过 sh
调用构建脚本(或稍后在 AppVeyor 工作人员的推荐下 bash
):
build_script:
- cmd: C:\msys64\usr\bin\bash.exe wxPython/build/Windows/build-all.sh
相反,对于某些命令,最好保持简单,所以我将代码签名部分转换为一个很好的旧 Windows 批处理文件:
build_script:
- wxPython/build/Windows/build-sign.bat
在批处理文件中,行
signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd SHA256 /n "Jan Gerner" /v "build\TypeWorld.exe"
执行得很好。