Can we design this version of OpenSong from the beginning to be portable?
It would be nice to be able to run it from a USB drive on multiple machines.
What all do you mean by the term "portable"?
- do you mean static executable that use as data folder the current folder on USB drive?
- or would you like to go further and include on USB drive static executables for Win/Mac/Lin too?
Basically, I mean that all files necessary to run the application (the executable, libraries, etc.) would all be in one folder, and the data files would either be in the same directory, or at least in a user-specified directory that can use relative paths.
Another part of a "portable" application is that installing and running the executable doesn't make any changes to the machine it's running on -- no libraries are installed outside the app directory (or subdirectories), no registry settings on Windows, and so on.
Essentially, the goal it to have an installation such that the folder containing the app/libraries/data can be on a removable disk (such as a USB thumb drive) and run from any machine without installing or modifying anything on the system.
As far as including the binaries for other OSes, I don't think that would be feasable. I don't know of any portable apps that are done that way. It would be neat if we could do that, but then you'd have to have not only the executables, but also seperate versions of any libraries we use. Size and organization become problem then.
Each port of our app (Windows, *nix, Mac) would still have their own download, but the install would just be a simple as unzipping a folder.
That's a very long post for me to say what I was trying to say, and I hope I haven't made myself less clear.
I would suggest having all the OS specific files in one folder and the settings, profiles, and data in another. That way the user could update the program and still have the same settings (like the current opensong). Also the user could include multiple versions for different OS's at the sacrifice of disk space. This way you could use the same usb stick if you had one OS at home and another at church.
Zach, I think that's a good idea. As long as the program knows where to look (that is, there is a set directory structure) that works well.
I think it would be great for it to be portable
(each version being portable, Win, Linux & OS X)
Portability would be nice... but as I don't
need it at this stage. it's more of a wish-list
feature for me
I don't really see any need for extra development to make it portable, especially if we are aiming for cross-platform support.
If we have a cross-platform app, then it's not really looking for system libraries, and making the app write data files to a set directory in the same directory structure as the app is trivial.
No system dependency, no modifications to the system, and portablity. Easy.
It's more a matter of design than a "feature" as I see it.
Here is my suggestion for realization:
- We would have a file with "default configuration" in the same directory structure as the app.
- in this file could be a value like "IsPortable=1" and also defined folder structure which to use for portable version
- during startup the app will have a look to the default configuration and if it finds value "1" then the app will behave portable
- so for creating portable version you need only a few modifications in the configuration file
Portability is a great idea and the directory structure is a key idea of it (second only to not leaving anything on the computer on which the application is run). The guys at Portableapps.com have taken a lot of time to think through what it takes to make a good portable app. Take a look at that site under the Development tab to see the structure.
thanks for the hint about Portableapps.com
One more comment here, since I see that portability is being pushed down in the priority list.
The reason for portability for this particular application is that a person, or multiple people, can have the application and data on a USB drive, and work on a worship service without having to sit at the church computer. So to have a simple, common, directory structure means that files can be easily synchronized/copied.
Think of portability in this sense as an aspect of a collaborative environment.
Good call with this. I love portable apps and it woudl be great to plug in the songs on any pc and know you got the same verses and configs.
Another vote to portability. I am using the current version of OpenSong as a portable on a flash drive (see https://sourceforge.net/forum/forum.php?thread_id=1982817&forum_id=373378\) The problem with our current portable use is that RealBasic does not support relative paths. When we transfer a portable device to another computer and the computer assigns a different drive letter to the device, the opperator has to direct OpenSong to the OpenSong Documents Folder location on the portable device. Otherwise, OpenSong creates new Backgrounds, Sets, Settings & Songs folder in the default location ("My Documents" in PC) and saves your work in that location. We continue to use OpenSong with Portableapps anyway but it is a little confusing for those less computer savvy.
Another issue is that my version or portable OpenSong is PC dependent (though I bet someone with more Mac or Linux knowledge can figure it out.) Cross platform would be light years ahead. Great idea.