Schlagwort-Archive: Installationsprogramm

Ich weiß nicht ob das typisch für mich ist, dass ich das neue Jahr mit einem Rant einleite, aber zeitlich ist es jedenfalls nicht beabsichtigt. Ich wasche meine Hände in Unschuld. Zunächst also ein frohes neues Jahr. Die tollen, freundlichen Beiträge kommen alle noch die Tage. Wieder einmal habe ich die Hoffnung, dass dieser Artikel all jenen hilft, die mit einem ähnlichen Problem konfrontiert werden. Das Programmiererleben ist sicherlich vieles, aber gewiss nicht einfach.

Vergangene Woche war ich in der Situation eine portable Version einer Solaris JVM (Java Virtual Machine) aktualisieren zu dürfen. Die bisherige Version des JDK6 war leider veraltet und brachte regelmäßig Segmentation Faults im Dauerbetrieb zustande. Ein neueres Update (1.6.0 Update 38) sollte hoffentlich stabiler laufen. Mit einer portablen Version ist eine Java-Installation gemeint, die man einfach auf dem Zielsystem in ein Verzeichnis seiner Wahl entpackt und die sofort (und vor allem ohne betriebssystemabhängige Installation) lauffähig ist. Aus diesem Grund wollte ich mir eine solche Version von Oracle herunterladen. Das war aber schon das erste Problem: Oracle ist nämlich ziemlich scheiße.

Oracle bietet (jedenfalls für Java 6) keine portablen JDKs zum Entpacken an – nur Installer. Da ich auf dem Zielsystem aber keine Installationsprogramme ausführen kann/darf/will, ist das selbstverständlich keine Alternative, zumal ich ja wusste, dass Java problemlos portabel ausführbar ist. Eine Installation ist daher gar nicht nötig. Kurzerhand musste ich also kreativ werden und basteln. Ich wollte den doofen Installer umgehen und die Dateien von Hand extrahieren. Das war gar nicht so schwierig wie ich dachte. Mein Werk wollte ich im Vorbeigehen kurz an einer Client-Anwendung testen, als beim Starten der JVM eine wilde Fehlermeldung erschien:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Soso, sehr interessant. Die JVM kann die Klasse java.lang.Object nicht finden. Wenn diese Klasse fehlt, dann fehlt praktisch alles. Ein freundliches Google teilte mir mit, dass es vermutlich mit einer fehlenden Datei rt.jar im Verzeichnis /jre/lib/ zusammenhängt. Tatsächlich, diese Datei gab es dort nicht. Ist Oracle wirklich so bescheuert und liefert ein unvollständiges, nicht lauffähiges JDK aus? Ist das die Strafe dafür, dass ich den Installer übergangen habe?

Ist es. Denn der Installer hat zudem die Aufgabe, die rt.jar aus einer gepackten Datei namens rt.pack auszupacken, und diverse weitere Dateien:

./lib/tools.pack
./jre/lib/charsets.pack
./jre/lib/jsse.pack
./jre/lib/deploy.pack
./jre/lib/javaws.pack
./jre/lib/plugin.pack
./jre/lib/rt.pack
./jre/lib/ext/localedata.pack

Warum das so ist, weiß nur der Teufel. Platzersparnis bringt es gegenüber dem umliegenden Archiv keine. Es ist wahrscheinlich reine Schikane. Manche behaupten auch, das wäre ein Mechanismus, um sicherzustellen, dass niemand den Installer umgeht, da dieser ja zum Akzeptieren der AGB auffordert. Zum Glück gibt es die mitgelieferten Java-Tools pack200 und unpack200. Mit deren Hilfe kann man die JAR-Dateien aus den PACK-Dateien befreien – sogar über verschiedene Betriebssysteme hinweg. Und dann klappt das auch wieder mit der JVM.

Seit diesem Tag hasse ich Oracle wieder ein bisschen mehr, und ich bin ein bisschen weiser geworden. In meinen Augen eine echte Schweinerei. Portable Versionen sind super und hinterlassen weniger Spuren. Wenn man weiß was man tut, und wenn man in der Lage ist, sich selbst um die richtigen Pfadangaben zu kümmern, dann hat ein portables Java viele Vorteile, vor allem wenn man viele homogene Systeme unter seiner Obhut hat.

Quellen:
http://www.cynosurex.com/Forums/DisplayComments.php?file=Java/Finding_rt.jar_in_JRE_5.0_Update_9
http://tntit.blogspot.de/2012/04/linux-jdk-6-installation-hard-way.html
http://turbolinux.org/2011/05/error-occurred-during-initialization-of-vm-javalangnoclassdeffounderror-javalangobject/
http://stackoverflow.com/questions/1619662/where-can-i-get-the-latest-jre-jdk-as-a-zip-file-i-mean-no-exe-installer

