Cách dễ nhất (và Rob M sẽ rant và rave về cách này là sai) chỉ sử dụng SelfRegCost=1
trên thẻ tệp cho DLL.
Điều này là sai, bởi vì chúng ta nên kiểm soát rõ ràng việc đăng ký DLL, không cho phép nó chỉ chạy mã tùy ý qua DllRegisterServer. Lý thuyết là một DLL không nên làm gì ngoài việc đặt các mục thích hợp trong registry khi DllRegisterServer được gọi. Thật không may, nhiều người trong số họ làm nhiều hơn thế, vì vậy tự đăng ký có thể là cách duy nhất để cài đặt của bạn hoạt động.
Điều này cũng sai, vì điều đó có nghĩa là hệ thống cài đặt Windows không biết gì về các khóa đăng ký đó, và những gì nên và không nên ở đó. Điều đó có nghĩa là việc sửa chữa sẽ không hoạt động và có thể việc cài đặt sẽ không hoạt động đúng cách, v.v.
Nếu không, bạn có thể tạo mã WiX thích hợp bằng cách trỏ heat.exe
tại DLL của bạn và tích hợp đầu ra vào WiX hiện tại của bạn dự án. Bạn sẽ nhận được nhiều loại thẻ Class, ProgID, TypeLib và Registry. Bạn có thể cần chỉnh sửa thủ công kết quả đó để biên dịch.
Tôi hy vọng điều đó sẽ hữu ích.
Nguồn
2008-12-12 21:31:35
Vì vậy, về cơ bản sao chép/dán đầu ra từ heat.exe và thay đổi đường dẫn thích hợp vv? – Davy8
Tôi thích đặt các wx mà nhiệt được tạo thành một đoạn mà các tham chiếu chính của wx. Các tùy chọn bạn đã truyền cho nhiệt là gì, điều đó đã không đăng ký dll. – CheGueVerra
Tôi thường phải di chuyển các thẻ lớp và progid vào thẻ tập tin, và có thể chỉnh sửa một số khóa registry. Cụ thể, nếu DLL là một DLL .NET, bạn sẽ cần phải cung cấp các id duy nhất cho các khóa registry tham chiếu đến mscoree.dll hoặc bạn sẽ nhận được xung đột với các tệp được tạo tự động. –