Aracılığıyla paylaş


ClickOnce ile COM bileşenlerini dağıtma

Eski COM bileşenlerinin dağıtımı geleneksel olarak zor bir görevdi. Bileşenlerin genel olarak kaydedilmesi gerekir ve bu nedenle çakışan uygulamalar arasında istenmeyen yan etkilere neden olabilir. Bileşenler bir uygulamaya tamamen yalıtıldığından veya yan yana uyumlu olduğundan bu durum genellikle .NET Framework uygulamalarında sorun oluşturmaz. Visual Studio, Yalıtılmış COM bileşenlerini Windows işletim sisteminde dağıtmanıza olanak tanır.

ClickOnce, .NET uygulamalarınızı dağıtmak için kolay ve güvenli bir mekanizma sağlar. Ancak, uygulamalarınız eski COM bileşenlerini kullanıyorsa, bunları dağıtmak için ek adımlar uygulamanız gerekir. Bu konu başlığında yalıtılmış COM bileşenlerinin nasıl dağıtılacağı ve yerel bileşenlere (örneğin, Visual Basic 6.0 veya Visual C++) nasıl başvurılacağı açıklanmaktadır.

Yalıtılmış COM bileşenlerini dağıtma hakkında daha fazla bilgi için bkz. ClickOnce ve Registration-Free COM ile Uygulama Dağıtımlarını Basitleştirme.

Kayıtsız COM

Kayıtsız COM, yalıtılmış COM bileşenlerini dağıtmaya ve etkinleştirmeye yönelik yeni bir teknolojidir. Genellikle sistem kayıt defterine yüklenen tüm bileşenin tür kitaplığını ve kayıt bilgilerini uygulamayla aynı klasörde depolanan bildirim adlı bir XML dosyasına yerleştirerek çalışır.

COM bileşenini yalıtmak için geliştiricinin makinesine kaydedilmesi gerekir, ancak son kullanıcının bilgisayarına kaydedilmesi gerekmez. Bir COM bileşenini yalıtmak için tek yapmanız gereken başvurusunu Yalıtılmış özelliğini True olarak ayarlamaktır. Varsayılan olarak, bu özellik kayıtlı bir COM başvurusu olarak ele alınması gerektiğini belirten False olarak ayarlanır. Bu özellik True ise, derleme zamanında bu bileşen için bir bildirim oluşturulmasına neden olur. Ayrıca, yükleme sırasında ilgili dosyaların uygulama klasörüne kopyalanmasına da neden olur.

Bildirim oluşturucu yalıtılmış bir COM başvurusuyla karşılaştığında, bileşenin CoClass tür kitaplığındaki tüm girişleri numaralandırır, her girdiyi ilgili kayıt verileriyle eşleştirır ve tür kitaplığı dosyasındaki tüm COM sınıfları için bildirim tanımları oluşturur.

ClickOnce kullanarak kayıtsız COM bileşenlerini dağıtma

ClickOnce dağıtım teknolojisi yalıtılmış COM bileşenlerini dağıtmak için uygundur, çünkü hem ClickOnce hem de kayıtsız COM, dağıtılması için bir bileşenin bildirimi olmasını gerektirir.

Genellikle, bileşenin yazarı bir bildirim sağlamalıdır. Ancak, değilse, Visual Studio bir COM bileşeni için otomatik olarak bildirim oluşturabilecektir. Bildirim oluşturma, ClickOnce Yayımlama işlemi sırasında gerçekleştirilir; daha fazla bilgi için bkz. ClickOnce Uygulamalarını Yayımlama. Bu özellik, Visual Basic 6.0 gibi önceki geliştirme ortamlarında oluşturduğunuz eski bileşenlerden de yararlanmanızı sağlar.

ClickOnce'un COM bileşenlerini dağıtmanın iki yolu vardır:

  • COM bileşenlerinizi dağıtmak için önyükleyiciyi kullanın; bu, desteklenen tüm platformlarda çalışır.

  • Yerel bileşen yalıtımı dağıtımını (kayıtsız COM olarak da bilinir) kullanın.

