Assembly manifest

Guten Tag,

in einem unserer Alt-Projekte arbeiten wir mit einer 4GL-Sprache. Dies soll auf das List&label cmll28v.ocx aktualisiert werden.
Wir benötigen für das cmll28.ocx eine Assembly-Manifest-Datei, damit wir keine Registrierung des Controls an den Arbeitsplätzen vornehmen müssen.
Kann uns jemand helfen die List & Label Dateien korrekt in der Manifest Datei zu referenzieren oder wurde das schon irgendwo mal gemacht und angeboten?

Für eine andere Library sehen die relevanten Teile ungefähr so aus:

	<file name="excalcedit.dll" hashalg="SHA1">
		<comClass clsid="{0D4EE794-3E13-4226-81F9-499EE6EDCCF7}" tlbid="{29156392-0A26-450B-919E-AA9843E810DC}" progid="Exontrol.CalcEdit.1" description="CalcEdit Class" miscStatusContent="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst"></comClass>
		<comClass clsid="{2D67650A-CAEF-4044-9584-76CECE7C0B17}" tlbid="{29156392-0A26-450B-919E-AA9843E810DC}"  description="TemplatePage Class" ></comClass>
		<typelib tlbid="{29156392-0A26-450B-919E-AA9843E810DC}" version="1.0" helpdir="" flags="HASDISKIMAGE"></typelib>
	</file>

	<comInterfaceExternalProxyStub name="ICalcEdit" iid="{B1AF749C-1ED4-4332-87AE-37783683F4F4}" tlbid="{29156392-0A26-450B-919E-AA9843E810DC}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>

Schöne Grüße

Sascha Lorenz

Wir stehen mit der Einführung von LL29 vor dem gleichen Problem und können aus unserer Anwendung heraus keine Registrierung der cmll29v.ocx vornehmen da wir bis zu 150 Terminalserver in einer Farm haben auf der unserer Software läuft. Wir wären hier sehr dankbar für Lösungsansätze wie wir die Manifest Datei aufbauen müssten, damit diese den Viewer ohne Registrierung nutzen kann.

Wir haben das bisher nicht ausprobiert, da die OCX-Controls eher selten verwendet werden. Für .NET und Delphi haben wir eigene Viewer-Controls, die diese Technologie nicht mehr benötigen.

Hier beschreibt Microsoft an sich, wie es klappen sollte:

Das entscheidende scheinen mir dabei Schritt 6 und 7 zu sein. Die relevanten Teile aus unserem eigenen *.idl-File (vgl. den angelinkten Artikel) sehen dabei so aus:

	[
		object,
		uuid(DD64C38D-A564-11D7-9890-0050BAC8B62D),
		dual,
		helpstring("ILlViewCtrl Interface"),
		pointer_default(unique)
	]
...
[
	uuid(28EBE202-E7C7-11D0-B183-0040E994B594),
	version(1.0),
	helpstring("combit List & Label 29 Viewer Control")
]
...
library CMLL29VLib
{
	[
		uuid(28EBE213-E7C7-11D0-B183-0040E994B594),
		helpstring("combit List & Label 29 Viewer Control")
	]
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	coclass LlViewCtrl
	{
		[default] interface ILlViewCtrl;
		[default, source] dispinterface _LlViewCtrlEvents;
	};
...
}

Mit diesen Informationen und dem Artikel sollte es möglich sein, eine Manifestdatei wie benötigt zu erstellen. Wir haben das aber nicht getestet und können keinen Erfolg versprechen - wenn etwas fehlen sollte kannst du dich aber gerne hier noch einmal melden. Sollte es klappen wäre es schön, wenn du für andere, die das so machen wollen, den Manifestausschnitt kopieren könntest.

Wir haben es mit einer manifest Datei versucht, leider bisher ohne Erfolg auf allen Rechnern. Wir haben auf zwei Testsystemen eine funktionale Verbindung hinbekommen, auf zwei weiteren jedoch nicht. Auf den beiden nicht funktionierenden Systemen konnte das ocx nicht geladen werden.

<file name="cmll29v.ocx" hashalg="SHA1">
	<comClass clsid="{28EBE213-E7C7-11D0-B183-0040E994B594}" tlbid="{28EBE202-E7C7-11D0-B183-0040E994B594}" progid="Cmll29v.LlViewCtrl.1" description="LIstLabel Viewer"></comClass>
</file>	

Wir werden nun im nächsten Schritt versuchen eine entsprechende Registrierung in HKEY_CURRENT_USER bei Login in unsere Software vorzunehmen mit folgendem Schlüssel:

PowerBuilder Code:

RegistrySet ( 'HKEY_CURRENT_USER\SOFTWARE\Classes\TypeLib\{28EBE202-E7C7-11D0-B183-0040E994B594}\1.0\0\win32', '', RegString!, g_directory+'\cmll29v.ocx' )

wobei g_directory dem Programmverzeichnis entspricht.

Diese Vorgehensweise hat ebenfalls in einem Testsystem funktioniert und würde keine Admin-Berechtigungen voraussetzen.

Danke für den Hinweis soweit schon einmal. Melden sie sich gerne, wenn wir noch etwas beitragen können - das ist ein recht selten begangener Pfad, auch auf Systemebene scheint mir.