Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendaftarkan DLL CPP ke COM Menggunakan Wix MSI Installer dengan betul?

Bagaimana untuk Mendaftarkan DLL CPP ke COM Menggunakan Wix MSI Installer dengan betul?

Susan Sarandon
Lepaskan: 2024-11-19 03:00:03
asal
547 orang telah melayarinya

How to Properly Register a CPP DLL into COM Using Wix MSI Installer?

Mendaftarkan dll CPP ke dalam COM selepas pemasangan menggunakan pemasang Wix Msi

Jawapan Ringkas, Ringkasan

Anda perlu berhenti menggunakan fail kelompok dan tindakan tersuai untuk pendaftaran COM (tidak boleh dipercayai) dan sebaliknya mengekstrak maklumat pendaftaran COM menggunakan alat heat.exe daripada kit alat WiX untuk menambah pendaftaran COM pada pangkalan data MSI anda pada masa penyusunan.

Terdapat beberapa komplikasi untuk binari 64-bit, lihat butiran di bawah. Nasib baik nampaknya anda sedang berurusan dengan komponen 32-bit berdasarkan direktori pemasangan anda yang ditunjukkan di atas.

Dalam kes khusus ini, ia membantu untuk menjalankan heat.exe pada fail COM selepas penggunaan apabila semua kebergantungan berada "dalam place" untuk fail COM dimuatkan dengan betul. Terdapat banyak "komunikasi penyahpepijatan" dalam jawapan ini - Saya akan meninggalkan semuanya untuk masa hadapan, tetapi cuba penyelesaian mudah ini dahulu. Dan mungkin cuba alat kebergantungan baharu "Dependencies.exe" yang diterangkan di bawah.

Jawapan Panjang dan Terperinci

Sebelum saya cuba menjawab soalan (yang nampaknya berkisar tentang kehilangan kebergantungan atau sesuatu yang pelik sedang dilakukan dalam fail kelompok anda), saya ingin menjelaskan beberapa perkara untuk anda berkaitan amalan terbaik untuk pendaftaran COM.

Pendaftaran sendiri Dianggap Memudaratkan

Pendaftaran diri tidak boleh digunakan untuk mendaftarkan fail COM. Berikut ialah penerangan mengapa ini berlaku: [Daftar MSI dll - Pendaftaran Sendiri dianggap berbahaya](https://stackoverflow.com/questions/2736641/com-registration-where-did-the-idea-of-no -pendaftaran-diri-datang-dari/2737548#2737548). Terdapat berita baik, walau bagaimanapun, melakukan perkara seperti yang dimaksudkan melalui mekanisme MSI terbina dalam akan menjadi lebih mudah dan lebih dipercayai setelah anda menyediakannya dengan betul.

Daripada menggunakan tindakan tersuai atau jadual SelfReg, maklumat pendaftaran COM hendaklah diekstrak daripada fail COM anda pada masa penyusunan - dengan kata lain apabila anda menyusun fail MSI anda daripada fail sumber WiX anda. Data pendaftaran yang diekstrak hendaklah digunakan untuk mengisi keluarga jadual data MSI yang direka bentuk untuk mendaftar dan menyahdaftar fail COM dengan pasti semasa pemasangan dan penyahpasangan masing-masing.

WiX: Alat Baris Perintah "heat.exe"

Memahami butiran rumit proses ini tidak perlu - anda hanya perlu tahu alat yang hendak digunakan. WiX menyediakan alat "heat.exe" untuk tujuan ini. Ia pada asasnya adalah alat "penuai" yang mampu menjana fail sumber XML WiX yang sah untuk beberapa tujuan - salah satunya ialah pengekstrakan COM. Ia juga menyokong merentasi direktori secara umum - menjana fail sumber WiX yang boleh memasang fail yang ditemui semasa traversal. Ia pada asasnya adalah cara yang sangat cepat untuk membuat pakej MSI setelah anda tahu cara menggunakannya.

Dependency Walker

Jadi kami telah menetapkan bahawa anda perlu meluangkan masa untuk mempelajari cara menggunakan heat.exe untuk menjana sumber WiX yang diperlukan untuk mendaftarkan fail COM dengan betul. namun, terdapat satu lagi masalah: kebergantungan yang hilang.

Untuk fail COM boleh mendaftar sendiri - atau untuk anda berjaya mengekstrak data pendaftaran COM menggunakan heat.exe - COM fail mesti boleh dimuatkan dengan betul. Untuk ini menjadi mungkin semua kebergantungan dll mesti tersedia pada sistem yang dipersoalkan di lokasi yang boleh diakses.

Dapatkan sendiri salinan Dependency Walker dan gunakannya untuk mengimbas fail COM anda untuk mengetahui fail yang bergantung padanya. Berikut ialah contoh fail COM yang gagal dimuatkan kerana ia tidak menemui MMUtilities.dll:

[Imej output Dependency Walker menunjukkan kebergantungan yang hilang]

Anda kemungkinan besar akan menemui sesuatu yang salah yang serupa dengan dll anda (atau apa sahaja jenis fail itu, contohnya OCX) apabila ia dijalankan dari lokasi pemasangan persediaan anda. Fail pergantungan yang diperlukan tidak dapat ditemui oleh regsvr32.exe dan proses pendaftaran gagal.

Terdapat beberapa kebergantungan yang dilaporkan hilang yang tidak penting - Saya rasa ini ada kaitan dengan umur daripada alat Dependency Walker - ia tidak dikemas kini baru-baru ini sejauh yang saya tahu. Cari fail yang anda kenali sebagai sama ada fail pergantungan anda sendiri atau fail sistem teras berbanding dengan nama dll yang sangat panjang bagi fail yang anda tidak pernah dengar. Perlu diingat bahawa sesetengah dll mempunyai dll bahasa pergantungan yang diperlukan untuk memuatkan. Contohnya MMUtilities.dll memerlukan MmUtilitiesEnglish.dll atau bahasa lain dll hadir dalam folder yang sama untuk dapat dimuatkan dengan betul.

Beberapa contoh kebergantungan positif palsu untuk fail di atas: API-MS -WIN-CORE-RTLSUPPORT-L1-1-0.DLL, API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL, API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL , dll... Terdapat banyak. Saya percaya, tetapi saya tidak pasti, bahawa punca positif palsu ini tertumpu pada masalah dengan komponen bersebelahan yang dipasang pada

Atas ialah kandungan terperinci Bagaimana untuk Mendaftarkan DLL CPP ke COM Menggunakan Wix MSI Installer dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan