2012-05-09 36 views
8

Nếu không tự đăng ký. sau đó làm thế nào để chúng tôi thực hiện các dll COM đăng ký trong khi cài đặt bằng cách sử dụng WIX?đăng ký com dll trong wix

Theo tutorial, tôi đã sử dụng ví dụ ComPlusApplication (dll không phải .net). Nhưng nó không hoạt động. Nó không đăng ký được.

Tôi có thể đăng ký bằng cách sử dụng regsvr32 từ dòng lệnh thành công. Tôi đọc về việc không tạo các hành động tùy chỉnh để đăng ký dll com.

SO cách tiếp cận tốt nhất là gì? Nếu chúng ta cần sử dụng nhiệt, chúng ta sẽ viết lệnh ở đâu và thêm kết quả wx vào dự án chính?

+0

Mặc dù bạn đã yêu cầu cách đăng ký, bạn có thể cân nhắc không đăng ký thành phần COM. Các mô hình COM miễn phí đăng ký cho phép bạn sử dụng các dll COM mà không cần chạm vào registry. Xem: http://msdn.microsoft.com/en-us/library/ms973913.aspx – harper

Trả lời

17

tôi sẽ khuyên bạn sử dụng công cụ Wix Heat.exe để thu hoạch tất cả các dữ liệu cần thiết để đăng ký thành phần com và sau đó tham khảo các đoạn trong .wxs bạn nộp như thế này:

<ComponentGroupRef Id="FooBar.dll" /> 

Hoặc bao gồm nó trong tệp .wxs của bạn như sau:

<?include FooBar.dll.wxi?> 

Phương pháp này cho phép bạn kiểm soát hoàn toàn những gì xảy ra trong quá trình đăng ký/Không đăng ký thành phần Com.

Tuy nhiên, bạn vẫn có thể sử dụng Regsvr32 trong dự án Wix. Nhưng nó dựa vào việc thực hiện chính xác các chức năng RegisterServer/UnregisterServer trong thành phần COM

<CustomAction Id="RegisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 
    <CustomAction Id="UnregisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s /u "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 

Sau đó thêm hành động của bạn vào chuỗi cài đặt.

<InstallExecuteSequence> 
     <Custom Action="RegisterFooBar" After="InstallFinalize">NOT Installed</Custom> 
     <Custom Action="UnregisterFooBar" After="InstallFinalize">REMOVE="ALL"</Custom> 
    </InstallExecuteSequence> 
+0

Tôi đã sử dụng công cụ nhiệt để tạo và sau đó sao chép đầu ra vào tệp .wxs của tôi. – rakheep

+0

@rakheep: Nếu bạn tìm thấy câu trả lời hữu ích, vui lòng upvote nó. Khi bạn đã nhận được một hoặc nhiều câu trả lời đúng, vui lòng chọn câu trả lời đúng nhất. – JOG

+0

Dường như lệnh hủy đăng ký bị thiếu trong bài đăng của bạn ở trên. Ngoài ra tôi đã phải sử dụng phương pháp này khi tôi không thể trích xuất các thông tin đăng ký bằng cách sử dụng nhiệt cho 1 dll cụ thể. Làm việc cho tất cả trừ 1 trong một dự án cụ thể. –

2

Bạn có thể thử sử dụng chương trình heat.exe và sau đó tham chiếu đoạn trong mã wix của bạn.

tập tin heat.exe -gg out

Như trong:

tập tin heat.exe my.dll -gg out my.wxs

Ps. Thêm -gg chuyển đổi sẽ tạo ra các guids, nếu không bạn có thể bỏ qua nó nếu bạn muốn tự thêm chúng.

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