Virtual OS/2 International Consumer Education
VOICE Homepage: http://de.os2voice.org
Dezember 2001

[Inhaltsverzeichnis]
[Vorherige Seite] [Nächste Seite]
[Artikelverzeichnis]

editor@os2voice.org


Händische Installation von Win32-Applikationen unter Odin - Teil 4

Von Herwig Bauernfeind © Dezember 2001

4. Registry-Probleme - wie findet man raus was rein gehört?

Vorab, wie üblich ein wesentlicher Hinweis: Ich möchte gar nicht vorgeben, daß ich mit Windows und den Untiefen der Registry besonders gut auskenne. Das meiste habe ich in diesem Zusammenhang aus der Auseinandersetzung mit widerspenstigen Programmen unter Odin gelernt und daraus, daß ich die Registry Einträge zwischen Windows und Odin verglichen habe und daraus Schlüsse gezogen habe.

Zu allererst, was ist die Registry überhaupt?

Am ehesten entspricht die Registry von Windows den OS/2 Dateien x:\OS2\OS2.INI und x:\OS2\OS2SYS.INI, sie hat im Laufe der Zeit (und Windows Versionen) aber auch immer mehr die Rolle der x:\CONFIG.SYS unter Windows übernommen.

Im Prinzip ist die Registry eine Datenbank, die dazu dient Informationen über die Hardware, das Betriebsystem und die Applikationen zu speichern.

Grundsätzlich sind die Möglichkeiten, die die Registry unter Windows bietet wesentlich größer als die der OS/2 .INI-Dateien. Das war auch der Grund, warum IBM beschloss, als sie die Open32 (oder DAX) Programmierschnittstelle für OS/2 einführte, auch OS/2 eine Registry zu spendieren (allerdings ausschließlich für Open32, OS/2 speichert seine Einstellungen nach wie vor in OS2.INI und OS2SYS.INI). Open32 (oder DAX) ist nun die Basis für Odin, denn eigentlich ist Odin in vielerlei Hinsicht das, was Open32 gerne (geworden) wäre.

Die OS/2 Registry wird daher ausschließlich von OS/2-Programmen benutzt, die auf Open32 basieren. Außer Odin sind die einzigen wesentlichen, die mir einfallen die Lotus SmartSuite, der alte Acrobat Reader 3 für OS/2, die Opera 5.1x-beta und Mozilla in all seinen Varianten.

Windows Programme, die nun unter Odin auf OS/2 laufen, glauben ja sie liefen unter Windows (NT 4.0 oder Windows 98) und folglich benutzen sie alle (potentiell) die Registry von OS/2.

Die Dateien der Registry heißen unter OS/2 ebenfalls SYSTEM.DAT und USER.DAT im Verzeichnis x:\OS2\SYSTEM und BOOT.DAT und REGISTRY.DAT im Quellverzeichnis des Bootlaufwerks.

Welche Einträge müssen in die Registry und wie kommen sie hinein?

Wie ich bereits im vorigen Teil dieser Serie gesagt habe, halte ich eine manuelle Installation ohne das man ein echtes Windows zur Hand hat, zwar für prinzipiell möglich, praktisch aber für undurchführbar, insbesondere bei größeren Programmpaketen.

Ich möchte nun im folgenden beschreiben, wie ich vorgehe, um dieses Problem zu bewältigen. Dabei versuche ich weitgehend mit Bordmitteln auszukommen bzw. mit den in Teil 1 beschriebenen Utilities.

Als erstes boote ich Windows, rufe regedit.exe auf und exportiere die komplette Registry in eine Textdatei, wobei darauf zu achten ist, daß das Windows 2000 und XP zum Export standardmäßig Unicode (d.h 16-bit Zeichen) verwenden, mit denen weder Win95/98/ME/NT4 oder Odin etwas anfangen können. Man kann aber den Regedit von Windows 2000 und XP dazu bringen normale (8-bit) Textdateien zu erzeugen. Mangels praktischer Erfahrung in diesem Zusammenhang kann ich jedoch nicht sagen wie man das macht.

Dann installiere ich das gewünschte Programm unter Windows. Bevor ich es das erste Mal starte (jedoch nach einem allfälligen Reboot!), starte ich nochmals regedit.exe und exportiere nochmals die gesamte Registry in eine weitere Textdatei (mit einem anderen Namen).

Die beiden erzeugten Textdateien unterscheiden sich genau durch die Änderungen, die der Installationsprozess an der Registry von Windows vorgenommen hat.

Aus den Unterschieden dieser beiden Textdateien baue ich dann eine gültige .REG-Datei. Das kann zur Zeit noch recht langwierig sein, denn als Hilfsmittel verwende ich PMDiff, welches in zwei Fenstern die beiden Dateien anzeigt, die Textmodeversion von HyperView (gut geeignet um Zeilen in die Zwischenablage zu befördern) und einen Editor (z.B. E.EXE oder EPM.EXE).

Das Format ist auch für einen Laien nicht so schwierig zu verstehen (zumindest an der Oberfläche), zumindest ist es nicht besonders schwierig gültige .REG Dateien zu erzeugen (es erinnert ein bißchen an LEGO bauen, wie die Dinge zusammengehören sieht man recht schnell, aus was sie bestehen weiß man in aller Regel nicht so genau). Ein Beispiel (ein Teil der ODBC Registry Information, meine momentane Spielwiese):

---------------------------<snip>--------------------------
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI]
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MS Code Page Translator]
"Translator"="E:\\ODIN\\SYSTEM32\\MSCPXL32.dll"
"Setup"="E:\\ODIN\\SYSTEM32\\MSCPXL32.DLL"
"UsageCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Translators]
"MS Code Page Translator"="Installed"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Server]
"UsageCount"=dword:00000001
"Driver"="E:\\ODIN\\SYSTEM32\\SQLSRV32.dll"
"Setup"="E:\\ODIN\\SYSTEM32\\sqlsrv32.dll"
"SQLLevel"="1"
"FileUsage"="0"
"DriverODBCVer"="03.50"
"ConnectFunctions"="YYY"
"APILevel"="2"
"CPTimeout"="60"
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"SQL Server"="Installed"
"Microsoft Access Driver (*.mdb)"="Installed"
"Microsoft Text Driver (*.txt; *.csv)"="Installed"
"Microsoft Excel Driver (*.xls)"="Installed"
"Microsoft dBase Driver (*.dbf)"="Installed"
"Microsoft Paradox Driver (*.db )"="Installed"
"Microsoft Visual FoxPro Driver"="Installed"
"Microsoft ODBC for Oracle"="Installed"
"Microsoft SQL Server"="Installed"
---------------------------<snip>--------------------------

Wie man sieht, beginnt jede .REG Datei mit dem Wort REGEDIT4, dann kommen in eckigen Klammern die Strukturschlüsselnamen und darunter jeweils die einzelnen Werte in der Form "Name"=type:Wert oder "Name"="Wert". Es kommen auch Einträge wie der folgende vor, bei denen nur ein @ links vom =-Zeichen steht:

---------------------------<snip>--------------------------
REGEDIT4
[HKEY_CLASSES_ROOT]
[HKEY_CLASSES_ROOT\CLSID]
@=""
---------------------------<snip>--------------------------

Jetzt muß man die hinzugekommenen oder geänderten Schnipsel der Registry zu einer neuen, gültigen .REG-Datei zusammensetzen, was insbesondere im Falle umfangreicherer Änderungen eine ziemliche Arbeit werden kann.

Hat man als Schnipsel beisammen, sollte man noch Pfade und Verzeichnisnamen anpassen (was im ersten Beispiel bereits passiert ist), denn wie man sieht stehen in der Registry auch Verweise auch Dateien und Programme, und damit das Programm überhaupt funktionieren kann, müssen diese Verweise so geändert werden, daß das Programm dann auch unter Odin alle "seine" Dateien finden kann.

Auf diesem Weg liefert die so gewonnene Registry-Information auch wertvolle Hinweise darauf, welche Dateien das Programm in das C:\Windows und C:\Windows\System Verzeichnis schreibt bzw. dort erwartet.

Tip: Es ist keine gute Idee, wenn die originale Windows Partition auch unter OS/2 zur Verfügung steht (z.B. bei Verwendung von Henk Kelders FAT32.IFS), die Verweise gleich auf die Originale zu zeigen  zu lassen (und etwas Plattenplatz zu sparen), den manche Programme legen im gleichen Verzeichnis noch andere Konfigurationsdateien ab und da kommen sich die originale Installation unter Windows und die unter Odin garantiert in die Quere.

Also bitte immer die entsprechenden Dateien nach x:\Odin oder x:\Odin\System32 kopieren und die Verweise in der Registry anpassen!

Hat man nun seine .REG Datei beisammen und angepasst, muß man sie nur noch in die OS/2-Odin Registry importieren. Hier lauert bereits der nächste Stolperstein: Zum Importiertien keineswegs den Regedit2.EXE von OS/2 benutzen, sondern einen Win32-Regedit von Windows verwenden!

Das Dateiformat der .REG-Dateien die OS/2s Regedit2.EXE schreibt und liest ist zwar größtenteils gleich, aber eben nur größtenteils, und der kleine Unterschied macht das Ergebnis bei Importvorgängen völlig unbrauchbar! Im übrigen funktioniert der Win32-Regedit unter Odin völlig problemlos.

Der Importversuch ist gefahrlos, wenn die .REG-Datei nicht in Ordnung ist, weigert sich Regedit einfach, die Datei zu importieren. Dann heißt es halt Fehler suchen. Dazu kann es nützlich sein, die Datei in mehrere Brocken zu teilen und jeden separat zu importieren. Natürlich muß jeder Brocken auch wieder mit dem Schlüsselwort REGEDIT4 beginnen!

Noch ein Hinweis: Liest man in der soeben zusammengebauten .REG-Datei etwas von einem Threadingmodel und der Wert ist ein anderer als Appartment, dann kann man den Versuch gleich abbrechen, denn Odin beherrscht derzeit ausschließlich Appartment, das Progrmm wird sicher nicht funktionieren!

Es geht rein gar nichts mehr, die Registry ist defekt, was jetzt?

Für den Fall, daß man sich die Registry zerschießt, muß man genau diese 4 Dateien löschen (immer trotzdem vorher wegsichern), einen Warmstart (ohne Systemabschluß, nur CTRL-ALT-DEL) machen, beim nächsten booten erstellt OS/2 automatisch eine jungfräulich neue Registry. Keinesfalls darf man jetzt bevor man irgendetwas unter Odin anstellt, darauf vergessen, OdinInst.EXE aufzurufen, denn die automatisch erstellte Registry ist nur äußerst rudimentär und mager und OdinInst.EXE erzeugt und ergänzt jede Menge Einträge, die für gängige Windows Programme lebenswichtig sind.

Kopieren statt installieren, kann das gehen?

Wenn die "richtige" Installation nicht klappt (aus welchem in den ersten Teilen dieser Serie auch immer beschriebenen Gründen auch immer), ist es dann möglich, vielleicht einfach den Verzeichnisbaum der originalen Installation unter Windows nach OS/2-Odin zu kopieren?

Einen Versuch ist es alle Mal wert, man muß nur darauf achten, daß man wirklich alles erwischt (und da sind wir wieder bei der händischen Installation wie in den ersten Teilen beschrieben) und die Registry muß man jedenfalls trotzdem anpassen.

Was bleibt noch?

Im nächsten und letzten Teil dieser Serie möchte ich mich noch mit dem einen oder anderen "Abfallprodukt" meiner Beschäftigung mit der händischen Installation von Windows Programmen unter Odin beschäftigen und ein paar praktische Erfahrungen die bisher noch nirgends richtig dazugepaßt haben dazugeben.

Das bekannteste "Abfallprodukt" (jedoch nicht das einzige), welches mittlerweile sogar ein Bestandteil der wöchentlichen Odin-Builds geworden ist, nämlich OdinBug (der Odin Bug Reportgenerator) dürfte bereits ein Begriff sein.

Außerdem werde ich im letztenTeil nochmals alle Quellen und Verweise aktualisieren, da einige  Verweise aus dem ersten Teil bereits wieder ungültig sind. Bis dahin, sollte es jemanden nicht möglich sein, das eine oder andere Utility aufzutreiben, kann ich gerne aushelfen!


Zu guter letzt noch etwas in eigener Sache: Ich schreibe zwar Deutsch, kann aber auch ganz gut Englisch (mein Französisch und Spanisch sind mittlerweile leider etwas eingerostet). Ich freue mich über jedes Feedback egal ob Deutsch oder Englisch (eventuell auch auf Französisch oder Spanisch, das könnte aber eher eine lustige Unterhaltung werden...)

Quellenverzeichnis:

Das Netlabs Odin Projekt - http://odin.netlabs.org/
Wöchentliche Odin Builds - ftp://ftp.os2.org/odin/Weekly//
Tägliche Odin Builds - ftp://ftp.os2.org/odin/daily//
Odin Mailingliste für Anwender bei Yahoo! - http://groups.yahoo.com/group/odinusers


[Artikelverzeichnis]
editor@os2voice.org
[Vorherige Seite] [Inhaltsverzeichnis] [Nächste Seite]
VOICE Homepage: http://de.os2voice.org