Today I ventured into making Vuze (the popular BitTorrent client) x64 compatible.
At first, it seems like a pretty simple task, but it turns out it’s slightly more complicated than it seems.
Here’s how to do it yourself. If you’re lazy, there’s a link at the bottom of this post with all the compiled files.
Step 1: Get the 64-bit JRE
First, download and install the 64-bit Java Runtime Environment (or JDK, whatever you want). Here’s a link to the JRE (make sure to download the Windows x64 version): https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jre-6u21-oth-JPR@CDS-CDS_Developer
Step 2: Use the x64 Standard Widget Toolkit
Secondly, we must replace the main GUI toolkit that Vuze uses (SWT) with the x64 equivalent. Download the “SWT Binary and Source” for Windows (x86_64) from: http://www.eclipse.org/swt/ (make sure to click More). At the time of writing the stable version is at 3.5.2. Here’s a link to that version: http://download.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/download.php?dropFile=swt-3.5.2-win32-win32-x86_64.zip
Extract swt.jar from the zip file and place it in the Vuze folder (%PROGRAMFILES(X86)%\Vuze), replacing the file. Note that once you do this, you can’t go back to the x86 version unless you download the x86 SWT or reinstall Vuze. At this point, we can actually use Vuze in 64-bit with the command line using the 64-bit JRE: java -jar Azureus2.jar ….but we aren’t done yet.
Step 3: Make the iTunes plugin work
New versions of Vuze come with an iTunes plugin that uses native code that is x86 only. This particular plugin uses some COM calls using a bridge called JACOB. Open up your Vuze plugins folder (%PROGRAMFILES(X86)%\Vuze\plugins), open the azitunes folder and look for a file that looks like “jacob-x.xx.x-x86.dll”. We need to find the x64 version of that DLL, and match the version. So if x.xx.x is 1.14.3, we need JACOB 1.14.3. You can find all the JACOB versions at SourceForge: http://sourceforge.net/projects/jacob-project/files/ Open the folder with the relevant version and grab the zip file that DOES NOT end in “_src”. Open up the zip, and extract jacob-x.xx.x-x64.dll to %PROGRAMFILES(X86)%\Vuze\plugins\azitunes.
Step 4: Enabling Windows specific Vuze settings
Vuze also uses a small portion of native code to perform some Windows specific tasks. These will be invisible to you until you compile aereg.dll into 64-bit. You will need to checkout the source code from the Vuze SVN respository and compile it with Visual Studio, making sure you target x64 rather than x86. To make it compile you’ll need the 64-bit JDK and to add some include paths to the project, specifically: jdkx.x.x_xx\include and jdkx.x.x_xx\include\win32. Don’t worry about the warnings, if you have any, they’re normal. Here’s the Vuze repository for aereg.dll: http://svn.vuze.com/public/client/trunk/azureus2/lib/libWIN32Access/ After you compile it to x64, make sure to RENAME IT to aereg64.dll. This took me quite some time to figure out, I had to do some source code digging to figure out why Vuze refused to load the 64-bit library.
Step 5: Making Azureus.exe / AzureusUpdater.exe use the 64-bit JRE
This is difficult since Vuze use commercial software, exe4j, to create the EXE launcher for the JAR. I went ahead and well…made it work. I have included the exe4j project files if you wish to compile the EXEs using exe4j by yourself. The final binaries are included at the end of the post. Vuze do not provide these projects, so it took me a while to mimic the exact project options that Vuze use to compile their EXEs. Here’s the projects: http://digitaldj.net/vuze/Vuze_exe4j.zip
Step 6: Edit the manifest
This is a minor step, that doesn’t really need to be completed. Open up Azureus.exe.manifest and make sure to replace all references of “x86″ with “amd64″.
Step 7: Move Vuze to Program Files
If you want, you can go ahead and move the Vuze folder to Program Files, instead of Program Files (x86)….but it isn’t necessary. If you do this, you’ll have to update your shortcuts and make sure your file associations (.torrent) point to the new folder location.
Hooray! We’re done. Now double click Azureus.exe and bam, you’re now using the 64-bit JRE. You can check task manager to ensure you’re not using the 32-bit version (it’ll have a *32 next to the process name).
And for the lazy or non-technical. Here’s the files you need to make your Vuze 64-bit: http://digitaldj.net/vuze/Vuze_x64_1.20.zip Simply extract the files (and overwrite all) to C:\Program Files (x86)\Vuze (these files are current to Azureus 220.127.116.11, and may work for future versions, but maybe not)
PS. Similar steps are taken for Linux and OSX. Minus the obvious. As far as I know, Linux has no native code, but OSX has a similar library to aereg.dll. You’d have to compile the source code here with XCode: http://svn.vuze.com/public/client/trunk/azureus2/lib/libOSXAccess/