Megosztás a következőn keresztül:


COM-összetevők üzembe helyezése a ClickOnce használatával

Az örökölt COM-összetevők üzembe helyezése hagyományosan nehéz feladat volt. Az összetevőket globálisan regisztrálni kell, és így nemkívánatos mellékhatásokat okozhatnak az átfedésben lévő alkalmazások között. Ez a helyzet általában nem jelent problémát a .NET-keretrendszer alkalmazásaiban, mert az összetevők teljesen el vannak különítve egy alkalmazástól, vagy egymás mellett kompatibilisek. A Visual Studio lehetővé teszi izolált COM-összetevők üzembe helyezését a Windows operációs rendszeren.

A ClickOnce egyszerű és biztonságos mechanizmust biztosít a .NET-alkalmazások üzembe helyezéséhez. Ha azonban az alkalmazások régi COM-összetevőket használnak, további lépéseket kell tennie a telepítésükhöz. Ez a témakör azt ismerteti, hogyan helyezhet üzembe izolált COM-összetevőket, és hogyan hivatkozhat natív összetevőkre (például a Visual Basic 6.0-ról vagy a Visual C++-ról).

Az izolált COM-összetevők telepítésével kapcsolatos további információkért lásd: Alkalmazástelepítés egyszerűsítése a ClickOnce és Registration-Free COM használatával.

Regisztráció nélküli COM

A regisztráció nélküli COM egy új technológia az izolált COM-összetevők üzembe helyezéséhez és aktiválásához. Úgy működik, hogy az összetevő típustárát és regisztrációs adatait, amelyek általában a rendszerregisztrációs adatbázisba vannak telepítve, egy jegyzék nevű XML-fájlba helyezik, amelyet az alkalmazással azonos mappában tárolnak.

A COM-összetevők elkülönítéséhez regisztrálni kell a fejlesztő gépén, de nem kell regisztrálni a végfelhasználó számítógépén. A COM-összetevők elkülönítéséhez mindössze annyit kell tennie, hogy a hivatkozás izolált tulajdonságát Igaz értékre állítja. Alapértelmezés szerint ez a tulajdonság False (Hamis) értékre van állítva, ami azt jelzi, hogy regisztrált COM-hivatkozásként kell kezelni. Ha ez a tulajdonság Igaz, akkor a létrehozáskor a rendszer létrehoz egy jegyzékfájlt ehhez az összetevőhöz. Emellett a megfelelő fájlok az alkalmazásmappába másolódnak a telepítés során.

Amikor a jegyzékgenerátor izolált COM-referenciával találkozik, számba fogja venni az CoClass összetevő típustárában lévő összes bejegyzést, megfelelteti az egyes bejegyzéseket a megfelelő regisztrációs adatokkal, és jegyzékdefiníciókat hoz létre a típustárfájl összes COM-osztályához.

Regisztráció nélküli COM-összetevők üzembe helyezése a ClickOnce használatával

A ClickOnce üzembe helyezési technológiája kiválóan alkalmas izolált COM-összetevők üzembe helyezésére, mivel a ClickOnce és a regisztráció nélküli COM egyaránt megköveteli, hogy az összetevők rendelkezzenek jegyzékfájlokkal az üzembe helyezéshez.

Az összetevő szerzőjének általában meg kell adnia egy jegyzékfájlt. Ha azonban nem, a Visual Studio képes automatikusan létrehozni egy jegyzékfájlt egy COM-összetevőhöz. A jegyzéklétrehozás a ClickOnce Publish folyamat során történik; További információ: ClickOnce-alkalmazások közzététele. Ez a funkció lehetővé teszi a korábbi fejlesztési környezetekben, például a Visual Basic 6.0-ban létrehozott régi összetevők használatát is.

A ClickOnce kétféleképpen helyezi üzembe a COM-összetevőket:

  • Használja a bootstrappert a COM-összetevők üzembe helyezéséhez; ez minden támogatott platformon működik.

  • Használjon natív összetevőelkülönítést (más néven regisztráció nélküli COM-telepítést).

