I believe the solution you're all looking for is the Application Directory. These are implemented by ROX filer (available for Linux) and I believe a lot of OS X apps use a similar scheme.
Basically, if a directory contains an executable called "AppRun" it is an AppDir. If you open the directory in the file browser, the executable called AppRun is run. The icon is defined by a file in the directory called .DirIcon.
To the casual user the AppDir is just an icon that can be copied and run anywhere. In reality it is a directory containing all software and data an application needs.
Edit: Spelling
Basically, if a directory contains an executable called "AppRun" it is an AppDir. If you open the directory in the file browser, the executable called AppRun is run. The icon is defined by a file in the directory called .DirIcon.
To the casual user the AppDir is just an icon that can be copied and run anywhere. In reality it is a directory containing all software and data an application needs.
Edit: Spelling