Gestern noch fragte mich ein Freund, ob ich ihm bei einem Problem mit einem alten Spiel weiterhelfen könne. Es ging darum, dass Anstoss 3 unter Windows Vista aus irgendeinem Grund nicht lief, unter Windows 7 aber interessanterweise schon. Auf die Schnelle konnten wir auch keine Lösung finden. Heute hatte ich selbst ein ganz ähnliches Problem: Ich wollte den Rollenspielklassiker Baldur’s Gate unter Windows 7 installieren, aber der Installer zeigte sich einfach nicht.

Ich finde es absolut nachvollziehbar, warum man alte Spiele auch heute noch (auf modernen Betriebssystemen) installieren will, denn nur weil sie alt sind, sind sie nicht automatisch schlecht. Aber das ist eben ein sehr weites Feld und darauf will ich jetzt auch nicht so genau eingehen. Jedenfalls war ich eben einfach in der Stimmung für das Spiel, und da ist es nicht besonders hilfreich, wenn schon das Installationsprogramm seinen Dienst verweigert.

Wenn die DVD eingelegt wird, erscheint das Autostartmenü – soweit funktioniert alles noch. Das Installieren klappt aber nicht. Laut Taskmanager läuft die Setup.exe im Hintergrund, sie zeigt sich aber nicht. Laut einem Forenbeitrag soll nach etwa zehn Minuten dennoch eine Fehlermeldung erscheinen, aber so lange habe ich nicht gewartet. Auf zwei Rechnern mit Windows 7 x64 bestand das Problem. Auf meinem Notebook mit Windows 7 x86 klappte es dann doch. Meine Vermutung ist also, dass das Installationsprogramm von Baldur’s Gate die 64-Bit-Umgebung nicht verträgt. Auch der Kompatibilitätsmodus kann dagegen nichts machen.

Es gibt trotzdem eine Lösung für das Problem: Baldur’s Gate lässt sich im abgesicherten Modus von Windows 7 problemlos installieren. Anschließend ist es sogar ganz normal spielbar. Alternativ kann man das Spiel auf einem x86-Windows installieren und auf das x64-System kopieren. Wegen der Pfade muss man dann eben aufpassen und gegebenenfalls die Baldur.ini-Datei anpassen.

Ein weiteres Problem besteht, sobald man ein Multiplayer-Spiel über TCP/IP erstellen will. Der Bildschirm wird schwarz und der Spieler kann nichts mehr sehen, obwohl das Spiel ganz normal weiterläuft. Andere Personen können dem eröffneten Spiel sogar beitreten. Auch hier hat der Kompatibilitätsmodus in keiner Einstellungskonstellation irgendwie helfen können. Im Gegenteil: Baldur’s Gate startet offenbar mit den Win95/98/ME-Einstellungen erst gar nicht. Dieses Problem kann man aber trotzdem umgehen, indem man Baldur’s Gate mit ALT+Enter im Fenstermodus spielt.

Andere Schwierigkeiten sind mir bis jetzt noch nicht begegnet. So wünsche ich nun jedem Rollenspielfan und Retrospielegenießer ein beschwerdefreies Spieleerlebnis. Und falls es doch mal soweit kommen sollte, dass sich Baldur’s Gate in naher Zukunft weder installieren noch spielen lassen wird, mit GemRB gibt es inzwischen eine Open-Source-Reimplementation der Infinity Engine von Bioware, die kompatibel mit praktisch allen entsprechenden Spielen sein soll, wenn auch noch nicht hundertprozentig an allen Ecken. Sogar auf Smartphones lässt sich Baldur’s Gate damit spielen. Hat mit der Software jemand Erfahrungen gemacht?

Neulich bei der Installation des Internet Explorer 9:

Offensichtlich wollte der Installer mir sagen: „Bitte alle möglichen laufenden Programme schließen – oder wahlweise Installation nach einem Neustart fortsetzen. Um einen Reboot zu vermeiden, habe ich mich also dazu entschlossen, die Problemanwendungen kurz zu schließen. Das wären also der Last.fm-Scrobbler, der Miranda Fusion Autoupdater, der Miranda Fusion Messenger, der Texteditor Notepad++, mein Lieblingsbrowser Opera, der BitTorrent-Client uTorrent, alle offenen Explorer-Fenster, die Windows-Gadgets und das IRC-Programm X-Chat.

Nachdem ich die Installation also fortsetzen konnte, meldete das Installationsprogramm wenige Sekunden später, dass ein Neustart des Systems nötig sei, um die Installation abzuschließen. Ach, was hab ich gelacht. Herrlich, wie Microsoft mir wieder mal den Tag versüßt hat :D

Bevor jetzt jemand fragt, warum ich denn den IE9 überhaupt installiert habe und nicht stattdessen lieber einen richtigen Browser: Auf meinem Rechner sind Opera, Firefox, Chrome und auch der Internet Explorer installiert. Der IE gehört eben zu Windows und viele Programme laufen ohne ihn nicht. Auch wenn ich ihn nicht zum Surfen nutze, so halte ich es trotzdem für wichtig, die installierten Programme aktuell zu halten.