Példa egy egyszerű COM-összetevő elkülönítésére és üzembe helyezésére

A regisztráció nélküli COM-összetevők üzembe helyezésének bemutatásához ez a példa létrehoz egy Windows-alapú alkalmazást a Visual Basicben, amely a Visual Basic 6.0 használatával létrehozott, izolált, natív COM-összetevőre hivatkozik, és a ClickOnce használatával telepíti azt.

Először létre kell hoznia a natív COM-összetevőt:

Natív COM-összetevő létrehozása
  1. A Visual Basic 6.0 használatával a Fájl menüben kattintson az Új, majd a Project gombra.

  2. Az Új projekt párbeszédpanelen válassza ki a Visual Basic csomópontot, és válasszon egy ActiveX DLL-projektet . A Név mezőbe írja be a következőt VB6Hello:

    Megjegyzés:

    Csak az ActiveX DLL és az ActiveX Control projekttípusokat támogatja a regisztráció nélküli COM; Az ActiveX EXE és az ActiveX-dokumentum projekttípusai nem támogatottak.

  3. A Megoldáskezelőben kattintson duplán a Class1.vb a szövegszerkesztő megnyitásához.

  4. A Class1.vb-ben adja hozzá a következő kódot a New metódushoz generált kód után:

    Public Sub SayHello()
       MsgBox "Message from the VB6Hello COM component"
    End Sub
    
  5. Építse meg a komponenst. A Build menüben kattintson a Megoldás létrehozása elemre.

Megjegyzés:

A regisztráció nélküli COM csak a DLL-eket támogatja, és a COM vezérli a projekttípusokat. Az EXE-eket nem használhatja regisztrációmentes COM-val.

Most létrehozhat egy Windows-alapú alkalmazást, és hozzáadhat hozzá egy hivatkozást a COM-összetevőhöz.

Windows-alapú alkalmazás létrehozása COM-összetevővel
  1. A Visual Basic használatával a Fájl menüben kattintson az Új, majd a Project elemre.

  2. Az Új projekt párbeszédpanelen válassza a Visual Basic csomópontot, majd a Windows-alkalmazást. A Név mezőbe írja be a következőt RegFreeComDemo:

  3. A Megoldáskezelőben kattintson az Összes fájl megjelenítése gombra a projekthivatkozások megjelenítéséhez.

  4. Kattintson a jobb gombbal a Hivatkozások csomópontra , és válassza a Helyi menü Hivatkozás hozzáadása parancsát.

  5. A Hivatkozás hozzáadása párbeszédpanelen kattintson a Tallózás fülre , keresse meg a VB6Hello.dll, majd jelölje ki.

    Megjelenik egy VB6Hello-hivatkozás a hivatkozások listájában.

  6. Mutasson az eszközkészletre, jelöljön ki egy gombvezérlőt , és húzza az Űrlap1 űrlapra.

  7. A Tulajdonságok ablakban állítsa a gomb Szöveg tulajdonságát Hello értékre.

  8. Kattintson duplán a gombra a kezelőkód hozzáadásához, majd a kódfájlban írja be a kódot, hogy a kezelő a következőképpen nézzen ki:

    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. Indítsa el az alkalmazást. A Hibakeresés menüben kattintson a Hibakeresés indítása elemre.

    Ezután el kell különítenie a vezérlőt. Az alkalmazás által használt ÖSSZES COM-összetevő COM-referenciaként jelenik meg a projektben. Ezek a hivatkozások a Megoldáskezelő ablak Hivatkozás csomópontja alatt láthatók. (Figyelje meg, hogy közvetlenül a Project menü Hivatkozás hozzáadása parancsával vagy közvetve is hozzáadhat hivatkozásokat, ha egy ActiveX-vezérlőt húz az űrlapra.)

    Az alábbi lépések bemutatják, hogyan lehet elkülöníteni a COM-összetevőt, és közzétenni az izolált vezérlőt tartalmazó frissített alkalmazást:

