My problem has been solved. The problem was with my shell folder with which the dude changed.
This week I will show you how to transfer Xfire to your USB memory stick or similar device and to actually make it save all the personal settings in there instead of trying to store the data on the local computer.
This trick needs some extra tools since the user registry needs to be edited temporarily when starting up Xfire to make it use the USB stick as user profile instead of the local computer it normally does. I programmed these tools with C language and made them free for you to download from http://cc.joensuu.fi/~lehtolah/code/ (source code for all programs available there). You should know already to never trust a thing you download from Internet, so check the files with an updated anti-virus program. Even if the files come from me, it's still a good practice to run a scan on them.
So here is what you need to do:
1. On your USB drive create a new folder named USBXfire (you can name it anything else, but this folder name is used here).
2. Create a folder called user inside USBXfire (can also be named something else, but you need to edit usbxfire.cmd then).
3. Download the latest Xfire version from http://www.xfire.com/download/ to somewhere on your hard drive.
4. Using the installer you just downloaded, install Xfire to your USB drive to the USBXfire folder.
5. If you are using Windows Vista or Windows 7 copy all the folders from %PROGRAMDATA%\Xfire to USBXfire (see this post for instructions on how to access ProgramData).
6. Download echonl.exe, iniset.exe, regshx.exe, sleep.exe and usbxfire.cmd to your USBXfire folder.
7. If you plan on using your USB Xfire on Windows Vista or Windows 7 computers that do not have Xfire normally installed on them, you also need to download Junction tool which is used to make a link from the machine's ProgramData folder to your USB Drive. Extract junction.exe to USBXfire folder too.
8. Now it's ready! Just remember that when you start Xfire from your USB drive, start it using the usbxfire.cmd file, not directly Xfire.exe.
You could make a shortcut to usbxfire.cmd using the icon of Xfire.exe and place the shortcut to the root of your USB drive, so you don't accidentally open Xfire.exe as you already have a shortcut with fewer clicks that opens the correct one.
Note that if you put Junction to the USBXfire folder for Vista/Win7 compatibility, it will leave a mark to the computer that you have used Xfire on it. If you want to get rid of it, you can also download dejunction.cmd and place it to your USBXfire folder. After you have finished using Xfire, double click on dejunction.cmd and it will remove the link from ProgramData, making it seem like there never was anything.
And now for the people interested in what technically happens there and what my little helper programs have to do with it.
First the problems with having portable Xfire:
* Xfire stores user settings to AppData folder, which is part of your Windows user account, therefore stored in the computer you use Xfire in. If you plan to use Xfire on your USB drive from multiple computers, then your settings are not retained.
* On Windows Vista and Windows 7 many Xfire's files are saved in ProgramData folder which is also machine specific.
To overcome these problems, the script with the tools find out what the current path to your USB drive is and temporarily edit your user registry to cheat Xfire to save your user specific settings to the USB drive instead of the computer's hard drive. The sleep.exe is used to make the script wait for 5 seconds before restoring the previous information, this is to allow Xfire to start properly and read the modified data.
For the ProgramData problem which exist on Windows Vista and Windows 7 the external Junction tool is used to make a link from ProgramData folder to your USB drive, so when Xfire tries to find its files from ProgramData, it actually looks the USB drive for them. But since the link must exist there all the time, the script cannot automatically remove it; so you need to use the other script to remove the link after you stop using Xfire, if you don't want to leave it there.
I hope you found this useful!
I needed to change the cmd's mess which was HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders@echo off
echo Starting USB Portable Xfire...
echonl "set cwd=" > cwd.bat
cd >> cwd.bat
echonl "set oappdata=" >> cwd.bat
regshx getbatch Appdata HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" >> cwd.bat
regshx sete AppData "%cwd%\user" HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
iniset xfire.ini Xfire ProgramPath %cwd%
iniset xfire.ini Xfire CommonDataPath %cwd%
iniset xfire.ini Downloads RootDownloadDir %cwd%\downloads
junction -d %programdata%\xfire
junction %programdata%\xfire %cwd%
regshx set AppData "%oappdata%" HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
anyway the fix for this is go to http://support.microsoft.com/kb/886549
and download the fix it or edit the registry itself to default settings. Thanks to all who have helped/viewed.