Basit bir COM bileşenini yalıtma ve dağıtma örneği

Kayıtsız COM bileşen dağıtımlarını göstermek için, bu örnek Visual Basic'te Visual Basic 6.0 kullanılarak oluşturulan yalıtılmış yerel COM bileşenine başvuran ve ClickOnce kullanarak dağıtan Windows tabanlı bir uygulama oluşturur.

İlk olarak yerel COM bileşenini oluşturmanız gerekir:

Yerel COM bileşeni oluşturmak için
  1. Visual Basic 6.0'ı kullanarak , Dosya menüsünde Yeni'ye ve ardından Project'e tıklayın.

  2. Yeni Proje iletişim kutusunda Visual Basic düğümünü seçin ve bir ActiveX DLL projesi seçin. Ad kutusuna buraya yazın: VB6Hello.

    Uyarı

    Kayıtsız COM ile yalnızca ActiveX DLL ve ActiveX Denetimi proje türleri desteklenir; ActiveX EXE ve ActiveX Belgesi proje türleri desteklenmez.

  3. Çözüm Gezgini'ndeClass1.vb çift tıklayarak metin düzenleyicisini açın.

  4. Class1.vb'de, oluşturulan New metodunun kodundan sonra aşağıdaki kodu ekleyin:

    Public Sub SayHello()
       MsgBox "Message from the VB6Hello COM component"
    End Sub
    
  5. Bileşeni oluşturun. Derleme menüsünde Çözüm Oluştur'a tıklayın.

Uyarı

Kayıt gerektirmeyen COM sadece DLL ve COM kontrol proje türlerini destekler. EXE'leri kayıtsız COM ile kullanamazsınız.

Artık Windows tabanlı bir uygulama oluşturabilir ve buna COM bileşenine bir başvuru ekleyebilirsiniz.

COM bileşeni kullanarak Windows tabanlı bir uygulama oluşturmak için
  1. Visual Basic'i kullanarak , Dosyamenüsünden Yeni'ye ve ardından Project'e tıklayın.

  2. Yeni Proje iletişim kutusunda Visual Basic düğümünü ve ardından Windows Uygulaması'nı seçin. Ad kutusuna yazın RegFreeComDemo.

  3. Proje başvurularını görüntülemek için Çözüm Gezgini'ndeTüm Dosyaları Göster düğmesine tıklayın.

  4. Başvurular düğümüne sağ tıklayın ve bağlam menüsünden Başvuru Ekle'yi seçin.

  5. Başvuru Ekle iletişim kutusunda, Gözat sekmesine tıklayın, VB6Hello.dll dosyasına gidin ve ardından onu seçin.

    Başvurular listesinde VB6Hello referansı görüntülenir.

  6. Araç Kutusu'na gidin, bir Düğme denetimi seçin ve Form1 formuna sürükleyin.

  7. Özellikler penceresinde düğmenin Text özelliğini Hello olarak ayarlayın.

  8. İşleyici kodu eklemek için düğmeye çift tıklayın ve kod dosyasında işleyicinin aşağıdaki gibi okuması için kod ekleyin:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim VbObj As New VB6Hello.Class1
        VbObj.SayHello()
    End Sub
    
  9. Uygulamayı çalıştırın. Hata Ayıkla menüsünde Hata Ayıklamayı Başlat'a tıklayın.

    Daha sonra kontrolü izole etmelisiniz. Uygulamanızın kullandığı her COM bileşeni, projenizde COM başvurusu olarak temsil edilir. Bu başvurular Çözüm Gezgini penceresindeki Başvurular düğümü altında görünür. (Başvuruları doğrudan Proje menüsündeki Başvuru Ekle komutunu kullanarak veya dolaylı olarak bir ActiveX denetimini formunuza sürükleyerek ekleyebileceğinize dikkat edin.)

    Aşağıdaki adımlarda COM bileşenini yalıtma ve yalıtılmış denetimi içeren güncelleştirilmiş uygulamayı yayımlama adımları gösterilmektedir:

