2012-01-30 8 views
5

मैं अपने एमएसआई पर हस्ताक्षर करने के लिए साइनटोल का उपयोग कर रहा हूं।फ़ोल्डर के अंतर्गत सभी एमएसआई फ़ाइल पर हस्ताक्षर कैसे करें?

फ़ोल्डर और सबफ़ोल्डर में सभी एमएसआई को दोबारा कैसे खोजा जाए, फिर उन सभी पर हस्ताक्षर करें?

+0

क्या साइनटोल? क्या यह कमांड लाइन सक्षम है? –

+0

हां। यह एक exe है जिसे कमांडलाइन से निष्पादित किया जा सकता है – Samselvaprabu

उत्तर

6

पिछले 2 उत्तरों में PowerShell समाधान दिखाया गया है। आप इसे आसानी से एक CMD.EXE कमांड प्रॉम्प्ट से भी पूरा कर सकते हैं।

for /r "yourRootFolder" %F in (*.msi) do signtool sign /a "%F" 

स्पष्ट रूप से आपको अपनी आवश्यकताओं के अनुसार अपने साइनटोल विकल्पों को संशोधित करने की आवश्यकता है। महत्वपूर्ण बिट% F है प्रत्येक बार .MSI फ़ाइल का नाम धारण करेगा।

यदि आप बैच फ़ाइल के भीतर से आदेश को चलाने के लिए चाहते हैं, तो% को दोगुना होना चाहिए, इसलिए% F दोनों स्थानों पर %% F हो जाता है।

2

क्या आप जानते मान लें क्या कमांड लाइन पैरामीटर आप कर रहे हैं आप इस तरह किसी दिए गए फ़ोल्डर के अंतर्गत सभी MSIs प्राप्त कर सकते हैं एमएसआई पर हस्ताक्षर करने के उपकरण के लिए की जरूरत है:

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 
    } 
} 
3

यहाँ एक उदाहरण एक कोड हस्ताक्षर प्रमाणपत्र का उपयोग (मैं केवल राशि है $ प्रमाण पत्र में एक प्रमाणपत्र):

$cert = Get-ChildItem -Path Cert: -CodeSigningCert -Recurse 
Get-ChildItem -Path C:\MsiFolder -Filter *.msi -Recurse | Set-AuthenticodeSignature -Certificate $cert 
0

केवल एक पासवर्ड प्रॉम्प्ट!

$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 
संबंधित मुद्दे