Sto utilizzando signtool per firmare il mio msi.Come firmare tutti i file msi che si trovano nella cartella?
Come cercare ricorsivamente tutti i file msi in una cartella e sottocartella, quindi firmarli tutti?
Sto utilizzando signtool per firmare il mio msi.Come firmare tutti i file msi che si trovano nella cartella?
Come cercare ricorsivamente tutti i file msi in una cartella e sottocartella, quindi firmarli tutti?
Le precedenti 2 risposte mostrano una soluzione PowerShell. È possibile farlo abbastanza facilmente anche da un prompt dei comandi CMD.EXE.
for /r "yourRootFolder" %F in (*.msi) do signtool sign /a "%F"
Ovviamente è necessario modificare le opzioni di signtool in base alle proprie esigenze. Il bit importante è% F terranno in modo iterativo il nome di ciascun file .MSI.
Se si desidera eseguire il comando da un file batch, quindi% deve essere raddoppiato, quindi% F diventa %% F in entrambe le posizioni.
patto di saper che cosa parametri della riga di comando che serve per lo strumento MSI firma sono è possibile ottenere tutte MSI in una cartella specifica come questo:
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
}
}
Ecco un esempio utilizzando un certificato di firma del codice (ho solo un certificato in $ cert):
$cert = Get-ChildItem -Path Cert: -CodeSigningCert -Recurse
Get-ChildItem -Path C:\MsiFolder -Filter *.msi -Recurse | Set-AuthenticodeSignature -Certificate $cert
Solo una richiesta di password!
$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
Quale segnaletica? È in grado di linea di comando? –
Sì. È un exe che può essere eseguito da riga di comando – Samselvaprabu