What ctypes did you try? I am launching exe's with ctypes in Windows with ShelExecuteEx, on Gtk (Unix) with g_app_info_launch_uris, and on OSX with popen open. I use these (instead of nsIProcess) because I needed it launched detached, meaning that the launching process is not waiting for response of close or etc from the launched process. On unix/linux/mac nsIProcess launching causes pid pollution. Meaning the pid of the launching process will be found on the launched process assets.
To launch with regular nsIProcess do so like this:
var procFinned = {
observe: function (aSubject, aTopic, aData) {
console.log('bash nsIProcess completed');
}
};
var nsifile = new FileUtils.File('c:\blah\blah.exe');
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
var args = [];
process.init(nsifile);
process.runAsync(args, args.length, procFinned);