2012-10-05 33 views
7

Tôi có thể sử dụng Thiết lập Inno để nhập tệp .cer (chứng chỉ) không?Sử dụng Cài đặt Inno, cách nhập tệp .cer chứng chỉ?

Tôi có thể làm như thế nào?

tôi cần phải tạo ra một trình cài đặt giấy chứng nhận cho Windows XP, Windows Vista và Windows 7.

+0

Tôi đã suy nghĩ về việc sử dụng một dòng lệnh với tiện ích Certmgr.exe. Nó có hoạt động với tất cả các hệ thống cửa sổ không? –

+4

Certmgr.exe không phải là một phần của Windows, vì vậy bạn phải gói nó trong trình cài đặt của mình. Tôi nghĩ rằng nó sẽ làm việc với tất cả các phiên bản Windows, vì nó là một phần của Windows SDK. –

Trả lời

3

Thêm Certmgr.exe và yourcertificate.cer vào thiết lập:

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

Và trong [Run] phần, viết một cái gì đó như thế này:

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

Nếu nó có thể phân phối lại ... – TLama

+0

Trong trường hợp của tôi, chứng chỉ tự ký của nó. để dòng localmachine kết thúc với root – YumYumYum

6

trên thực tế các CertMgr.exe không có sẵn trên tất cả các máy tính và hơn nữa nó không xuất hiện để được phân phối (như ám bởi @TL ama); và bên cạnh đó bạn thậm chí không cần nó.

CertUtil có sẵn trên tất cả các máy tính Windows (mà tôi đã thử nghiệm) và hoạt động hoàn hảo:

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

Bạn có thể xây dựng trên * "mọi máy tính Windows (mà tôi đã thử nghiệm)" * không? –

+0

@MartinPrikryl Phải thừa nhận rằng tôi có thể thực hiện nhiều thử nghiệm hơn. Tôi mới phát hiện ra điều này ngày hôm qua và do đó chưa thử nghiệm đầy đủ; cho đến nay chỉ trên Win 10 máy. Nhưng một là VM trên Azure, 2 là máy tính thông thường mà không có studio trực quan, dotNets, vv (vì vậy không có CertMgr.exe có sẵn), và sau đó có DevPC của tôi trong đó có CertMgr nhưng CertUtil cũng hoạt động trên đó. – SlowLearner

+0

@MartinPrikryl tại sao thêm '\' trước StatusMsg? – SlowLearner