COM-összetevő elkülönítése
  1. A MegoldáskezelőHivatkozás csomópontjában válassza ki a VB6Hello referenciát.

  2. A Tulajdonságok ablakban módosítsa az Izolált tulajdonság értékét HamisrólIgaz értékre.

  3. A Build menüben kattintson a Megoldás létrehozása elemre.

    Az F5 billentyű lenyomásakor az alkalmazás a várt módon működik, de most már regisztráció nélküli COM alatt fut. Ennek bizonyításához próbálja meg megszüntetni a VB6Hello.dll összetevő regisztrációját, és futtassa a RegFreeComDemo1.exe a Visual Studio IDE-n kívül. Ezúttal, amikor a gombra kattint, továbbra is működik. Ha ideiglenesen átnevezi az alkalmazásjegyzéket, az ismét sikertelen lesz.

Megjegyzés:

A COM-összetevők hiányát szimulálhatja a regisztráció ideiglenes megszüntetésével. Nyisson meg egy parancssort, lépjen a rendszermappába a következő begépelésével cd /d %windir%\system32, majd regsvr32 /u VB6Hello.dll begépelésével vonja vissza az összetevő regisztrációját. Újra regisztrálhatja, ha beírja regsvr32 VB6Hello.dll.

Az utolsó lépés az alkalmazás közzététele a ClickOnce használatával:

Alkalmazásfrissítés közzététele izolált COM-összetevővel
  1. A Build menüben kattintson a RegFreeComDemo közzététele elemre.

    Megjelenik a Közzététel varázsló.

  2. A Közzététel varázslóban adjon meg egy helyet a helyi számítógép lemezén, ahol elérheti és megvizsgálhatja a közzétett fájlokat.

  3. Kattintson a Befejezés gombra az alkalmazás közzétételéhez.

    Ha megvizsgálja a közzétett fájlokat, vegye figyelembe, hogy a sysmon.ocx fájl is szerepel benne. A vezérlő teljesen el van különítve ehhez az alkalmazáshoz, ami azt jelenti, hogy ha a végfelhasználó gépe egy másik, a vezérlő egy másik verzióját használó alkalmazással rendelkezik, az nem zavarhatja ezt az alkalmazást.

Hivatkozzon natív összetevőkre

A Visual Studio támogatja a natív Visual Basic 6.0-s vagy C++-szerelvényekre mutató hivatkozásokat; ezeket a hivatkozásokat natív hivatkozásoknak nevezzük. Annak ellenőrzéséhez, hogy egy hivatkozás natív-e, ellenőrizze, hogy a fájltípustulajdonsága natív vagy ActiveX értékű-e.

Natív hivatkozás hozzáadásához használja a Hivatkozás hozzáadása parancsot, majd keresse meg a jegyzékfájlt. Egyes összetevők a jegyzékfájlt a DLL-ben helyezik el. Ebben az esetben egyszerűen kiválaszthatja magát a DLL-t, és a Visual Studio natív hivatkozásként adja hozzá, ha azt észleli, hogy az összetevő beágyazott jegyzékfájlt tartalmaz. A Visual Studio automatikusan belefoglalja a jegyzékben szereplő függő fájlokat vagy szerelvényeket is, ha ugyanabban a mappában vannak, mint a hivatkozott összetevő.

A COM-vezérlés elkülönítése megkönnyíti az olyan COM-összetevők üzembe helyezését, amelyek még nem rendelkeznek jegyzékekkel. Ha azonban egy összetevőhöz jegyzékfájl tartozik, közvetlenül hivatkozhat a jegyzékre. Valójában mindig az összetevő szerzője által megadott jegyzékfájlt kell használnia, ahol csak lehetséges, az Izolált tulajdonság használata helyett.

