A couple of days ago, as I was updating SendSong (latest version here), I discovered a really nice trick. Until now, I’d been storing ringtones in /Library/Ringtones, the same folder used by the built-in ringtones. Then
“DarkTen”“Ste” tipped me off to the fact that you could store them in the root folder, in /var/root/Library/Ringtones and they’d still be recognized. (”LG” discovered this and Nate True confirmed it, adding that there’s a third way to put Ringtones into your iTunes folder–but it’s complicated.) SendSong now takes advantage of this and limits your access (both adding and removing ringtones) to that folder.
What this means, though, is that if you can track down a copy of iPhone Interface for either Windows or Mac, you can install ringtones without having to jailbreak your phone. Create the /var/root/Library/Ringtones folder (on a non-jailbroken phone, that’s the Library that appears as your home folder) and stick whatever ringtones you want into that folder. There’s no need to access system files. You can do it all from the public directories.