2012-10-05 17 views
7

Posso utilizzare Inno Setup per importare un file .cer (un certificato)?Utilizzando Inno Setup, come importare un file .cer certificato?

Come posso farlo?

Ho bisogno di creare un programma di installazione certificato per Windows XP, Windows Vista e Windows 7.

+0

Stavo pensando di utilizzare una riga di comando con l'utilità Certmgr.exe. Funzionerebbe con tutti i sistemi Windows? –

+4

Certmgr.exe non fa parte di Windows, quindi devi raggrupparlo nel tuo programma di installazione. Penso che dovrebbe funzionare con tutte le versioni di Windows, dato che fa parte di Windows SDK. –

risposta

3

Aggiungere Certmgr.exe e yourcertificate.cer nel setup:

[Files] 
Source: CertMgr.exe; DestDir: {app}; Flags: deleteafterinstall 
Source: yourcertificate.cer; DestDir: {app}; Flags: deleteafterinstall 

E nella sezione [Run], scrivere qualcosa di simile:

Filename: {app}\CertMgr.exe; Parameters: "-add -all -c yourcertificate.cer -s -r localmachine trustedpublisher"; Flags: waituntilterminated runhidden; 
+1

Se è ridistribuibile ... – TLama

+0

Nel mio caso il certificato autofirmato. in modo che la linea localmachine terminasse con root – YumYumYum

6

realtà il CertMgr.exe non è disponibile in tutti i PC e, inoltre, non sembra essere ridistribuibile (come suggerito da @TL AMA); e inoltre non ne hai nemmeno bisogno.

CertUtil è disponibile su ogni macchina Windows (che ho testato) e funziona perfettamente:

[Run] 
Filename: "certutil.exe"; Parameters: "-addstore ""TrustedPublisher"" {app}\MyCert.cer"; \ 
    StatusMsg: "Adding trusted publisher..." 
+0

Puoi elaborare su * "ogni macchina Windows (che ho testato)" *? –

+0

@MartinPrikryl Devo ammettere che avrei potuto fare più test. L'ho scoperto solo ieri e quindi non l'ho testato tassativamente; finora solo su macchine Win 10. Ma uno è VM su Azure, 2 sono normali PC senza studio visivo, dotNets ecc. (Quindi non è disponibile CertMgr.exe), e poi c'è il mio DevPC che ha CertMgr ma anche CertUtil. – SlowLearner

+0

@MartinPrikryl perché aggiungere "\" prima di StatusMsg? – SlowLearner