Spesso nei forum di VB6 mi è capitato (e tuttora accade) di leggere richieste di aiuto che 'suonano' più o meno così:
"Ho creato un programma e sul mio pc funziona. Poi ho copiato l'eseguibile sul pc di un amico, e non funziona!"
Ovviamente che ha inviato il post non ha la minima cognizione di cosa significhi installare un programma e che tale operazione è davvero divenuta molto complessa e che richiede da parte del programmatore un continuo aggiornamento sui requisiti del software affiché possano essere installati (ma soprattutto che funzionino bene) anche nelle recenti versioni di Windows.
Da Windows Vista (ormai quasi defunto, per nostra fortuna) in poi (Windows Seven ed il prossimo Windows8) le cose si sono davvero complicate a tal punto che se prima con Windows XP qualche compromesso era accettabile ora creare installazioni è diventato un lavoro complesso da eseguire a regola d'arte.
Ultimamente (anzi è già da un bel po' di tempo) sentiamo sempre più spesso parlare di applicazioni 'portabili' ovvero programmi che possono essere 'copiate' su una chiavetta USB ed eseguite su qualsiasi computer. Queste applicazioni non richiedono alcuna installazione (o setup) e funzionano senza problemi.
Grazie alla tecnica SxS (side-by-side), conosciuta anche come Registration-Free COM, possiamo creare anche in VB6 applicazioni 'portabili' anche se con qualche limitazione.
Con la SxS è possibile infatti creare applicazioni che usino un componente esterno (DLL o OCX) senza che questo sia registrato e che perciò non andrà mai in conflitto con altra versione dello stesso componente già presente nel computer. Ciò è reso è possibile grazie ad un file .manifest piuttosto complicato da creare che contiene tutte le informazioni necessarie sul componente da usare.
Ho parlato al singolare ma è chiaro che possiamo usare più componenti, in questo caso il file .manifest conterrà le informazioni per tutti i componenti.
Ho accennato ad alcune limitazioni su questo tipo di applicazioni, vediamo quali sono:
- possono essere eseguite solo a partire da Windows XP SP2 (o versioni superiori)
- devono essere obbligatoriamente compilate con Visual Basic 6 - SP6
Senza il rispetto di queste 2 condizioni, le applicazioni falliranno miseramente.
Se desiderate provare, potete scaricare la versione SxS del programma Update Controls 0.4.1 (http://nuke.vbcorner.net/Tools/UpdateControlsCodejock/tabid/99/language/it-IT/Default.aspx) estraete il contenuto dello zip in una cartella.
Nella cartella vedrete che vi sono 3 OCX della Codejock e l'OCX del RichTextbox: avviate l'applicazione e vedrete che funziona senza aver registrato nessuno degli OCX.
In effetti, questa è un'applicazione 'portabile' che può essere utilizzata anche su una chiavetta USB.
Nota: nella cartella non vedrete alcun file .manifest perchè (come molti di voi già sapranno) è possibile inglobare tali informazioni direttamente nell'exe (ancora più complicato), ed è assai meglio così, dato che un file esterno, e per di più in formato testo, potrebbe essere manipolato da chiunque.
Come si fa a creare un'installazione SxS?
o per meglio dire: Come si fa a creare un file .manifest?
Purtroppo non è una cosa banale, e richiede uno studio approfondito.
Vi segnalo qualche link che vi può aiutare a capire come realizzare il file .manifest per la vostra applicazione:
Simplify App Deployment with ClickOnce and Registration-Free COM
AUTO-IT - RegFreeCOM Au3X Example