COM bileşenini yalıtmak için
  1. Çözüm Gezgini'ndekiBaşvurular düğümünde VB6Hello başvuruyu seçin.

  2. Özellikler penceresinde, Yalıtılmış özelliğinin değerini False yerine True olarak değiştirin.

  3. Derleme menüsünde Çözüm Oluştur'a tıklayın.

    Artık F5 tuşuna bastığınızda uygulama beklendiği gibi çalışıyor ancak artık kayıtsız COM altında çalışıyor. Bunu kanıtlamak için VB6Hello.dll bileşeninin kaydını kaldırmayı ve RegFreeComDemo1.exe Visual Studio IDE dışında çalıştırmayı deneyin. Düğmeye tıklandığında bu kez çalışmaya devam eder. Uygulama bildirimini geçici olarak yeniden adlandırırsanız, yeniden başarısız olur.

Uyarı

Com bileşeninin kaydını geçici olarak kaldırarak yokluğunun benzetimini yapabilirsiniz. Bir komut istemi açın, ardından cd /d %windir%\system32 yazarak sistem klasörünüze gidin ve regsvr32 /u VB6Hello.dll yazarak bileşeni kayıttan kaldırın. yazarak regsvr32 VB6Hello.dllyeniden kaydedebilirsiniz.

Son adım, ClickOnce kullanarak uygulamayı yayımlamaktır:

Yalıtılmış COM bileşeniyle uygulama güncelleştirmesi yayımlamak için
  1. Oluştur menüsünde RegFreeComDemo Yayımla'ya tıklayın.

    Yayımlama Sihirbazı görüntülenir.

  2. Yayımlama Sihirbazı'nda, yerel bilgisayarın diskinde yayımlanan dosyalara erişebileceğiniz ve dosyaları inceleyebileceğiniz bir konum belirtin.

  3. Uygulamayı yayımlamak için Son'a tıklayın.

    Yayımlanan dosyaları incelerseniz sysmon.ocx dosyasının dahil olduğuna dikkat edin. Denetim bu uygulama için tamamen yalıtılmıştır; yani son kullanıcının makinesinde denetimin farklı bir sürümünü kullanan başka bir uygulama varsa, bu uygulamaya müdahale edemez.

Yerel derlemelere referans ver

Visual Studio, yerel Visual Basic 6.0 veya C++ derlemelerine başvuruları destekler; bu tür başvurular yerel başvurular olarak adlandırılır. Bir başvuruyu yerel olup olmadığını, Dosya Türü özelliğinin Yerel veya ActiveX olarak ayarlandığını doğrulayarak anlayabilirsiniz.

Yerel başvuru eklemek için Başvuru Ekle komutunu kullanın ve bildirime göz atın. Bazı bileşenler bildirimi DLL'nin içine yerleştirir. Bu durumda, DLL'nin kendisini seçmeniz yeterlidir ve bileşenin eklenmiş bir bildirim içerdiğini algılarsa Visual Studio bunu yerel başvuru olarak ekler. Visual Studio, başvuruda bulunılan bileşenle aynı klasörde yer alıyorsa bildirimde listelenen bağımlı dosyaları veya derlemeleri de otomatik olarak ekler.

COM denetim yalıtımı, bildirimleri olmayan COM bileşenlerini dağıtmayı kolaylaştırır. Ancak, bir bileşen bir bildirimle birlikte sağlanırsa bildirime doğrudan başvurabilirsiniz. Aslında, yalıtılmış özelliğini kullanmak yerine bileşenin yazarı tarafından sağlanan bildirimi her zaman mümkün olduğunca kullanmanız gerekir.

Kayıtsız COM bileşeni dağıtımının sınırlamaları

Kayıtsız COM, geleneksel dağıtım tekniklerine göre net avantajlar sağlar.

