|
<< Click to Display Table of Contents >> RayPack > 8.0 > User Guide > PackDesigner > MSI / MST / RPP-basierte Projekte > Erweiterter Modus > Komponenten > Eine Komponente bearbeiten Tab: COM |
Eine COM-Klasse ist eine Implementierung einer Gruppe von Schnittstellen in Code, der ausgeführt wird, wenn mit einem bestimmten Objekt interagiert wird.
Auf jedem Computer pflegt COM eine Datenbank aller CLSIDs für die auf dem System installierten Server. Dies ist eine Zuordnung zwischen jeder CLSID und dem Speicherort der DLL oder EXE, die den Code für diese CLSID enthält. COM konsultiert diese Datenbank, wenn ein Client eine Instanz einer COM-Klasse erstellen und deren Dienste nutzen möchte.
Die Registerkarte COM enthält eine Liste der COM-Klassen, die innerhalb der aktuellen Komponente organisiert werden sollen, und bietet alle erforderlichen Steuerelemente zum Hinzufügen, Bearbeiten und Entfernen solcher Objekte. Intern werden die Eigenschaften von COM-Klassenobjekten in der Tabelle Class der Installer-Datenbank gespeichert. Die Anzahl der COM-Klassen, die derzeit in der Komponente organisiert sind, wird rechts neben der Bezeichnung der Registerkarte COM angezeigt.
Mit einem Rechtsklick auf ein COM-Klassenobjekt wird das Kontextmenü angezeigt, das eine umfangreiche Auswahl an Bearbeitungsoptionen sowie die Option Go to Row enthält. Ein Klick auf diese Option lädt die Ansicht TABLES mit der angezeigten Tabelle Class, wobei die Zeile der ursprünglich ausgewählten Datei zur schnellen Orientierung hervorgehoben wird.
Innerhalb der Registerkarte COM der Ansicht COMPONENTS im Advanced-Modus klicken Benutzer auf die Schaltfläche NEW CLASS, um ein COM-Klassenobjekt zu erstellen, das standardmäßig mit einer eindeutigen CLSID und einigen anderen wichtigen Eigenschaften ausgestattet ist.
Sobald das Klassenobjekt erstellt wurde, müssen die Standardwerte an die tatsächlich erforderlichen Einstellungen angepasst werden. Weitere Details finden Sie im Abschnitt COM-Klasse bearbeiten.
Das Löschen einer COM-Klasse kann auf folgende Weise ausgelöst werden:
•Rechtsklick auf ein COM-Klassenobjekt und Auswahl von Remove aus dem Kontextmenü.
•Linksklick auf ein COM-Klassenobjekt und Drücken der Taste Delete auf der Tastatur.
In beiden Fällen wird ein Bestätigungsdialog angezeigt, in dem der Benutzer aufgefordert wird, das unwiderrufliche Löschen des Schlüssels zu bestätigen:
•Mit einem Klick auf die Schaltfläche REMOVE wird das Objekt tatsächlich gelöscht.
•Mit einem Klick auf die Schaltfläche DO NOT REMOVE oder CANCEL wird der Löschvorgang abgebrochen.
|
Hinweis: Es ist möglich, den Bestätigungsdialog zu unterdrücken, indem das Kontrollkästchen „In future do not show this confirmation for delete operations" aktiviert wird. Das versehentliche Löschen von Objekten kann jedoch schwerwiegende Folgen für das Packaging-Projekt haben. Daher wird empfohlen, die Bestätigung als aktiven Bestandteil des regulären Löschvorgangs beizubehalten. |
Benutzer müssen die COM-Klassen-Eigenschaftsdetails aufrufen, um Zugang zu allen relevanten Objekteigenschaften zur Bearbeitung zu erhalten. Dazu können Benutzer:
•Rechtsklick auf ein in der Liste angezeigtes COM-Klassenobjekt und Auswahl von Edit aus dem Kontextmenü.
oder
•Linksklick auf ein in der Liste angezeigtes COM-Klassenobjekt und Drücken von Alt + Enter auf der Tastatur.
Der Dialog CLASS PROPERTIES wird angezeigt und zeigt eine Registerkartenoberfläche mit drei Gruppen von Eigenschaften zur Bearbeitung:
•Grundlegende COM-Klasseneinstellungen
Jede COM-Klasse wird durch eine CLSID identifiziert – ein eindeutiger 128-Bit-GUID, den der Server registrieren muss. COM verwendet diese CLSID auf Anfrage eines Clients, um bestimmte Daten mit der DLL oder EXE zu verknüpfen, die den die Klasse implementierenden Code enthält, und erstellt so eine Instanz des Objekts.
Eine textuelle Beschreibung der Klasse.
Die File Type Mask muss dem Standardformat [offset, cb, mask, value] entsprechen:
•offset – Bei einem positiven Ganzzahlwert gibt dieser die Anzahl der Offset-Bytes bis zum Beginn des Bytebereichs an. Eine negative Ganzzahl bezeichnet denselben Offset, vom Dateiende aus gezählt.
•cb – Ab der durch den Offset definierten Position gibt diese Ganzzahl die Anzahl der Bytes an, die die logische UND-Operation auf der Maske definieren.
•mask – Sobald Startposition und Länge der Maske definiert sind, wird hier die eigentliche Maskendefinition angegeben, die bestimmt, welche Teile der Datei für die Ausführung der logischen UND-Operation berücksichtigt werden müssen.
•value – Der Wert muss dem Ergebnis der UND-Operation entsprechen, damit die Beziehung zwischen einer Datei und einer bestimmten Klasse auf dem Zielgerät erkannt werden kann.
Wenn ein passendes Symbol bereits im Symbolvorrat des aktuellen Packaging-Projekts vorhanden ist, kann es einfach aus dem Katalog ausgewählt werden. Dazu müssen Benutzer auf den Abwärtspfeil klicken und das gewünschte Symbol aus dem angezeigten Dialog auswählen.
Wenn ein neues Symbololbjekt erstellt werden muss, müssen Benutzer auf „Von Datenträger laden" klicken und eine .ico-, .exe- oder .dll-Datei als neues Symbol auswählen.
Die AppID muss ein GUID sein, der bereits zum Packaging-Projekt hinzugefügt wurde. Er wird unter HKEY_CLASSES_ROOT\AppID registriert und dient zur Gruppierung von Sicherheits- und Konfigurationsoptionen von COM-Objekten.
Verwenden Sie relative Pfade, um flexible COM-Objekte mit ihrem reinen Dateinamen für die COM-Server-Definition zu definieren. Intern wird diese Option in der Spalte „Attributes" der Tabelle „Class" widergespiegelt.
Jede COM-Klasse kann mit einer Standard-ProgId ausgestattet werden, die den versionsunabhängigen Bezeichner eines Programms definiert. Intern werden ProgId-Objekte in der Tabelle ProgId der Installer-Datenbank gespeichert. RayPack ermöglicht es Benutzern, mehrere ProgId-Objekte in diesem Dialog zu verwalten, definiert jedoch nur eine Beziehung zum aktuellen COM-Objekt für die als Standard markierte ID.
Um eine neue ProgId hinzuzufügen, klicken Benutzer auf die Schaltfläche Create new ProgId, die im oberen Bereich der Registerkarte PROGID sichtbar ist. Ein neues ProgId-Objekt wird automatisch erstellt und der Datenbanktabelle ProgId hinzugefügt. Benutzer müssen die Standardeinstellungen bearbeiten, um die tatsächlich beabsichtigten ProgId-Informationen zu definieren.
Name
Die Zeichenfolge, die den Namen der ProgId definiert.
Übergeordnete ProgId
Wählen Sie eine der anderen bereits in der Tabelle ProgId gespeicherten ProgIds als übergeordnete ProgId für die aktuelle aus. Wenn die ProgId für die Installation ausgewählt wird, werden auch die entsprechenden versionsunabhängigen ProgIds, die durch diese übergeordnete Beziehung verknüpft sind, zur Registrierung ausgewählt.
Beschreibung
Eine textuelle Beschreibung der ProgId.
Symbol
Wenn ein passendes Symbol bereits im Symbolvorrat des aktuellen Packaging-Projekts vorhanden ist, kann es einfach aus dem Katalog ausgewählt werden. Dazu müssen Benutzer auf den Abwärtspfeil klicken und das gewünschte Symbol aus dem angezeigten Dialog auswählen.
Wenn ein neues Symbololbjekt erstellt werden muss, müssen Benutzer auf „Von Datenträger laden" klicken und eine .ico-, .exe- oder .dll-Datei als neues Symbol auswählen.
Das Löschen einer ProgId kann auf folgende Weise ausgelöst werden:
•Rechtsklick auf eine ProgId und Auswahl von Remove aus dem Kontextmenü.
•Linksklick auf eine ProgId und Drücken der Taste Delete auf der Tastatur.
In beiden Fällen wird ein Bestätigungsdialog angezeigt, in dem der Benutzer aufgefordert wird, das unwiderrufliche Löschen des Objekts zu bestätigen:
•Mit einem Klick auf die Schaltfläche REMOVE wird die ProgId tatsächlich gelöscht.
•Mit einem Klick auf die Schaltfläche DO NOT REMOVE oder CANCEL wird der Löschvorgang abgebrochen.
|
Hinweis: Es ist möglich, den Bestätigungsdialog zu unterdrücken, indem das Kontrollkästchen „In future do not show this confirmation for delete operations" aktiviert wird. Das versehentliche Löschen von Objekten kann jedoch schwerwiegende Folgen für das Packaging-Projekt haben. Daher wird empfohlen, die Bestätigung als aktiven Bestandteil des regulären Löschvorgangs beizubehalten. |
|
Achtung: Das Entfernen einer ProgId aus einer Komponente entfernt sie aus dem gesamten Packaging-Projekt! |
Bitte beachten Sie die folgenden Einschränkungen und Bedingungen für die Kontextverwaltung von Komponenten.
•Jede Klasse hat mindestens 1 Kontext.
•Jede Klasse hat maximal 1 Instanz jedes Typs:
oInprocServer32
oInprocServer
oLocalServer
oLocalServer32
•Benutzerdefinierte InprocServer-Namen dürfen nicht mit einem der vier oben genannten Namen übereinstimmen.
•Inproc und InprocServer32 dürfen keinen bearbeitbaren Standard-Handler oder Argumente haben.
Benutzer können jederzeit einen neuen benutzerdefinierten Kontext hinzufügen, während das Hinzufügen eines anderen Typs aufgrund bereits vorhandener Kontexte desselben Typs möglicherweise nicht verfügbar ist. Um einen neuen Kontext hinzuzufügen, klicken Benutzer auf die Schaltfläche NEW CONTEXT oberhalb der Liste der bereits erstellten Kontextobjekte. Das Optionsmenü enthält alle Kontexttypen, bietet jedoch nur diejenigen zur aktiven Auswahl an, die noch nicht zum COM-Objekt hinzugefügt wurden.
Bitte beachten Sie, dass neue Kontexte stets mit Standardeinstellungen hinzugefügt werden, die in der Regel nur teilweise bearbeitet werden können.
Name
Der Kontextname kann nur für benutzerdefinierte Kontexttypen bearbeitet werden. Intern wird der Name als Zeichenfolgenwert gespeichert.
Default Handler
Diese Eigenschaft kann für lokale und benutzerdefinierte Kontexttypen bearbeitet werden. Sofern bearbeitbar, können Benutzer eine der folgenden vier Optionen auswählen:
•None – entspricht einem DefInprocHandler-Wert von NULL
•16 bit – entspricht einem DefInprocHandler-Wert von 1
•32 bit – entspricht einem DefInprocHandler-Wert von 2
•16/32 bit – entspricht einem DefInprocHandler-Wert von 3
Argumente
Wenn ein LocalServer- oder LocalServer32-CLSID-Schlüssel im Feld „Context" erscheint, wird der Text in diesem Feld als Argument für den Server registriert und von COM verwendet, um den Server aufzurufen. Die Felder DefInprocHandler und Argument können beide leer (Null) sein, wenn LocalServer- oder LocalServer32-Typen ausgewählt sind.
Das Löschen eines Kontexts kann auf folgende Weise ausgelöst werden:
•Rechtsklick auf einen Kontext und Auswahl von Remove aus dem Kontextmenü.
•Linksklick auf einen Kontext und Drücken der Taste Delete auf der Tastatur.
In beiden Fällen wird ein Bestätigungsdialog angezeigt, in dem der Benutzer aufgefordert wird, das unwiderrufliche Löschen des Objekts zu bestätigen:
•Mit einem Klick auf die Schaltfläche REMOVE wird der Kontext tatsächlich gelöscht.
•Mit einem Klick auf die Schaltfläche DO NOT REMOVE oder CANCEL wird der Löschvorgang abgebrochen.
Da jedes COM-Klassenobjekt mindestens einen Kontext erfordert, ist es nicht erlaubt, alle Kontextobjekte über die dialogbasierte Benutzeroberfläche zu löschen. Um die Kontextwerte manuell zu ändern, müssen Benutzer die Tabelle Class im Editor TABLES aufrufen.
|
Hinweis: Es ist möglich, den Bestätigungsdialog zu unterdrücken, indem das Kontrollkästchen „In future do not show this confirmation for delete operations" aktiviert wird. Das versehentliche Löschen von Objekten kann jedoch schwerwiegende Folgen für das Packaging-Projekt haben. Daher wird empfohlen, die Bestätigung als aktiven Bestandteil des regulären Löschvorgangs beizubehalten. |
|
Achtung: Das Entfernen eines Kontexts aus einem COM-Objekt und einer Komponente entfernt ihn aus dem gesamten Packaging-Projekt! |