Learn how to make free out-going calls and receive your very own US phone number for your iPod touch to receive free incoming calls right on your iPod touch just like a fully fuctional phone.

Click on the link below to learn how!

IPOD TOUCH FANS FORUM 

 

 

     SOURCES 

1        iFortner Inc: http://ifortner.zoomshare.com/repo.xml

2        AppTapp Official: http://repository.apptapp.com

3        Conceited Software: http://conceitedsoftware.com/iphone

4        Conceited Software Beta: http://conceitedsoftware.com/iphone/beta

5        Ste Packaging: http://psmxy.org/iphone-apps

6        Additional Sources

7        TouchRepo: http://touchrepo.com/repo.xml

8        HighTymes: http://hightymes.org/iphone/plist/index.xml

9        iSwitcher: http://meachware.com/list.xml

10    Loring Studios: http://loringstudios.com/iPhone-schnapps/index.xml

11    AlohaSoft 1.0.2: http://homepage.mac.com/reinholdpenner/102.xml

12    AlohaSoft 1.1.1: http://homepage.mac.com/reinholdpenner/111.xml

13    AlohaSoft 1.1.2: http://homepage.mac.com/reinholdpenner/112.xml

14    Apogee LTD: http://apogeeltd.com

15    Asuraku’s Repo: http://asuraku.googlepages.com/repo.xml

16    aXP: http://lostsoul.aeroxp.org/iphone/index.xml

17    BigBoss: http://markmon.mine.nu:90/iphone/repo/repo.plist/sleepers.net/iphonerepo

18    Blaze Ultimate: http://blazecompany.googlepages.com/blaze.xml

19    CedSoft: http://prog.cedsoft.free.fr

20    Chinese LumaQQ: http://lumaqq.linuxsir.org/update/repository.plist

21    CopyCoders: http://homepage.mac.com/hartsteins/copycoders/copycoders.xml

22    Death to Design: http://iphone.deathtodesign.com/index.xml

23    Demosthenes705’s eBooks: http://chriss.brandonsgames.com/index.xml

24    iApp-a-Day: http://iappaday.com/install

25    iBlackJack: http://iphonefanclub.com/native

26    Imagine09: http://home.twcny.rr.com/imagine09/Imagine09.xml

27    Internet Plug-In: http://brandonschlenker.com/plugin.xml

28    iPhone Apps: http://repo.us.to or applerepo.a.la

29    iPhone DevDocs: http://idevdocs.com/install

30    iSolitaire: http://iphone.rustyredwagon.com/repo

31    iUnlock: http://i.unlock.no

32    Java Runtime Environment: http://apptapp.saurik.com

33    Limited Edition iPhone: http://limitededitioniphone.com/lei.xml

34    Mateo: http://bblk.net/iphone

35    Mod My iFone: http://modmyifone.com/installer.xml

36    MobileStacks: http://mobilestack.googlecode.com/svn/repository/internal.plist

37    Moyashi’s Stuff: http://hpcgi3.nifty.com/moyashi/ipodtouch/repository.cgi

38    MTL Repository: http://home.mike.tl/iphone

39    Nuclear Design: http://nucleardesign.net/repository

40    Patricks Source: http://sources.st3alth.org/sources.xml

41    Pyrofer’s Projects: http://pyrofersprojects.com/repos/repos.xml

42    PXL Repository: http://pxl.freemyiphone.com

43    R4m0n Repository: http://iphone.r4m0n.net/repos

44    Robota International: http://iphone.robota.nl

45    Scientific Calcs: http://tinyurl.com/2b32sn

46    ScummVM: http://urbanfanatics.com/scummvm.xml

47    Shai’s Repo: http://ride4.org/shai.xml

48    Simek’s Graphic: http://simek.ddl2.pl

49    Studded: http://studded.net/installer/index.xml

50    Surge: http://iphonesurge.com/iphonesurge.xml

51    Swell: http://lyndellwiggins.com/installer/Swell

52    weTools: http://app.weiphone.com/installer

53    PBF: http://www.polarbearfarm.com/repo/

54    iFob: http://www.icloseby.com/downloads/iFob.pxl

55    newattiphone: http://www.newattiphone.com/repo.xml

56    byooi.com digicide: http://byooi.com/iphone/digicide.plist

57    Maomaland Themes: http://maomaland.com/iphone/repo.xml

58    Languages

59    Arabic: http://apps.iphoneislam.com

60    Simplified Chinese: http://iphone.org.hk/repository.plist

61    Chinese: http://iphone.freecoder.org/rep/

62    Danish: http://iphone.vildmedmac.dk/install

