Qtを使用するビルドシステムがいくつか用意されています。署名作業に時間を節約し、配布しているすべての署名されていないバイナリに署名する必要があるため、インストール先のすべてのQtバイナリに署名し、Qt依存関係を使用しているパッケージマネージャビルドスレーブ上のローカルQtディレクトリの代わりに署名されていることを除けば、セットアップのタイプです。Qtはビルド時に独自のライブラリのデジタル署名を無効にしていますか?
今日は、私はジェンキンスの両方に気づいたとQtのプロジェクトを使用しているTFSのビルドが流れ、この小さな2-ライナーは、ログに表示:
15:24:19 Updating Qt5Core.dll.
15:24:19 Patching Qt5Core.dll...
を次に後でジェンキンス、そのデジタル署名のビルドログに失敗した検証し、テスト-CERTで署名されました:
15:24:19
call "C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" verify /pa C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll
15:24:19IF NOT "!errorlevel!" == "0" echo Self-Signing C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll & call signtool sign /f C:\DevOps\test_certificates\cert.pfx /fd SHA512 C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll && set something_signed=true
15:24:19)
15:24:19 File: C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll
15:24:19 Index Algorithm Timestamp
15:24:19 ========================================
15:24:19
15:24:19 Number of errors: 1
15:24:19 SignTool Error: No signature found.
15:24:19 Self-Signing C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll
15:24:19 Done Adding Additional Store 15:24:19 Successfully signed: C:\BuildFolder\artifacts\qt5611_win32-msvc2015\release\Qt5Core.dll
が起こっているこのUpdating
/Patching
からのデジタル署名を無効QMake
かJOM
から何かですか?もしそうなら、これはやむを得ないことでしょうか?私は他のオペレーティングシステムでQtプロジェクトを構築することに精通していませんが、libsが指し示す場所を変更するためにいくつかのツールを使う必要があることを思い出しています。私が一番よく知っているのは、そのようなものが背景の背後でWinDeployQt
で起こっているということです。
あなたが報告したものWinDeployQt
に興味を持っている場合、これは、右の最初の二つの引用された行の前に実行されるものです:
15:24:18
link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='removed-by-OP' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:C:\BuildFolder\bin\release\qt_test_build.exe @C:\Users\USER~1\AppData\Local\Temp\qt_test_build.exe.4012.485.jom
15:24:19windeployqt -core --no-compiler-runtime --no-quick-import --no-translations
C:\BuildFolder\solution_directory\..\bin\release\qt_test_build.exe
15:24:19 C:\BuildFolder\bin\release\qt_test_build.exe 64 bit, release executable
15:24:19 Direct dependencies: Qt5Core
15:24:19 All dependencies : Qt5Core
15:24:19 To be deployed : Qt5Core
Dag nammit!私は何が起こっていたのか、それと同様の感覚を持っていました。_ <私は出力場所を静的に署名してQt DLLにコミットさせることが実現可能だと思います。私はおそらく小さなレポのためにこれで逃げることができますが、私はDevOpsの母の慈悲が支配者と米のひざまずいを打ち砕くだろうという気持ちを持っています。しかしそれはあなたの問題ではなく、あなたの問題です!ありがとう、Kuba Ober! –