Her bileşen kayıtsız COM için uygun bir aday değildir. Aşağıdakilerden herhangi biri doğruysa bileşen uygun değildir:

  • Bileşen işlem dışı bir sunucudur. EXE sunucuları desteklenmez; yalnızca DLL'ler desteklenir.

  • Bileşen işletim sisteminin bir parçasıdır veya XML, tarayıcı bileşeni veya Microsoft Veri Erişim Bileşenleri (MDAC) gibi bir sistem bileşenidir. Bileşen yazarının yeniden dağıtım ilkesini izlemeniz gerekir; satıcınızla kontrol edin.

  • Bileşen, Microsoft Office gibi bir uygulamanın parçasıdır. Örneğin, Microsoft Excel Nesne Modelini yalıtmaya çalışmamalısınız. Bu, Office'in bir parçasıdır ve yalnızca tam Office ürününün yüklü olduğu bir bilgisayarda kullanılabilir.

  • Bileşen, eklenti veya ek bileşen olarak(örneğin, Office eklentisi veya Web tarayıcısında denetim) kullanılmak üzere tasarlanmıştır. Bu tür bileşenler genellikle barındırma ortamı tarafından tanımlanan ve bildirimin kapsamı dışında olan bir tür kayıt şeması gerektirir.

  • Bileşen, sistem için bir fiziksel veya sanal cihaz( örneğin, yazdırma biriktiricisi için bir cihaz sürücüsü) yönetir.

  • Bileşen, Veri Erişimi yeniden dağıtılabilir. Veri uygulamaları genellikle çalıştırılmadan önce ayrı bir Veri Erişimi yeniden dağıtılabilir bileşeninin yüklenmesini gerektirir. Microsoft ADO Veri Denetimi, Microsoft OLE DB veya Microsoft Veri Erişim Bileşenleri (MDAC) gibi bileşenleri yalıtmaya çalışmamalısınız. Bunun yerine, uygulamanız MDAC veya SQL Server Express kullanıyorsa bunları önkoşul olarak ayarlamanız gerekir; Bkz . Nasıl yapılır: ClickOnce Uygulaması ile Önkoşulları Yükleme.

    Bazı durumlarda, bileşenin geliştiricisinin kayıtsız COM için yeniden tasarlaması mümkün olabilir. Bu mümkün değilse, Önyükleyici'yi kullanarak standart kayıt düzeni aracılığıyla bunlara bağımlı uygulamalar derleyebilir ve yayımlayabilirsiniz. Daha fazla bilgi için bkz. Önyükleyici Paketleri Oluşturma.

    COM bileşeni uygulama başına yalnızca bir kez yalıtılabilir. Örneğin, aynı COM bileşenini aynı uygulamanın parçası olan iki farklı Sınıf Kitaplığı projesinden yalıtamazsınız. Bunun yapılması bir derleme uyarısına neden olur ve uygulama çalışma zamanında yüklenemiyor. Bu sorunu önlemek için Microsoft, COM bileşenlerini tek bir sınıf kitaplığında kapsüllemenizi önerir.

    Uygulamanın dağıtımı kayıt gerektirmese bile geliştiricinin makinesinde COM kaydının gerekli olduğu çeşitli senaryolar vardır. özelliği, Isolated derleme sırasında bildirimi otomatik olarak oluşturmak için COM bileşeninin geliştiricinin makinesine kaydedilmesini gerektirir. Derleme sırasında otomatik kaydı çağıran kayıt yakalama özellikleri yoktur. Ayrıca, tür kitaplığında açıkça tanımlanmayan sınıflar bildirime yansıtılmaz. Yerel başvuru gibi önceden var olan bir bildirimle COM bileşeni kullanırken, bileşenin geliştirme zamanında kaydedilmesi gerekmeyebilir. Ancak, bileşen bir ActiveX denetimiyse ve bunu Araç Kutusu'na ve Windows Forms tasarımcısına eklemek istiyorsanız kayıt gereklidir.

  • ClickOnce güvenlik ve dağıtım