Skip Navigation LinksHome > Artikelen > Registration-free COM activation
Skip Navigation Links.
Registration-free COM activation
Datum : 22-05-2008
Installatie : RFCAExampleInstall.zip
Document : Article0002.pdf

Bij de ontwikkeling van een .NET applicatie wordt nog regelmatig gebruik gemaakt van COM componenten. Voordat applicaties gebruik kunnen maken van een COM component, dient dit component eerst geregistreerd te worden in het register van het Windows besturingssysteem. Er zijn situaties waarbij een COM component niet geregistreerd kan worden, bijvoorbeeld omdat de gebruiker de rechten niet heeft om het register aan te passen. In deze situaties kan er gebruik worden gemaakt van een handig alternatief, namelijk “Registration-free COM activation”. In dit artikel wordt aan de hand van een voorbeeld beschreven hoe een applicatie gebruik maakt van een COM component zonder deze te registreren.

Registration-free COM activation

Het bouwen van een COM Dll dat niet hoeft te worden geregistreerd in het register wordt mogelijk door het gebruik van manifest bestanden die de COM activering mogelijk maken. Het bouwen van zo’n COM component bestaat uit een aantal stappen; wat wordt uitgelegd a.d.h.v. een voorbeeld:

Bouwen COM component

Maak een “Class Library” project aan genaamd Calculator in Visual Studio.NET 2005.
Bouw de interface ICalculator en de klasse Calculator die deze interface implementeert.
  - De interface en klasse moeten in de namespace MachielseSoftware geplaatst worden.
  - De calculator dient aan de vereisten van een COM component te voldoen:
    - standaard constructor zonder parameters
    - alle methoden en eigenschappen die zichtbaar moeten zijn voor de buitenwereld dienen de pubic access modifier te hebben
    - een eigenschap is alleen zichtbaar indien de get én set methode is geïmplementeerd
  - Voorzie de interface en klasse van de juiste attributen.
   
Afbeelding 1 : Calculator.cs
Ga naar het tabblad “Build” van de eigenschappen van het project en zet de instelling “Register for COM interop” aan.
Bouw een release versie van het Calculator project; de gebouwde Calculator.dll zal automatisch worden geregistreerd in het register.
 
Afbeelding 2 : Registratie van Calculator.dll in het register

Bouwen client applicatie

Maak een “Standard EXE” project aan in Visual Basic 6.0.
Voeg een referentie naar de Calculator aan het project toe (de referentie is alléén aanwezig indien de Calculator.dll is geregistreerd, zoals is gebeurd in de stappen hiervoor).
Bouw het formulier.
 
Afbeelding 3 : Formulier
Maak een executable genaamd client.exe.

Bouwen registration-free COM activation

Maak het XML bestand client.exe.manifest (het gedeelte voor .manifest is de naam van de zojuist gebouwde client applicatie in VB6). In dit bestand wordt er gerefereerd aan de Calculator.dll nodig voor het vinden en creëren van het COM component.
 
Afbeelding 4 : client.exe.manifest
Maak het XML bestand calculator.manifest (het gedeelte voor .manifest is de naam van de COM Dll).
 
Afbeelding 5 : calculator.manifest
Maak het resource script bestand calculator.rc met daarin een verwijzing naar het bestand calculator.manifest.
 
Afbeelding 6 : calculator.rc
Maak het script bestand calculator.cmd waarin de volgende taken worden uitgevoerd:
- de registratie van het COM component in het register wordt ongedaan gemaakt
- aanmaken resource bestand
- compileren van de COM Dll Calculator.dll met daarin het manifest
 
Afbeelding 7 : calculator.cmd
Voer het script calculator.cmd uit.

Context

De voorbeeld applicatie bestaat uit twee componenten:
Client
  Deze executable is geschreven in VB6 en opent een formulier waarmee berekeningen uitgevoerd kunnen worden.
Calculator
  Deze COM Dll is geschreven in .NET 2.0 en bevat de reken functionaliteit.
 
Afbeelding 8 : Context diagram

Klasse diagram

De client applicatie is geschreven in VB6 waarvoor gebruik gemaakt is van Visual Basis 6.0 (SP6); het COM component is geschreven in .NET 2.0 waarvoor gebruik gemaakt is van Visual Studio.NET 2005.

De solution van het Calculator project in Visual Studio.NET 2005:
Client : bevat de project bestanden voor het VB6 project
RFCA : bevat alle “Registration-free COM activation” gerelateeerde bestanden
RFCA/Output : bevat de installatie bestanden
 
Afbeelding 9 : Solution in Visual Studio.NET 2005


Klasse diagram

De Calculator klasse implementeert de interface ICalculator en bevat vier methodes voor het uitvoeren van berekeningen en één eigenschap waarmee de assemly versie kan worden opgevraagd.
Afbeelding 10 : Klasse diagram

Installatie & Testen

De applicatie is middels het XCOPY principe gemakkelijk te kopieren. Kopieer daarvoor de bestanden client.exe, client.exe.manifest en calculator.dll naar dezelfde map.

Systeemeisen

Een COM component (geschreven in .NET) dat niet geregistreerd hoeft te worden, kan alléén onder de besturingssystemen Windows XP (Service Pack 2 of hoger) of Windows Server 2003 (of hoger ) met daarop geïnstalleerd het Microsoft .NET Framewok 1.1 (of hoger) gebruikt worden.

Gebruik van Windows Scripting Host

Het is ook mogelijk om de werking van het een niet geregistreerd COM component te testen m.b.v. een VBS script. Een VBS script wordt uitgevoerd door de Windows Scripting Host (c:\windows\system32\wscript.exe). De hierboven besproken client applicatie (client.exe) kan alleen het COM component gebruiken indien deze een bijbehorend manifest bestand heeft. Dit geldt ook voor de Windows Scripting Host applicatie.

Volg de volgende stappen om een VBS script het COM component te gebruiken:
Kopieer het bestand client.exe.manifest en calculator.dll naar de map c:\windows\system32.
Hernoem het bestand client.exe.manifest naar wscrip.exe.manifest.
 
Afbeelding 11 : wscript.exe.manifest
Verander in het bestand de naam client in wscrip.

Een VBS script dat uigevoerd wordt, zal nu overweg moeten kunnen met het COM component.

Afbeelding 12 : calculator.vbs

Afbeelding 13 : Resultaat uitvoeren calculator.vbs

Referenties

info@machielsesoftware.nl