Ich hab lange gebastelt. Es ist nicht möglich, den ganzen Internet Explorer 8 auf wine zum Laufen zu bringen, aber die HTML-, CSS- und Javascript-Engine des neuen Microsoft Browser kann man sehr wohl testen.
Genau wie beim IE7 in IEs4Linux - Auch da läuft darunter der IE6.
Der resultierende "Hybridbrowser" ist langsam und instabil, aber hey, für Webdesigner und -Entwickler reicht das wohl.
Meine (momentane) Wine-Version: wine-1.1.10
Ich bin im wesentlichen vorgegangen wie auf
http://www.tatanka.com.br/ies4linux/news/28 beschrieben.
Übrigens, nichts von alledem was folgt wird als root ausgeführt, bleibt schön brav (unprivilegierte) Userlein.
Ich setze voraus, dass der IE7 mit Hilfe von IEs4Linux bereits installiert ist. Um Zeit und Download-Bandbreite zu sparen, wird der einfach lokal kopiert. Damit es keine Konflikte mit anderen installierten Windows Programmen geben kann, wird eine eigene
Winebottle angelegt (= ein eigener Ordner mit eigenen Einstellungen).
cd
mkdir .ie8
cd .ie8
cp -r ~/.ies4linux/ie7/* .
Dann holen wir uns noch ein paar zusätzliche Libraries.
WINEPREFIX=~/.ie8 winetricks mfc40
WINEPREFIX=~/.ie8 winetricks mfc42
Die Fehlermeldungen, die dabei haufenweise auftreten, können allesamt ignoriert werden. Wichtig ist der "WINEPREFIX", andernfalls überschreibt ihr die Dateien in ~/.wine/.
Als nächstes bitte den Internet Explorer 8 von Microsoft herunter laden und irgendwo mit
cabextract auspacken. Wir brauchen nur eine handverlesene Anzahl an DLLs. Keinesfalls alle oder gar irgendwelche EXE kopieren.
cp wininet.dll iertutil.dll shlwapi.dll urlmon.dll jscript.dll vbscript.dll mshtml.dll mshtmled.dll mshtmler.dll advpack.dll inetcpl.cpl ~/.ie8/drive_c/windows/system32
Danach mit winecfg die überflüssigen dll-Overrides entfernen, die verursachen sonst Probleme.
WINEPREFIX=~/.ie8 winecfg
Ich habe übrigens nicht heraus gefunden, wann ein wineboot nötig ist und wann nicht. Es schadet nicht.
WINEPREFIX=~/.ie8 wineboot
Eine Liste mit den erforderlichen DLL-Overrides für den IE8:
"iertutil"="native,builtin"
"jscript"="native,builtin"
"mshtml"="native,builtin"
"mshtmled"="native,builtin"
"mshtmler"="native,builtin"
"msxml3"="native,builtin"
"shdoc401"="native,builtin"
"shdoclc"="native,builtin"
"shdocvw"="native,builtin"
"shlwapi"="native,builtin"
"url"="native,builtin"
"urlmon"="native,builtin"
"vbscript"="native,builtin"
"winhttp"="native,builtin"
"wininet"="native,builtin"
Jetzt kommt noch ein wenig Kosmetik. Ich passe den Fenstertitel an. Da ich mit IE8 an die Internet Optionen nicht ran komme, setze ich auch gleich die Startseite in der user.reg auf "about:blank".
cd ~/.ie8
sed -i -e 's/Microsoft Internet Explorer 7.0/Microsoft Internet Explorer 8.0b/' user.reg
sed -i -e 's/http:\/\/www.tatanka.com.br\/ies4linux\/startpage?lang=deDE&ieversion=ie7/about:blank/' user.reg
Um heraus zu finden, ob jetzt wirklich die Engine des IE8 werkelt, habe ich folgende Testdatei gebastelt.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test IE8
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
html { font:13px sans-serif; }
.tabi {display:table-cell; border:thin solid red; padding:5px;}
.ini {display:inline-block;border:thin solid blue; width:2em;}
</style>
</head>
<body>
<h3>Conditional comments:
</h3>
<!--[if IE]>
<h4>"ich bin irgendein ie"
</h4>
<![endif]-->
<!--[if IE 8]>
ich bin der ie8
<br>
<![endif]-->
<h3>Javascript: navigator.userAgent
</h3>
<script type="text/javascript">
var stuff = "plattform: " + navigator.platform + "
<br>agent: " + navigator.userAgent + "
<br>name: " + navigator.appName + "
<br>appvers.: " + navigator.appVersion;
document.write(stuff);
</script>
<noscript>
<h3>kein script
</h3>
</noscript>
<h3>css checks
</h3>
das sind p mit
<i>display:table-cell
</i>
<div>
<p class="tabi">a
</p>
<p class="tabi">a
</p>
<p class="tabi">a
</p>
<p class="tabi">a
</p>
<p class="tabi">a
</p>
</div>
<p>
das sind p mit
<i>display:inline-block
</i>
<div>
<p class="ini">m
</p>
<p class="ini">m
</p>
<p class="ini">m
</p>
<p class="ini">m
</p>
<p class="ini">m
</p>
</div>
</body>
</html>
Beide display-Anweisungen,
table-cell und
inline-block sind neu im IE8.
Mit etwas Glück schaut die Datei im IE8 wie folgt aus - immer vorausgesetzt, er crasht nicht gleich.
Zum Schluss wäre auch noch ein Skriptlein zum Starten und zum Unterdrücken der Fehlermeldungen praktisch.
Legt das irgendwo in euren PATH unter dem Namen "ie8" und ersetzt "alexandra" durch euren Usernamen.
#!/usr/bin/env bash
# IEs 4 Linux script to run ie7 - http://tatanka.com.br/ies4linux
# changed by xela
debugPipe() {
while read line; do [ "$DEBUG" = "true" ] && echo $line; done
}
cd
export WINEPREFIX="/home/alexandra/.ie8"
wine "/home/alexandra/.ie8/drive_c/Program Files/Internet Explorer/IEXPLORE.EXE" "$@" 2>&1 | debugPipe
Ich hätte auch gerne den acid2-Test mit dem IE8 aufgerufen, angeblich besteht der jetzt den Test. Dabei hängt er sich aber immer auf, schade. Wie gesagt, etwas instabil ist die aufgepfropfte Konstruktion schon.
Falls bei euch (mit eurer Wine-Version) die Installation nach meinem Mini-Howto nicht klappt, schickt mir um Himmels Willen keine Debug-Logdateien. Wine ist mir ein Buch mit sieben Siegeln, ich kann euch bestimmt nicht helfen.
Probiert einfach mit den dll-Overrides so lange herum, bis es klappt, oder googelt.
Gutes Gelingen.
UPDATE: Sapperlot! Den IE8 kann man jetzt noch viel einfacher installieren mit
winetricks
cd
mkdir .ie8-native
export WINEPREFIX="/home/$(whoami)/.ie8-native/"
winecfg
winetricks ie8
wineboot
wine 'C:Programme\\Internet Explorer\\iexplore'
Obiges Beispiel legt eine neue wine bottle im Ordner ".ie8-native" an - der WINEPREFIX ist dabei wichtig.
Mit winecfg wird die Windows Version auf XP gesetzt, falls das noch nicht der Fall ist.
Getestet mit wine-1.3.6 und Winetricks version 20100917.
Der ie8 lässt sich problemlos installieren ("updates" abwählen). Na gut, der hat dann kein Menü und ist etwas instabil - wir sind ja bescheiden