A regisztráció nélküli COM-összetevők üzembe helyezésének korlátozásai

A regisztráció nélküli COM egyértelmű előnyöket biztosít a hagyományos üzembe helyezési technikákkal szemben.

Nem minden összetevő alkalmas a regisztráció nélküli COM-ra. Az összetevők nem megfelelőek, ha az alábbiak bármelyike igaz:

  • Az összetevő egy folyamaton kívüli kiszolgáló. Az EXE-kiszolgálók nem támogatottak; csak a DLL-ek támogatottak.

  • Az összetevő az operációs rendszer része, vagy rendszerösszetevő, például XML, böngészőösszetevő vagy Microsoft Data Access-összetevők (MDAC). Kövesse az összetevő szerzőjének újraterjesztési szabályzatát; kérdezze meg a szállítót.

  • Az összetevő egy alkalmazás, például a Microsoft Office része. Például ne próbálja meg elkülöníteni a Microsoft Excel-objektummodellt. Ez az Office része, és csak olyan számítógépen használható, amelyen telepítve van a teljes Office-termék.

  • Az összetevő bővítményként vagy beépülő modulként használható, például Office-bővítményként vagy webböngészőben lévő vezérlőelemként. Az ilyen összetevők általában valamilyen regisztrációs sémát igényelnek, amelyet az üzemeltetési környezet határoz meg, amely túlmutat a jegyzék hatókörén.

  • Az összetevő egy fizikai vagy virtuális eszközt kezel a rendszer számára, például egy nyomtatósor-kezelő eszközillesztőjét.

  • Az összetevő egy újraterjeszthető Adathozzáférés. Az adatalkalmazások futtatásához általában külön, újraterjeszthető adathozzáférés szükséges. Ne próbálja meg elkülöníteni az olyan összetevőket, mint a Microsoft ADO Data Control, a Microsoft OLE DB vagy a Microsoft Data Access Components (MDAC). Ehelyett, ha az alkalmazás MDAC-t vagy SQL Server Expresst használ, előfeltételként kell beállítania őket; lásd : Előfeltételek telepítése ClickOnce-alkalmazással.

    Bizonyos esetekben előfordulhat, hogy az összetevő fejlesztője újratervezi a regisztráció nélküli COM-hoz. Ha ez nem lehetséges, a Bootstrapper használatával továbbra is létrehozhat és közzétehet azoktól függő alkalmazásokat a standard regisztrációs sémán keresztül. További információ: Bootstrapper-csomagok létrehozása.

    A COM-összetevők alkalmazásonként csak egyszer különíthetők el. Nem különítheti el például ugyanazt a COM-összetevőt két különböző osztálytár-projekttől , amelyek ugyanahhoz az alkalmazáshoz tartoznak. Ha így tesz, az buildre vonatkozó figyelmeztetést fog eredményezni, és az alkalmazás futásidőben nem fog betöltődni. A probléma elkerülése érdekében a Microsoft azt javasolja, hogy a COM-összetevőket egyetlen osztálytárba foglalja.

    Több olyan eset is van, amikor com-regisztrációra van szükség a fejlesztő gépén, annak ellenére, hogy az alkalmazás üzembe helyezése nem igényel regisztrációt. A Isolated tulajdonsághoz regisztrálni kell a COM-összetevőt a fejlesztő gépén, hogy a jegyzék automatikusan létrejöjjön a build során. Nincsenek olyan regisztráció-rögzítési képességek, amelyek meghívják az önregisztrációt a buildelés során. A típustárban nem explicit módon definiált osztályok sem jelennek meg a jegyzékben. Ha com-összetevőt használ egy már meglévő jegyzékfájllal, például natív referenciával, előfordulhat, hogy az összetevőt nem kell regisztrálni a fejlesztéskor. Regisztrációra azonban akkor van szükség, ha az összetevő Egy ActiveX-vezérlő, és fel szeretné venni az eszközkészletbe és a Windows Forms tervezőbe.