2015-08-18 22 views
9

Ist es in Inno Setup möglich, den Uninstaller und Installer mit sha1 und sha256 gleichzeitig zu signieren?Ist es möglich, das Installationsprogramm und das Deinstallationsprogramm mit sha1- und sha256-Zertifikaten doppelt zu signieren?

Ich weiß, dass es possible to sign die ausführbare Datei mit beiden certs über Befehlstool ist, aber wissen möchte, ob dies mit SignTool in Inno erreicht werden kann.

+2

Warum sollte es nicht möglich sein? Sie können eine Stapeldatei als Ihr signtool übergeben, die signtool.exe zweimal aufruft. – Wosi

Antwort

9

Autoanswer ...

Ja, das ist möglich. Wie @Wosi vorgeschlagen hat, können Sie einen Stapel schreiben und ihn dann mit $f Parameter hinzufügen.

Probenreihe (signtool.bat):

@echo off 

"PATH_TO_SIGNTOOL\signtool.exe" sign /v /du "COMPANY_NAME" /fd sha1 /t "http://timestamp.verisign.com/scripts/timstamp.dll" /f "sha1_cert.pfx" /p PASSWORD %1 

set SIGN_RESULT_1=%ERRORLEVEL% 

"PATH_TO_SIGNTOOL\signtool.exe" sign /as /v /du "COMPANY_NAME" /fd sha256 /tr "http://timestamp.comodoca.com/rfc3161" /td sha256 /f "sha256_cert.pfx" /p PASSWORD %1 

set SIGN_RESULT_2=%ERRORLEVEL% 

set /a RESULT=%SIGN_RESULT_1%+%SIGN_RESULT_2% 

if %RESULT% NEQ 0 (
    echo Warning! Signing failed with %SIGN_RESULT_1% for sh1 and %SIGN_RESULT_2% for sha256 
    pause 
    exit /B %RESULT% 
) 

echo Signing succeeded 
exit /B 0 

dann in Inno Setup können Sie signtool.bat $f nennen, wo $f wird %1 für den Stapel übergeben werden.

Für Windows XP-Kompatibilität für SHA1: entfernt /as, /tr mit /t ersetzt, /td entfernt

(wie es /tr erfordert) werde ich es hier lassen, wie vielleicht könnte jemand sie nützlich finden.

+1

Während dies funktioniert, beachten Sie, dass [seit Inno Setup 5.5.8] (http://jrsoftware.github.io/issrc/whatsnew.htm#5.5.8), mehrere ['SignTool' Direktiven] (http: //www.jrsoftware.org/ishelp/topic_setup_signtool.htm), wie die [Antwort von @TheArtTrooper] (http://stackoverflow.com/a/38753662/850848) zeigt. –

+0

Ich hatte einige Kompilierungsfehler - muss den vollständigen Pfad schreiben: c: \ ... \ signtool.bat $ f – ViH

3

Ich benutze InnoSetup 5.5.9. Ich kompiliere mein Skript über die Befehlszeile mit ISCC. Mein Setup-Skript enthält diese beiden Zeilen in dem Abschnitt [Setup]:

SignTool=sha1 
SignTool=sha256 

Der ISCC-Befehl wie folgt aussieht:

ISCC "/ssha1=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA1 /t <timestamp.url> /v $f" "/ssha256=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA256 /tr <timestamp.url> /td SHA256 /as /v $f" setup.iss 

ınnosetup unterzeichnen die Installation und mit beiden Zert deinstallieren.