浏览代码

Generate an .issig for the output installer.

Martijn Laan 4 月之前
父节点
当前提交
8a37749e20
共有 3 个文件被更改,包括 22 次插入16 次删除
  1. 4 1
      build-ce.bat
  2. 4 1
      build.bat
  3. 14 14
      issig.bat

+ 4 - 1
build-ce.bat

@@ -75,7 +75,7 @@ if exist .\setup-presign.bat (
   echo Presign done
   echo Presign done
 )
 )
 
 
-call .\issig.bat sign
+call .\issig.bat sign Files\ISCmplr.dll Files\ISPP.dll
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 echo ISSigTool sign done
 echo ISSigTool sign done
 pause
 pause
@@ -105,7 +105,10 @@ if errorlevel 1 goto failed
 cd ..
 cd ..
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 echo Creating Inno Setup installer done
 echo Creating Inno Setup installer done
+call .\issig.bat sign output\innosetup-%VER%.exe
+if errorlevel 1 goto failed
 powershell.exe -NoProfile -Command "Write-Host -NoNewline 'SHA256 hash: '; (Get-FileHash -Algorithm SHA256 -Path output\innosetup-%VER%.exe).Hash.ToLower()"
 powershell.exe -NoProfile -Command "Write-Host -NoNewline 'SHA256 hash: '; (Get-FileHash -Algorithm SHA256 -Path output\innosetup-%VER%.exe).Hash.ToLower()"
+if errorlevel 1 goto failed
 
 
 echo All done!
 echo All done!
 pause
 pause

+ 4 - 1
build.bat

@@ -69,7 +69,7 @@ if exist .\setup-presign.bat (
   echo Presign done
   echo Presign done
 ) 
 ) 
 
 
-call .\issig.bat sign
+call .\issig.bat sign Files\ISCmplr.dll Files\ISPP.dll
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 echo ISSigTool sign done
 echo ISSigTool sign done
 pause
 pause
@@ -90,7 +90,10 @@ if errorlevel 1 goto failed
 cd ..
 cd ..
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 echo Creating Inno Setup installer done
 echo Creating Inno Setup installer done
+call .\issig.bat sign output\innosetup-%VER%.exe
+if errorlevel 1 goto failed
 powershell.exe -NoProfile -Command "Write-Host -NoNewline 'SHA256 hash: '; (Get-FileHash -Algorithm SHA256 -Path output\innosetup-%VER%.exe).Hash.ToLower()"
 powershell.exe -NoProfile -Command "Write-Host -NoNewline 'SHA256 hash: '; (Get-FileHash -Algorithm SHA256 -Path output\innosetup-%VER%.exe).Hash.ToLower()"
+if errorlevel 1 goto failed
 
 
 echo All done!
 echo All done!
 pause
 pause

+ 14 - 14
issig.bat

@@ -8,7 +8,7 @@ rem
 rem  Batch file to embed the public key in TrustFunc.AllowedPublicKeys.inc (before compilation) or to create ISCmplr.dll.issig and ISPP.dll.issig (after compilation)
 rem  Batch file to embed the public key in TrustFunc.AllowedPublicKeys.inc (before compilation) or to create ISCmplr.dll.issig and ISPP.dll.issig (after compilation)
 rem  Also generates a new private key if needed
 rem  Also generates a new private key if needed
 
 
-setlocal
+setlocal enabledelayedexpansion
 
 
 cd /d %~dp0
 cd /d %~dp0
 
 
@@ -27,12 +27,9 @@ if "%ISSIGTOOL_KEY_FILE%"=="" goto compilesettingserror
 
 
 rem -------------------------------------------------------------------------
 rem -------------------------------------------------------------------------
 
 
