|
ARES è un ottimo software p2p ed in più è anche Open Source e scritto in Delphi.
Allora ho deciso di scaricarmi i sorgenti e procedere alla compilazione (sicuro
fin dall'inizio che non sarebbe stata una semplice questione di apertura del
progetto e suo Build). Di seguito i vari passaggi seguiti in data 25 Aprile 2007
per compilare la versione corrente del programma ossia la 2.0.8.3029.
1. Scarichiamo il programma
Come prima cosa, per chi non lo avesse già installato, è opportuno scaricarsi
l'installer del programma; l'eseguibile che otterremo nei passaggi successivi lo
andremo a sostituire all'eseguibile copiato dall'installer. Siamo il 25 Aprile
2007 e la versione corrente è la 2.0.8.3029: la home page del progetto è la
seguente
http://aresgalaxy.sourceforge.net
2. Scarichiamo i sorgenti
I sorgenti del programma si trovano su sourceforge all'indirizzo
http://sourceforge.net/project/showfiles.php?group_id=112366&package_id=121627
3. Creiamoci l'eseguibile
Ora che abbiamo i sorgenti, vediamo come arrivare all'eseguibile
3.1 Componenti necessari
I sorgenti di Ares utilizzano vari componenti: nel seguito vedremo uno ad uno
i vari pacchetti.
3.1.1 JEDI components
Incluso coi sorgenti c'è anche un file di testo che elenca le dipendenze,
ossia le librerie esterne usate dal programma. In primo luogo c'è la JEDI
Library: questa immensa libreria OpenSource che personalmente considero
fondamentale, è continuamente aggiornata e sono disponibili, oltre alla versione
più recente, anche versioni precedenti. La libreria è composta principalmente
dalla Jedi Code Library (JCL) e dalla Jedi Visual Component Library (JVCL). La
homepage del progetto è all'indirizzo
http://sourceforge.net/project/showfiles.php?group_id=45786
A questo indirizzo si possono trovare tutte le versioni pubblicate (a partire
dalla più recente); per ogni versione esistono vari file da scaricare: il file
completo di tutto è il primo (.7z) (o in alternativa il secondo ossia il .zip;
l'unica cosa che cambia tra i 2 è il formato di compressione usato, il contenuto
è il medesimo). Il nome del file contiene il numero di versione di JCL , il
numero di versione di JVCL ed un numero di Build: ad esempio in data 25 Aprile
2007 si ha
JVCL331CompleteJCL199-Build2551.7z
ossia JCL 1.99 e JVCL 3.31
In alternativa si può usare anche l'indirizzo diretto:
http://prdownloads.sourceforge.net/jvcl/JVCL331CompleteJCL199-Build2551.7z?download
(al posto di .7z si può mettere .zip per scaricare il medesimo pacchetto
compresso con lo zip classico)
La versione indicata tra i requisiti di ARES è quella presente all'indirizzo
http://prdownloads.sourceforge.net/jvcl/JVCL300CompleteJCL195-Build1848.zip?download
Include: JCL 1.95 e JVCL 3.00 (come si può vedere dal nome del file .zip)
(anch'essa la possiamo trovare nella home page del progetto, andando alla
sezione JVCL 3.00)
Come già detto, la versione più recente in data 25 Aprile 2007 è
all'indirizzo
http://prdownloads.sourceforge.net/jvcl/JVCL331CompleteJCL199-Build2551.zip?download
Include: JCL 1.99 e JVCL 3.31
Sul mio Delphi ho la seguente versione:
JCL 1.96 e JVCL 3.10
(ossia una versione intermedia)
Per curiosità mi sono installato l'ultima versione (dopo avere disinstallato
quella attualmente installata). Successivamente come prima cosa sono andato a verificare che i
vari programmi già sviluppati e che usano la JEDI Library continuassero a
compilare correttamente (non si sa mai, meglio verificare che tutto quello che
andava fino ad oggi continui ad andare). Behh ... tutto OK. Così mi sono detto "behh,
visto che continua a funzionare tutto, procediamo con la versione più recente".
I pacchetti che si scaricano agli indirizzi sopra, contengono essenzialmente
2 cartelle:
1) jcl: cartella contenente la JCL
2) jvcl: cartella contenente la JVCL
L'installazione avviene nel seguente modo:
1) Installazione JCL: entrare nella cartella jcl e lanciare install.bat; si
aprirà un installer che guiderà l'utente nell'installazione di JCL
2) Installazione JVCL: entrare nella cartella jvcl e lanciare install.bat; si
aprirà un installer che guiderà l'utente nell'installazione di JVCL
In ogni caso, se si ha un'altra versione già installata, quest'ultima va
obbligatoriamente disinstallata manualmente, ossia vanno disinstallati i
componenti relativi (Component --> Install Packages).
3.1.2 DSPack
Questo formidabile pacchetto di componenti consente una eccezionale gestione
di contenuti multimediali (filmati etc...). Anche in questo caso si tratta di un
pacchetto Open Source: VCL in Delphi costruite su una traduzione in Delphi degli
header .h relativi al DirectX 9. Si va da un controllo per riprodurre video e
audio ad un componente per la cattura audio e video (senza però prevedere
l'utilizzo di codec per la compressione) ed altro, tutto molto interessante e
ben fatto. L'indirizzo è il seguente:
http://www.progdigy.com/modules.php?name=DSPack
3.1.3 TNT Unicode Controls
Si tratta di una riscrittura di quasi tutti i controlli VCL di Delphi, per
supportare il sistema di caratteri UNICODE. L'home page del progetto è
http://www.tntware.com/delphicontrols/unicode/
La realizzazione è pregevole ed infatti la
TMS Software ha acquisito il pacchetto
in questione che quindi dal 26 Marzo 2007 non è più Open Source e richiede una
licenza per l'utilizzo in applicazioni: adesso il pacchetto si chiama TMSUnicode.
Tuttavia, alla pari di tutti gli altri pacchetti della TMS Software, sono
liberamente scaricabili i .dcu per tutte le versioni di Delphi e C++ Builder.
L'indirizzo è il seguente
http://www.tmssoftware.com/go.asp?tmsuni
Frugando tra i miei backup ho però rimediato una vecchia versione Open Source
dei TNT Controls che poi tanto vecchia non è trattandosi appunto della versione
2.2.5 del 15 Maggio 2006
TntUnicodeControls_2_2_5.7z
Le ho installate entrambe (separatamente l'una dall'altra) e ho verificato
che ciò che compilava con la vecchia versione, compila correttamente anche con
la nuova. Personalmente penso che la cosa migliore sia usare la versione
OpenSource.
3.1.4 Ares VCLs
Sotto questo nome viene indicato un pacchetto di VCL di vario tipo create
appositamente per ARES. L'indirizzo per scaricarle è il seguente:
http://prdownloads.sourceforge.net/aresgalaxy/Ares_VCLs_03032007.zip?download
Il pacchetto ha una dipendenza dal pacchetto dei TNT Unicode Controls (con
precisione la vecchia versione OpenSource).
Il pacchetto include una versione modificata della
Virtual TreeView di Mike Lischke ed include le
unit CometTrees.pas e VCHeaderPopup.pas che sono versioni modificate delle unit
VirtualTrees.pas e VtHeaderPopup.pas della Virtual TreeView. La unit
CometTreesReg.pas contiene le procedure di registrazione: vi sono dei conflitti
di nome con la VirtualTreeView (viene registrato un controllo di nome
TVirtualStringTree che è già previsto dalla Virtual TreeView, etc...) ed allora,
avendo già installata la Virtual TreeView che uso in vari programmi, ho fatto
una rinomina dei componenti in questione. Esaminando il sorgente di Ares ho
constatato che questi controlli non vengono usati, per cui si potrebbe anche
commentare la registrazione; tuttavia rinominare mi sembra la scelta migliore.
Poi dato che c'ero ho rinominato anche il componente TTrayIcon in uTrayIcon.pas
che andava in conflitto col mio componentino che fa la stessa cosa. Bene, per
non dilungarci troppo, allego la mia versione delle Ares VCLs:
Ares_VCLs
Come ultima cosa, ho provato a compilare il pacchetto con la versione attuale
dei TNT Unicode Controls (quella non più OpenSource che appunto si chiama
TMSUnicode) e la compilazione è corretta.
3.2 Compilazione del sorgente e creazione del .exe finale
Una volta installati i pacchetti descritti ai punti precedenti, la
compilazione dei sorgenti di Ares non richiede sforzi biblici; il sorgente è
contenuto in una cartella e nelle 2 sottocartelle di nome BitTorrent e DHT (che
vanno aggiunte al percorso di ricerca del progetto: Project -> Options ->
Directories/Conditionals -> Search Path);ho riscontrato un errore nel sorgente
all'interno della unit helper_chatroom.pas: viene chiamata la funzione
WideInputQuery (implementata nella unit TntDialogs.pas dei TNT Uncidoce Controls)
con un numero sbagliato di argomenti; la funzione corrisponde alla funzione
InputQuery che appunto visualizza una dialog box che consente l'inserimento di
caratteri alfanumerici. Rispetto all'implementazione in TntDialogs.pas, la
WideInputQuery chiamata in helper_chatroom.pas contiene 2 parametri in più: si
tratta dei primi 2 parametri che, a quanto pare definiscono la posizione
Left-Top della dialog box da visualizzare. Purtroppo non sono riuscito a trovare
implementazioni overloaded della WideInputQuery di questo tipo e allora ho
eliminato questi primi 2 parametri e la compilazione è andata OK. Ho provato
anche con la nuova versione dei TNT Unicode Controls (i controlli TMSUnicode di
cui si è parlato abbondantemente in precedenza) ed anche stavolta OK, tuttavia
la scelta finale va per i TNT Unicode Controls OpenSource. Infine, è degna di
nota la sottocartella TcpIPPatcher che contiene i sorgenti della dll
TcpIPPatcher.dll che, se inserita nella cartella che contiene l'eseguibile di
Ares, consente il caricamento del driver tcpip_patcher.sys (incluso nella
cartella di installazione di Ares). Dal Service Pack 2 di Windows, tcpip.sys
(nella cartella "c:\windows\system32\drivers") contiene una limitazione sul
numero di connessioni contemporanee (limitando di fatto le performance di un
software p2p): tcpip_patcher.sys consente di leggere e modificare tale
limite. Le funzioni esportate dalla dll TcpIPPatcher.dll consentono di caricare
il driver tcpip_patcher.sys e, tramite esso, ottenere il limite attuale e
settarne uno nuovo.
3.3 Considerazioni sul .exe generato
A questo punto ho sostituito il .exe originale dell'installazione di Ares con
il .exe che mi sono creato come descritto nei punti precedenti: behh, .. tutto
OK. L'unica differenza è la dimensione: quello originale risulta molto più
piccolo. E' sicuramente il risultato dell'utilizzo di qualche exe-compressor: mi
sono scaricato WinUpack ed ho
ottenuto un .exe di dimensioni analoghe a quello incluso dall'installer.
4. Per concludere
1) scaricare ed installare la Jedi Library:
http://prdownloads.sourceforge.net/jvcl/JVCL331CompleteJCL199-Build2551.7z?download
2) scaricare ed installare DSPack
http://www.progdigy.com/modules.php?name=DSPack
3) scaricare ed installare TNT Unicode Controls (versione Open Source)
TntUnicodeControls_2_2_5.7z
4) scaricare ed installare Ares VCLs
Ares_VCLs
5) scaricare i sorgenti di Ares
http://sourceforge.net/project/showfiles.php?group_id=112366&package_id=121627
andare nella unit helper_chatroom.pas ed eliminare i primi 2 parametri nella
chiamata alla funzione WindeInputQuery. Inoltre includere le sottocartelle
BitTorrent e DHT nel Search Path del progetto (Project -> Options -> Directories/Conditionals
-> Search Path)
Per testare l'eseguibile, scaricarsi l'installer di Ares all'indirizzo
http://aresgalaxy.sourceforge.net/
(click su download)
e sostituire all'eseguibile copiato dall'installer, quello che ci siamo
creati.
Altra cosa che si può fare è crearsi la dll TcpIPPatcher.dll: nei sorgenti,
andiamo nella sottocartella TcpIPPatcher e buildiamo il progetto
TcpIpPatcherDll.dpr. Andremo a mettere TcpIPPatcher.dll nella cartella di
installazione di Ares. Tramite tale dll, Ares andrà a caricare il driver
tcpip_patcher.sys (presente appunto nella cartella di installazione) e, tramite
esso, leggerà e modificherà il limite sul numero di connessioni concorrenti
attualmente presente sul sistema (bypassando quindi il limite di 10 imposto da
tcpip.sys così come definito a partire dal Service Pack 2 di Windows XP).
|