9

Gần đây tôi đã mua chứng chỉ xác thực từ globalsign và đang gặp sự cố khi ký các tệp của tôi để triển khai. Có một vài tệp .exe được tạo bởi dự án và sau đó được đưa vào tệp .msi. Khi tôi ký các tệp .exe với signtool, chứng chỉ hợp lệ và chúng chạy tốt. Vấn đề là khi tôi xây dựng .msi (sử dụng dự án thiết lập phòng thu trực quan) các tệp .exe bị mất chữ ký của họ. Vì vậy, tôi có thể đăng ký .msi sau khi nó được xây dựng, nhưng các tệp .exe đã cài đặt tiếp tục toàn bộ doanh nghiệp "nhà xuất bản không xác định". Làm cách nào để giữ lại chữ ký trên các tệp này để cài đặt trên máy khách?Cách đăng ký tệp cài đặt của Visual Studio .msi

Trả lời

11

Visual Studio tạo hai thư mục tại thời gian biên dịch: obj và bin. Hóa ra, ít nhất là trong trường hợp của tôi, đầu ra sẽ luôn được sao chép từ thư mục obj vào thư mục bin. Tôi đã ký các tập tin thực thi trong thư mục bin chỉ để có chúng ghi đè và sau đó đóng gói vào msi. Việc ký các tệp thi hành trong thư mục obj đã giải quyết được vấn đề.

+0

cảm ơn, điều này đã giải quyết được vấn đề của tôi với điều này! –

+0

Cảm ơn bạn rất nhiều. Tôi đã thấy mọi người cố gắng truyền tải cùng một người khác, mặc dù câu trả lời của bạn rất súc tích và dễ đọc. Bạn đã tiết kiệm được nhiều giờ trong cuộc đời của mình:) – Dawson

0

Bạn có tích cực dự án trình cài đặt đang xem xét ký hiệu nhị phân và không phải là dấu chưa ký?

Tôi không sử dụng trình tạo msi nhiều, nhưng tôi sẽ thấy thật ngạc nhiên khi nó sửa đổi các tệp mà nó gói.

+0

Cảm ơn bạn đã chỉ cho tôi đúng hướng – Alex

11

Bạn có thể thêm PostBuiltEvent sau vào dự án cài đặt VS của bạn (các thuộc tính dự án):

của Windows 8.0:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a $(BuiltOutputPath) 

Windows 10:

"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /a $(BuiltOutputPath) 

Project properties window

PS : Thích ứng với các đối số của signtools để phù hợp với nhu cầu của bạn bằng cách tham khảo đến the documentation

Các vấn đề liên quan