Articoli

Più versioni di Internet Explorer su Windows? Si può!

di Massimo Canducci

thumbnail

22

Giu

2004

Chi realizza pagine Web ha di solito la necessità di provare il proprio lavoro su browser diversi, così si installa tutti i browser che gli servono, ma ha a disposizione una sola versione di Internet Explorer. Adesso non più


Internet Explorer

Dal punto di vista storico la nascita di Internet Explorer si intreccia con quella di Mosaic e di Netscape Navigator, i veri antesignani della navigazione sul Web, anche se si trattava di un Web molto diverso da quello che percepiamo oggi.

Il battesimo di Internet Explorer avviene il 13 Agosto 1996 quando Microsoft lancia la versione 3.0 seguita una settimana più tardi dal lancio del suo storico concorrente Netscape Naviagtor 3.0.

Parliamoci chiaro: tra i due software non c'era storia, il prodotto di Netscape, soprattutto la sua versione 3.1, era di tutt'altro livello rispetto al concorrente Microsoft, ecco quindi nascere quella che successivamente sarebbe stata la "guerra dei browser" che tanto danno ha causato alla qualità delle interfacce dei siti Internet.

Ormai però la frittata era fatta, ogni contendente cercava di proporre nel suo prodotto funzioni nuove e, quel che è peggio, supporto a tag personalizzati e fuori dagli standard definiti dal W3C per il linguaggio di markup ufficiale, HTML.

Nascevano quindi siti "ottimizzati per" l'uno o per l'altro che nella migliore delle ipotesi erano visibili anche con "l'altro" browser, quello cui non erano dedicati, ma spesso alcuni siti erano totalmente incompatibili ed inutilizzabili se non con il browser per il quale erano stati pensati e realizzati.


Il mal di pancia dei Web Designer

Nel corso degli anni i problemi da un lato si sono ridimensionati, nel senso che l'HTML 4.01 è sufficientemente completo e difficilmente a qualcuno verrebbe in mente di arricchirlo con nuovi tag, tuttavia il panorama per i professionisti del web non è semplice in quanto il numero di browser a disposizione è diventato altissimo, si va dai Netscape agli Explorer, passando per Mozilla, Opera, Safari, HotJava ed altre centinaia di software. Per capire quanto imponente sia il numero di browser esistente è sufficiente farsi un giro su evolt.org, un sito che raccoglie tutti i browser esistenti.

A questo punto cosa dovrebbe fare un Web Designer che voglia garantire un minimo di portabilità del proprio lavoro? Certamente non è possibile pensare che possa installarsi tutti i browser esistenti, ma almeno i test sui software più utilizzati sono obbligatori, di conseguenza si sceglierà un paio di versioni di Mozilla, un paio di Opera e almeno le ultime di Internet Explorer visto che è il browser più utilizzato.

Di Internet Explorer credo siano necessarie almeno le versioni 5.0, 5.5 e 6.0.

Il problema è che Internet Explorer è così integrato nel sistema operativo Windows, nelle sue varie incarnazioni, che è impossibile installarne una versione senza sovrascriverne la precedente.

Il sistema operativo infatti utilizza (apparentemente) per la sua navigazione interna la stessa interfaccia che usa per la navigazione Internet, questo per dare la sensazione all'utilizzatore che il suo PC sia un tutt'uno con la rete e che le risorse esterne siano immediatamente raggiungibili con un paio di clic.

Questa visione, tra l'altro, ha causato parecchi guai legali a Microsoft, ed ha permesso anche un'eccessiva esposizione dei PC degli utenti ad attacchi di virus, worm e curiosi.

Il Web Designer quindi non ha alternativa che trovare scappatoie ed alchimie per provare le proprie interfacce su versioni distinte di Internet Explorer.

Tra queste possiamo citare l'utilizzo di PC diversi (ciascuno con la sua versione di Internet Explorer) o l'utilizzo di software di emulazione come VmWare.

Oggi però vi svelerò un piccolo segreto… è possibile installare più versioni di Internet Explorer sulla stessa installazione di Windows, senza problemi ed addirittura senza sporcare il sistema, cosa rara con questo tipo di sistemi e di software, vediamo come questo sia possibile.


