Allow running native apps from other directories.

It isn't always safe to assume `./` is the app directory, and removing
that assumption opens up options.

Requires at least Haxe 3.4, but I don't think Lime supports 3.3 anyway.
This commit is contained in:
Joseph Cloutier
2022-06-07 11:47:18 -04:00
parent 238428c7ea
commit 0e6bfa830b
2 changed files with 11 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
package lime.system;
#if (!lime_doc_gen || lime_cffi)
import haxe.io.Path;
import lime._internal.macros.CFFIMacro;
#if (sys && !macro)
import sys.io.Process;
@@ -135,11 +136,16 @@ class CFFI
__moduleNames.set(library, library);
result = __tryLoad("./" + library, library, method, args);
var programPath:String = ".";
#if sys
programPath = Path.directory(Sys.programPath());
#end
result = __tryLoad(programPath + "/" + library, library, method, args);
if (result == null)
{
result = __tryLoad(".\\" + library, library, method, args);
result = __tryLoad(programPath + "\\" + library, library, method, args);
}
if (result == null)

View File

@@ -3,6 +3,7 @@ package;
import haxe.io.Bytes;
import haxe.io.Path;
import lime.utils.AssetBundle;
import lime.utils.AssetLibrary;
import lime.utils.AssetManifest;
@@ -44,6 +45,8 @@ import sys.FileSystem;
rootPath = "";
#elseif console
rootPath = lime.system.System.applicationDirectory;
#elseif sys
rootPath = Path.directory(Sys.programPath()) + "/";
#else
rootPath = "./";
#end