63    FrenchIphone: http://rep.frenchiphone.com

64    Greek: http://greek-iphone.com/grloc

65    Hebrew: http://ihebrew.net

66    iPhone for Taiwan: http://iphone4.tw/unlock/

67    Korean: http://bomijoa.com/iphone / agaat.info/demo

68    Norwegian http://iFon: install.ifon.no

69    Polish iPolish: http://wakoman.ovh.org/iphone

70    Portugues-Brasil(1.1.2): http://iphonemod.com.br/forum/repo/installer.xml

71    Russian iPhone: http://russianiphone.ru/beta

72    Russian Tools (in English): http://russianiphone.ru/beta/en

73    Spanish Phyros iPhone-ES: http://iphone.frickr.es/index.xml

74    Swedish iFun.se: http://ifun.se/swe

75    Taiwanese: http://iphone4.tw/unlock

76    Vietnamese: http://iphone.billydragon.net

 

 

 

 

 

FOR DEVELOPERS ONLY

 

plist structure

  • bundleIdentifier (string, required) - The unique bundle identifier of this package, this is how Installer knows what you are talking about. Do not ever change this value once a package goes live, unless you want to fork your package.
  • name (string, required) - The name of the package as it will appear in the Installer package listings.
  • version (string, required) - The version of your package. Currently, Installer.app does not parse version numbers, but rather compares them -- meaning that you can only have one version of a product at a time live on the repositories. This shortcoming will be addressed in the near future.
  • location (string, required) - The location for the associated package zip file. This zip file MUST retain executable permissions if you are going to be installing any executables.
  • size (string, required) - The exact byte size of the package zip file. This must match or the Installer will not be able to install the package.
  • url (string, optional) - A url to link the "More info..." button to.
  • description (string, optional) - A package description or README. At this time Installer can only view a small portion of this text, but this will be addressed soon.
  • maintainer (string, optional) - The third party maintainer name for this package. You do not need to set this if it is the same as the repository maintainer.
  • contact (string, optional) - The third party maintainer contact (e-mail) for this package. You do not need to set this if it is the same as the repository maintainer's contact.
  • restartInstaller (boolean, optional) - set to true if you want installer to prompt the user to restart Installer itself after installing or updating this package.
  • scripts (array, required) - This is where the core installation procedure takes place. It is composed of one or more Installer scripts:
    • preflight (array, optional) - this script is executed before any installs or updates, but NOT uninstalls. It is typically used to check whether the package can be installed.
    • install (array, required) - this is the install script, without this, the user won't be able to install the package. Makes sense, doesn't it?
    • update (array, optional) - this script is executed when the user updates the package, if it is not defined, installer uses the install script (see above) to update instead, effectively overwriting the old package -- this is useful for smaller packages that don't really need a separate update script.
    • postflight (array, optional) - this script is executed after any install or update of the package, but NOT uninstalls.
    • uninstall (array, optional) - this script is executed when the user chooses to uninstall the package. Although it is optional, it is HIGHLY recommended that you do define it so that your package can be uninstalled. If it is not defined, the uninstall button will not show up in Installer.

    Each of these scripts is an array, containing script commands in the following format:

    <array>
    	<string>CommandName</string>
    	<string>Argument 1</string>
    	<string>Argument 2</string>
    </array>
    				
    A command may take any number of arguments, as well as some commands take array arguments that can even contain other scripts embedded in the same format. The commandn name however, is always a string. Please note that in the event that the Installer cannot identify a command name, the script execution will be aborted (notifying the user).

    script commands

    • CopyPath(source, destination) - Copies a path recursively. You can specify a folder or a file, but in either case the destination path must be absolute, do not leave out the filename when copying to a folder! It may work, but it is bad practice to do so and may cause unexpected results in some circumstances. The source path, when specified without a preceding slash (/, absolute path) will resolve to the contents of the zip file -- in the case that a full path is specified, it will resolve against the user's filesystem.

     

    Creating a Source Repository for use with Installer.app
    Installer.app, like Macintosh OS X, reads external properties, such as sources for package downloads, from an Apple Property List (commonly known as a plist). These property lists can be represented in either XML or binary format. A sample can be viewed in the sample below.
    When creating a repository, it is generally recommended that you use Apple’s property list editor, although any plain text editor, such as Microsoft’s Notepad, will work just as well. One common source of errors is using a Rich Text Editor, such as Microsoft’s Wordpad or Apple’s TextEdit.
     
    Contents
    [hide]
    · 1 Sample Repository
    · 2 Building A Repository
    o 2.1 Header Information
    o 2.2 Info
    o 2.3 Package Information
    o 2.4 Scripts
    · 3 Common Script Commands
    o 3.1 CopyPath() and RemovePath()
    o 3.2 Other Common Commands
    o 3.3 If / IfNot
    · 4 More on ~/
    · 5 More on MD5
    · 6 Download this page in .doc format 

     
    [edit] Sample Repository
     
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "
    http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
     <dict>
       <key>info</key>
       <dict>
         <key>name</key>
         <string>iFortner Inc</string>
         <key>description</key>
         <string>The Official iFortner Repository</string>
         <key>maintainer</key>
         <string>Steven Fortner</string>
         <key>contact</key>
         <string>ifortner2008@gmail.com</string>
         <key>url</key>
         <string>http://www.ifortner.com</string>
         <key>category</key>
         <string>iFortner Apps/Themes</string>
       </dict>
       <key>packages</key>
       <array>
         <dict>
           <key>bundleIdentifier</key>
           <string>com.ifortner.iHide</string>
           <key>name</key>
           <string>iHide</string>
           <key>version</key>
           <string>2.0</string>
           <key>location</key>
           <string>http://www.ifortner.com/Apps/iHide.zip</string>
           <key>category</key>
           <string>Games</string>
           <key>size</key>
           <string>1276224</string>
           <key>hash</key>
           <string>2c250d07856eb73d7215d5a27e99fe4f</string>
           <key>url</key>
           <string>http://www.ifortner.com/iHide/index.html</string>
           <key>maintainer</key>
           <string>Steven Fortner</string>
           <key>contact</key>
           <string>ifortner2008@gmail.com</string>
           <key>description</key>
           <string>iHide will allow you to hide your music, contacts, videos, notes and etc.</string>
           <key>date</key>
           <string>1201815661</string>
           <key>scripts</key>
           <dict>
             <key>install</key>
             <array>
               <array>
                 <string>CopyPath</string>
                 <string>iZoo.app/</string>
                 <string>/Applications/iHide.app</string>
               </array>
             </array>
             <key>uninstall</key>
             <array>
               <array>
                 <string>RemovePath</string>
                 <string>/Applications/iHide.app</string>
               </array>
             </array>
           </dict>
         </dict>
       </array>
     </dict>
    </plist>
    [edit] Building A Repository
    [edit] Header Information
    The basic header information is the standard for Apple plists. You should not change this.

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
     <dict>
     ...
     ...
     ...
     </dict>
    </plist>
    [edit] Info
    Within this plist, you should create a dictionary with two keys. The first of which is the info key. This is where Installer gets all the information about your repository.
       <key>info</key>
       <dict>
         <key>name</key>
         <string>iFortner Inc.</string>
         <key>description</key>
         <string>The Official iFortner Repository</string>
         <key>maintainer</key>
         <string>Steven Fortner</string>
         <key>contact</key>
         <string>ifortner2008@gmail.com</string>
         <key>url</key>
         <string>http://www.ifortner.com</string>
         <key>category</key>
         <string>iFortner Apps/Themes</string>
       </dict>
     
    Key  Optional  Description    
    category  No.  This is the category in which you want you source to appear in Installer's Sources List.    
    name  No.  This is the name you want Installer to display for your source in its Sources List.    
    description  Yes.  This is the description you want Installer to display for your source in its Sources List.    
    maintainer  No.  Your name or your company's name.    
    contact  No.  The email at where you want to receive email form users about your source    
    url  Yes.  This is the link you want to load when the user taps the "More Info" tab about your source.  
    [edit] Package Information
    This is the second key in your main dictionary, in which you tell Installer about each specific package in your repository. Each package should be set up as a separate dictionary within an array.
       <key>packages</key>
       <array>
         <dict>
           <key>bundleIdentifier</key>
           <string>com.ifortner.iHide</string>
           <key>name</key>
           <string>iHide</string>
           <key>version</key>
           <string>2.0</string>
           <key>location</key>
           <string>http://www.touchrepo.com/Apps/iHide.zip</string>
           <key>category</key>
           <string>iFortner Apps/Themes</string>
           <key>size</key>
           <string>1276224</string>
           <key>hash</key>
           <string>2c250d07856eb73d7215d5a27e99fe4f</string>
           <key>url</key>
           <string>http://www.ifortner.com/iHide/index.html</string>
           <key>maintainer</key>
           <string>Steven Fortner</string>
           <key>contact</key>
           <string>ifortner2008@gmail.com</string>
           <key>description</key>
           <string>iHide will allow you to hide your music, contacts, videos, notes and etc.</string>
           <key>date</key>
           <string>1201815661</string>
           <key>scripts</key>
           <dict>
             <key>install</key>
             <array>
               <array>
                 <string>CopyPath</string>
                 <string>iHide.app/</string>
                 <string>/Applications/iHide.app</string>
               </array>
             </array>
             <key>uninstall</key>
             <array>
               <array>
                 <string>RemovePath</string>
                 <string>/Applications/iHide.app</string>
               </array>
             </array>
           </dict>
         </dict>
       </array>
     
    Key  Description    
    bundleIdentifier  This is how Installer knows what your package is. DO NOT CHANGE THIS once you have it set, or else you will break updates.    
    category  This is the category in which your package appears; ie Games. Books, Themes, etc.    
    name  This is the actual name of your package.    
    description  The package description that the user sees.    
    version  Your package's current version number. Any change to this causes your package to appear as an update.    
    location  This is the actual location of your package; the specific place from where Installer will download your package.    
    maintainer  The name of whoever maintains the package. It's a good idea to put the package creator here.    
    contact  This is the contact email of whoever created the package. Use yours from the info key if you do not have the creator's email.    
    size  This is the exact size of your package in bits. If you are one bit off, Installer will refuse the download.    
    sponsor  Creates a tag at where your Sponsor's name will appear.    
    hash  This is the md5 checksum of your package. If this does not match your package's size exactly, Installer will refuse the download.    
    date  This is the standard UNIX timestamp. It is the number of seconds since 1970.    
    scripts  This is where you put the preflight, install, upgrade, postflight, and uninstall scripts.    
    url  The link that is loaded when the user taps the "More Info" tab in Installer's about section for your package.  
    [edit] Scripts
    Scripts are the instructions that Installer uses to actually install or uninstall your package. There are five types of scripts you can use, each performing their own special functions. Scripts should appear in a subdictionary of its package directly attached to the "scripts" key.
    Each script should appear as a key of this subdictionary with its commands forming an array. Each command should appear as a separate array of strings within the script's master array.
          <key>scripts</key>
           <dict>
             <key>install</key>
             <array>
               <array>
                 <string>CopyPath</string>
                 <string>iHide.app/</string>
                 <string>/Applications/iHide.app</string>
               </array>
               <array>
                 <string>Notice</string>
                 <string>This is how you create a second command in a script</string>
               </array>
               <array>
                 <string>Notice</string>
                 <string>This is another command.  Notice how each command is listed in a subarray of the script's master array.<string>
               </array>
             </array>
             <key>uninstall</key>
             <array>
               <array>
                 <string>RemovePath</string>
                 <string>/Applications/iHide.app</string>
               </array>
             </array>
           </dict>
     
    Script  Usage    
    install  Used for Installing the actual package.    
    uninstall  Used for uninstalling the package.    
    upgrade  Used when upgrading requires special instructions. If there is no uninstall script, Installer uses the install script when upgrading.    
    preflight  This script runs before the install process. This is handy for performing checks as to whether Install should install the package or abort the package. Also this can be used to ready the iPhone/iPod for install.    
    postflight  This script runs after install. It is handy for such things as verifying proper install, cleaning up install, setting certain privileges, or anything else that must occur after installing a package.  
    The only script that is necessary is the install script. If you leave out the uninstall script, Installer will only give the user the option to install or reinstall (as seen in the Uninstall Section of Installer when you select to uninstall Installer).
    [edit] Common Script Commands
    [edit] CopyPath() and RemovePath()
    The most common commands you will use are the CopyPath(oldPath, newPath) and the RemovePath(path) commands. These will be expressed as
               <array>
                 <string>CopyPath</string>
                 <string>iHide.app/</string>
                 <string>/Applications/iHide.app</string>
               </array>
    and
               <array>
                 <string>RemovePath</string>
                 <string>/Applications/iHide.app</string>
               </array>
    respectively. You will find yourself using both during both the install and uninstall phase.
    In the CopyPath command, the first string (the oldPath) represents the directory within your package where all your files are. DO NOT put a slash at the beginning of this string. The second path (newPath) is the exact location of where you would like the package to be saved on the iPhone/iPod. Notice that this path has the slash at the beginning of the string. This is absolutely necessary, else your package will be installed into a temporary directory and will be deleted upon reboot. Make sure to put the EXACT location in here. CopyPath will overwrite files by default, so again, make sure your newPath is exactly correct. Finally, do not use shortcuts such as an expanding tilde to represent the user's home directory.
    Also, note that CopyPath() can be used for copying files withing the iPhone/iPod itself. This is handy for back up purposes. In this case, you will want the oldPath string to begin with a slash. The oldPath MUST also have the exact address of the fil or directory that you want to copy.
    In the RemovePath, you will need to specify the exact location of the file or directory that you want to remove. Know that removing a file or directory is a permanent. Be careful
    [edit] Other Common Commands
    Remember that each command is an array of strings. Look at CopyPath and RemovePath if you are not sure how to create an array out of each command.
     
    Command  What It Does    
    AbortOperation(string)  This will make Installer both abort the install process and display a message telling the user why. Example: "This package requires firmware version 1.1.2 to be installed first."    
    AddSource(url)  Adds the named url to Installer's Sources List. Don't forget the http://. Also, make sure you have your capitalization absolutely correct.    
    Exec(terminalCommand)  Runs a Terminal command. Useful for things like chmod, chown, etc.    
    InstallApp(nameOfApp)  Installs your Application. Example: InstallApp(iHide.app)    
    LinkPath(oldPath, newPath)  Links the two paths.    
    MovePath(oldPath, newPath)  Moves files from one location to another    
    Notice(string)  Displays a pop message while Installing    
    RemoveSource(url)  Removes the source with the specified url from Installer's Sources List.    
    SetStatus  Sets the status of the install process. Useful for lengthy installs or adding zazz to you install.    
    UninstallApp(NameOfApp)  Uninstalls your Application. Example: Uninstall(iHide.app)  
    [edit] If / IfNot
    If(condition[array], action[array]) Use this to check for specific conditions and have Installer react accordingly. Example
               <array>
                 <string>IfNot</string>
                 <array>
                   <array>
                     <string>FirmwareVersionIs</string>
                     <array>
                       <string>1.1.2</string>
                     </array>
                   </array>
                 </array>
                 <array>
                   <array>
                     <string>AbortOperation</string>
                     <string>Firmware 1.1.2 is required to update to 1.1.3.</string>
                   </array>
                 </array>
               </array>
    IfNot(condition[array], action[array]) Uses this to check for specific conditions and have Installer react accordingly. Example
               <array>
                 <string>IfNot</string>
                 <array>
                   <array>
                     <string>InstalledPackage</string>
                     <string>com.natetrue.iphone.iphone_binkit</string>
                   </array>
                 </array>
                 <array>
                   <array>
                     <string>AbortOperation</string>
                     <string>You must install the BSD Subsystem package first.</string>
                   </array>
                 </array>
               </array>
    Some common things to check with If / IfNot
     
    Command  What It Does    
    InstalledPackages(bundleIdentifierFromInfoPlistOfApplication)  Checks to see whether or not an application is installed.    
    ExistsPath(path)  Checks to see whether a specific file or directory exists.    
    FirmwareVersionIs(arrayOfFirmwaresTocheck)  Checks the iPhone / iPod firmware.  
    [edit] More on ~/
    Installer 3.0 and later has the ability to use expanding tildes in its paths. This is to accomodate the fact that some users are using firmware 1.1.2 or earlier, and some people are using firmware 1.1.3 or later. After 1.1.3 was released, Mobile OS X starting running the user as "mobile" instead of "root." While this is great for security purposes, it makes install a headache. Repository Managers would have to have to check firmware version then install to the right location, creating more work and taking up needless space (causing giant repositories). In order to prevent these two options, Installer now lets Repository Managers use one simply script for install and uninstall. Installer automatically locates the correct directory.
    As the ~ feature is only available using Installer 3.0 or later, it is not recommended that you use it yet, as not everybody has yet updated to Installer 3.0.
    [edit] More on MD5
    The md5 is a checksum. That is, it is the encrypted size of the package. In this case, it is 32 bit encryption. Installer uses this to verify each package it downloads. If it does not match, then Installer will reject the package. Note that the string representing the checksum must be written entirely in numbers and lowercase letters. Uppercase has been known to cause Installer the reject the download.
    Having Installer verify the package is to ensure that your package has not been tainted. It is also one more step to ensure the legitimacy of your package.
    While currently not necessary, Installer will start making this tag mandatory. That is, it will not download packages without a hash tag. It's a good idea to start implementing this as soon as possible to avoid obsolescence.
    There are several tools you can use to find out the md5 of your package. In Linux, you can use the md5 tool built into Terminal. If you don't have it, then open up terminal and type
    sudo apt-get install md5sum
    On a Mac, you can download and use MD5.app, a free application distributed by Eternal Storms Software.
    http://www.eternalstorms.at/md5/index.html
    On A Windows Platform Download http://www.pc-tools.net/files/win32/freeware/md5sums-1.2.zip and then just drop the zip file over the md5sums.exe file