Un po' di tecnica

E' importante sapere che escludendo le componenti di integrazione con il sistema operativo, i file che compongono l'applicazione Internet Explorer sono abbastanza pochi e sono facilmente individuabili.

In particolare, per la versione 6, si tratta di questi:

A questo punto si potrebbe pensare che, raggruppando in una sola directory il file eseguibile e tutte le DLL di cui questo ha bisogno, forse questo file potrebbe essere eseguito autonomamente ed indipendentemente dalla sua posizione all'interno dell'alberatura del file system.

Beh, la realtà non è proprio in questi termini, ma ci siamo andati vicini.

Il problema potrebbe nascere con quelle DLL che consentono ad Internet Explorer di esportare il suo Object Model verso altre applicazioni, si tratta in particolare di shdocvw.dll (Microsoft Internet Controls) e di mshtml.tlb/mshtml.dll (Microsoft HTML Object Library).

Queste DLL rappresentano componenti condivisi del sistema le cui funzionalità vengono distribuite tra le applicazioni che ne fanno richiesta attraverso la funzione interna LoadLibrary() che necessita di una registrazione dei componenti all'interno del registro del sistema operativo.

Quando un'applicazione tenta di utilizzare una funzionalità contenuta all'interno di una di queste componenti condivise la funzione LoadLibrary() esegue una ricerca dei componenti partendo da quelli presenti nel repository centrale del sistema operativo, cioè la directory system32. E' chiaro quindi che per questi componenti potrebbe essere difficile lo spostamento in una directory diversa da quelle standard, a meno di non causare ad alcune applicazione l'impossibilità di utilizzare il DOM ed i Microsoft Internet Controls.

Ecco quindi entrare in gioco il file IEXPLORE.EXE.local il cui compito è proprio quello di modificare il comportamento della funzione LoadLibrary() per fare in modo che il primo percorso in cui andare a ricercare i componenti condivisi sia proprio il percorso locale permettendo di fatto il posizionamento arbitrario delle DLL necessarie al funzionamento dell'eseguibile di Internet Explorer.

Questo significa che prendendo il pacchetto di file della figura precedente e posizionandolo in una directory diversa del sistema avremo un'istanza completa di Internet Explorer (nel caso specifico la 6.0) totalmente indipendente da quella integrata con il sistema operativo.


Aggiungere altre versioni

A questo punto possiamo ripetere il procedimento con le altre versioni esistenti di Internet Explorer e vedere che succede. Ve lo anticipo io: il metodo funziona.

Per evitare di elencare i file necessari all'installazione delle varie versioni di Explorer, vi fornisco anche dei link dove è possibile scaricare direttamente i pacchetti funzionanti e contenenti tutti e soli i file che vi servono.

Per i sistemi Windows 2000/XP/2003 Server

Internet Explorer 6.0 Eolas Edition (3.41 MB)

Internet Explorer 5.5 SP2 (3.51 MB)

Internet Explorer 5.01 SP2 (2.93 MB)

Internet Explorer 4.01 (2.38 MB)

Internet Explorer 3.0 (909.4 kB)

Per installare la versione che vi interessa è sufficiente scaricare il file zippato, scompattarlo in una qualsiasi directory del vostro sistema e lanciare il file eseguibile. Tutto qua.

In questo modo, oltre alla versione correttamente installata ed integrata con il sistema operativo avrete a disposizione anche tutte le altre che vi servono e contemporaneamente.

In questa immagine potete vedere le istanze delle versioni 3.0 / 4.01 / 5.01 / 5.5 / 6.0 in esecuzione contemporaneamente sullo stesso sistema.

(Ingrandimento)

Conclusioni

Dubito che i Web Designer siano interessati al test delle loro interfacce su Internet Explorer 3.0 o 4.01, ma certamente avere a disposizione le versioni dalla 5 in poi può far molto comodo, anche e soprattutto per il fatto che, alla faccia della compatibilità all'indietro, spesso ci sono situazioni nelle quali l'interpretazione del codice HTML o dei fogli di stile CSS è molto diversa tra una versione e l'altra.

Buon divertimento.