-cd Files
-if errorlevel 1 goto failed
-
 if not exist "%ISSIGTOOL_KEY_FILE%" (
 if not exist "%ISSIGTOOL_KEY_FILE%" (
   echo Missing key file
   echo Missing key file
-  ISSigTool.exe generate-private-key
+  Files\ISSigTool.exe generate-private-key
   if errorlevel 1 goto failed
   if errorlevel 1 goto failed
   if not exist "%ISSIGTOOL_KEY_FILE%" goto failed
   if not exist "%ISSIGTOOL_KEY_FILE%" goto failed
   echo Generating key file done - do not share with others!
   echo Generating key file done - do not share with others!
@@ -44,29 +41,33 @@ if not "%1"=="" goto failed
 
 
 :embed
 :embed
 set publickeyfile=_temp.ispublickey
 set publickeyfile=_temp.ispublickey
-ISSigTool.exe export-public-key "%publickeyfile%"
+Files\ISSigTool.exe export-public-key "%publickeyfile%"
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 if not exist "%publickeyfile%" goto failed
 if not exist "%publickeyfile%" goto failed
-set targetfile=..\Components\TrustFunc.AllowedPublicKeys.inc
+set targetfile=Components\TrustFunc.AllowedPublicKeys.inc
 if not exist "%targetfile%" goto failed
 if not exist "%targetfile%" goto failed
 powershell.exe -NoProfile -Command "$filePath = '%targetfile%'; $replacementFilePath = '%publickeyfile%'; $startMarker = 'AllowedPublicKey2Text :='; $endMarker = ';'; try { $content = Get-Content -Raw -Path $filePath; $replacementText = Get-Content -Raw -Path $replacementFilePath; $replacementText = $replacementText -replace \"`r`n\", \"' + #13#10 +`r`n'\"; $replacementText = \"'\" + $replacementText + \"'\"; $replacementText = $replacementText -replace \" \+`r`n''\", \"\"; [string] $pattern = '(?s)' + [regex]::Escape($startMarker) + '.*?' + [regex]::Escape($endMarker); if ($content -match $pattern) { $replacement = $startMarker + \"`r`n\" + $replacementText  + $endMarker; $newContent = $content -replace $pattern, $replacement; $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($false); [System.IO.File]::WriteAllText($filePath, $newContent, $utf8NoBomEncoding); Write-Host \"Embedded public key in $filePath.\"; } else { Write-Host \"Pattern not found in $filePath.\"; exit 1; } } catch { Write-Error (\"Error: $_.Exception.Message\"); exit 1; }"
 powershell.exe -NoProfile -Command "$filePath = '%targetfile%'; $replacementFilePath = '%publickeyfile%'; $startMarker = 'AllowedPublicKey2Text :='; $endMarker = ';'; try { $content = Get-Content -Raw -Path $filePath; $replacementText = Get-Content -Raw -Path $replacementFilePath; $replacementText = $replacementText -replace \"`r`n\", \"' + #13#10 +`r`n'\"; $replacementText = \"'\" + $replacementText + \"'\"; $replacementText = $replacementText -replace \" \+`r`n''\", \"\"; [string] $pattern = '(?s)' + [regex]::Escape($startMarker) + '.*?' + [regex]::Escape($endMarker); if ($content -match $pattern) { $replacement = $startMarker + \"`r`n\" + $replacementText  + $endMarker; $newContent = $content -replace $pattern, $replacement; $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($false); [System.IO.File]::WriteAllText($filePath, $newContent, $utf8NoBomEncoding); Write-Host \"Embedded public key in $filePath.\"; } else { Write-Host \"Pattern not found in $filePath.\"; exit 1; } } catch { Write-Error (\"Error: $_.Exception.Message\"); exit 1; }"
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
-set targetfile=..\setup.allowedpublickeys.iss
+set targetfile=setup.allowedpublickeys.iss
 if not exist "%targetfile%" goto failed
 if not exist "%targetfile%" goto failed
 powershell.exe -NoProfile -Command "$filePath = '%targetfile%'; $replacementFilePath = '%publickeyfile%'; $startMarker = 'Name: mykey2; '; try { $content = Get-Content -Raw -Path $filePath; $replacementText = Get-Content -Raw -Path $replacementFilePath; $replacementText = $replacementText -replace \"`r`n\", \"; \"; $replacementText = $replacementText.Substring(0, $replacementText.Length - 2); $replacementText = $replacementText -replace 'format issig-public-key; key-id', 'KeyID:'; $replacementText = $replacementText -replace 'public-x', 'PublicX:'; $replacementText = $replacementText -replace 'public-y', 'PublicY:'; [string] $pattern = [regex]::Escape($startMarker) + '.*?$'; if ($content -match $pattern) { $replacement = $startMarker + $replacementText; $newContent = $content -replace $pattern, $replacement; $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($false); [System.IO.File]::WriteAllText($filePath, $newContent, $utf8NoBomEncoding); Write-Host \"Embedded public key in $filePath.\"; } else { Write-Host \"Pattern not found in $filePath.\"; exit 1; } } catch { Write-Error (\"Error: $_.Exception.Message\"); exit 1; }"
 powershell.exe -NoProfile -Command "$filePath = '%targetfile%'; $replacementFilePath = '%publickeyfile%'; $startMarker = 'Name: mykey2; '; try { $content = Get-Content -Raw -Path $filePath; $replacementText = Get-Content -Raw -Path $replacementFilePath; $replacementText = $replacementText -replace \"`r`n\", \"; \"; $replacementText = $replacementText.Substring(0, $replacementText.Length - 2); $replacementText = $replacementText -replace 'format issig-public-key; key-id', 'KeyID:'; $replacementText = $replacementText -replace 'public-x', 'PublicX:'; $replacementText = $replacementText -replace 'public-y', 'PublicY:'; [string] $pattern = [regex]::Escape($startMarker) + '.*?$'; if ($content -match $pattern) { $replacement = $startMarker + $replacementText; $newContent = $content -replace $pattern, $replacement; $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($false); [System.IO.File]::WriteAllText($filePath, $newContent, $utf8NoBomEncoding); Write-Host \"Embedded public key in $filePath.\"; } else { Write-Host \"Pattern not found in $filePath.\"; exit 1; } } catch { Write-Error (\"Error: $_.Exception.Message\"); exit 1; }"
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 del "%publickeyfile%"
 del "%publickeyfile%"
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
-cd ..
-if errorlevel 1 goto failed
 
 
 echo Success!
 echo Success!
 goto exit
 goto exit
 
 
 :sign
 :sign
-ISSigTool.exe sign ISCmplr.dll ISPP.dll
-if errorlevel 1 goto failed
-cd ..
+set signfiles=
+shift  
+:signfilesloop  
+if "%1"=="" goto signfilesdone  
+set "signfiles=!signfiles! %1"  
+shift  
+goto signfilesloop
+:signfilesdone
+Files\ISSigTool.exe sign %signfiles%
 if errorlevel 1 goto failed
 if errorlevel 1 goto failed
 
 
 echo Success!
 echo Success!
@@ -74,7 +75,6 @@ goto exit
 
 
 :failed
 :failed
 echo *** FAILED ***
 echo *** FAILED ***
-cd ..
 :failed2
 :failed2
 exit /b 1
 exit /b 1