|
@@ -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
|
|
|
|
|