Estoy usando signtool para firmar mi msi.¿Cómo firmar todo el archivo msi que están debajo de la carpeta?
¿Cómo buscar recursivamente todos los msi en una carpeta y subcarpeta y luego firmarlos todos?
Estoy usando signtool para firmar mi msi.¿Cómo firmar todo el archivo msi que están debajo de la carpeta?
¿Cómo buscar recursivamente todos los msi en una carpeta y subcarpeta y luego firmarlos todos?
Los 2 respuestas anteriores muestran una solución PowerShell. También puede lograr esto fácilmente desde un símbolo del sistema CMD.EXE.
for /r "yourRootFolder" %F in (*.msi) do signtool sign /a "%F"
Obviamente necesita modificar sus opciones de signtool para satisfacer sus necesidades. El bit importante es% F retendrá iterativamente el nombre de cada archivo .MSI.
Si desea ejecutar el comando desde un archivo por lotes, entonces el% debe duplicarse, por lo que% F se convierte en %% F en ambos lugares.
asumiendo que conoce qué parámetros de línea de comandos que necesita para la herramienta MSI firma se puede obtener todos los MSI en una carpeta determinada de esta manera:
Get-ChildItem -recurse -path C:\MsiFolder -Include *.msi | ForEach-Object {
$msiPath = $_.FullName
$output = & the_msi_sign_tool.exe -msifile $msiPath -parameterB -parameterC 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Error $output
}
}
Aquí hay un ejemplo usando un certificado de firma de código (sólo tengo un certificado de $ cert):
$cert = Get-ChildItem -Path Cert: -CodeSigningCert -Recurse
Get-ChildItem -Path C:\MsiFolder -Filter *.msi -Recurse | Set-AuthenticodeSignature -Certificate $cert
¡Solo una solicitud de contraseña!
$signExe = 'C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe'
$files = gci 'C:\Temp\*' -Include *.msi | %{('"{0}"' -f $_.FullName)}
$fingerprint = '00000000000000000000000000000000000000000'
$timestampUrl = 'http://rfc3161timestamp.globalsign.com/advanced'
$filesInputArg = $files -join " "
.$signExe sign /tr $timestampUrl /td SHA256 /sha1 $fingerprint $filesInputArg
¿Qué signtool? ¿Es capaz de línea de comandos? –
Sí. Es un exe que se puede ejecutar desde la línea de comandos – Samselvaprabu