最大300回ループする次のバッチファイルを使用します。2つの引数があります。%1は、バッチファイル、pfxファイル、およびsigntool.exeを含むフォルダーへのパスです。%2は、署名されるファイルへの絶対パスです。これは、「$(SolutionDir)thirdparty \ signing \ sign.bat」「$(SolutionDir)thirdparty \ signing」「$(TargetPath)」などのビジュアルスタジオポストビルドイベントで呼び出すことができます。このバッチファイルを次のように変更しました各反復で異なるタイムスタンプサーバーを使用します。現在、Comodo、Verisign、GlobalSign、Starfieldを使用しています。うまくいけば、これは究極の署名スクリプトです;)
@echo off
REM create an array of timestamp servers...
set SERVERLIST=(http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://timestamp.globalsign.com/scripts/timestamp.dll http://tsa.starfieldtech.com)
REM sign the file...
%1\signtool.exe sign /f %1\comodo.pfx /p videodigital %2
set timestampErrors=0
for /L %%a in (1,1,300) do (
for %%s in %SERVERLIST% do (
REM try to timestamp the file. This operation is unreliable and may need to be repeated...
%1\signtool.exe timestamp /t %%s %2
REM check the return value of the timestamping operation and retry a max of ten times...
if ERRORLEVEL 0 if not ERRORLEVEL 1 GOTO succeeded
echo Signing failed. Probably cannot find the timestamp server at %%s
set /a timestampErrors+=1
)
REM wait 2 seconds...
choice /N /T:2 /D:Y >NUL
)
REM return an error code...
echo sign.bat exit code is 1. There were %timestampErrors% timestamping errors.
exit /b 1
:succeeded
REM return a successful code...
echo sign.bat exit code is 0. There were %timestampErrors% timestamping errors.
exit /b 0
また、http://timestamp.comodoca.comを信頼済みサイトに追加しました(Vinceに感謝)。それは重要なステップかもしれません。PCのルート証明書も更新しました。