2 apps in one bundle?

I have an updated app I need to distribute at work that deals with the reaction to the POODLE SSL vulnerability … (Providers are switching to TLS)

Unfortunately a few machines are still on 10.6. Most of the people are not Mac Users so don’t have Apple IDs and we don’t have an IT department so making sure all potential users are at least on 10.7 is a significant issue. Also I don’t know if any on 10.6 are running an old version of office that need Rosetta… We also don’t have a server (and dropbox or any external free could service not an option because of confidentiality).

Bottom line distributing new versions of the Xojo app internally is not trivial.

Right now, the new version of my app uses TLS1 connections for both email and downloading via HTTPS because that is all Xojo currently supports.

For machines running 10.7, compiling with an upcoming version would help future proof it (it will add TLS1.1 and TLS1.2 support see <https://xojo.com/issue/31126>) so I won’t need to redistribute soon if TLS1 was suddenly no longer sufficient.

But I still have those 10.6 machines to worry about…

What I would like to have is a bundle that has a version of the app compiled with 2013r3.3 and one with an upcoming version of Xojo.

What I would like to happen is when the user double clicks if they are on 10.6 the 2013r3.3 version launches , else the other one does…

I that at all possible? If so how?

  • Thanks,

How feasible is it to have only one APP, but directives that control what executes internally based on the OSX version

Not really no

That does not work since the new xojo app won’t run on 10.6.

  • Karen

What about considering the 2 version as “helper” apps and the “main” app is a 2013r3 app that depending on OS version launches one of the versions or eh ‘real’ app?

Is that possible in a single bundle?

  • Karen

Yes it’s possible, you’d do the two separate apps with the two different versions of Xojo, then use the older version of Xojo to create a ‘wrapper app’ (not App Wrapper).

Place the two versions in the helpers subfolder of the wrapper’s contents and then get the wrapper to launch the correct version depending on what version of the the Mac OS the user is running.

It would make one hell of a fat app!

You could make it smarter by containing compressed version in the resources folder and then expanding them (to a folder within Application Support) when you need them and getting the wrapper to launch from there.

Can you tell what folder that would be? I’ve not done helpers yet.


  • Karen

The folder should be called ‘Helpers’, but you can also use the ‘MacOS’ folder. Apple’s Code Sign v2 requirements dictate that executable code must be stored in the correct location (basically not the resources folder).

If you’re not signing it won’t matter
You couldn’t just generate 2 exe’s and move the contents into one simple bundle hierarchy as you’d have conflicts between versions of dylibs etc and the main exe would be or could be ambiguous

You could make one app that is a “starter” that all it does is figure out what version of OS X you’re running on then starts the other GUI app which is in Helpers in its own bundle in there

Makes for a really fat app and you still haven’t really solved the distribution issue