How can I get Framwork Folder

Hello,

Now, I’m working to user MBS SQL Plug-in on an existing project. It work fine but I need to add separately library to connect to my MySQL server.

I added copyfile

  • for MacOS to framwork folder to put libmysqlclient.18.dylib to /Applications/MyApp.app/Contents/Framwork/
  • for Windows to framwork folder to put libmysql32.dll and libmysql64.dll c:\programs\MyApp\MyApp Libs\

How can I easy get the framwork folder ?

I looked on SpecialFolder, but I don’t found the framwork folder

Regards

Arnaud

Use a CopyFile step after the build.

Hello Michel,

The CopyFile work fine, but for example on my Mac, I can’t success to get the library withe the code :

[quote]dim f as new FolderItem
db.SetFileOption db.kOptionLibraryMySQL, f.Child(“MyApp.app”).Child(“Contents”).Child(“Frameworks”).Child(“libmysqlclient.18.dylib”)[/quote]

but the file exist on the folder.

I understand why it doesn’s work. the debug app haven’t the same name. Debug MyApp.app

You should probably get the App.ExecutableFile property, which is a FolderItem pointing to the exe. That way, you do not have to know how your app is named. Like this:

dim f as FolderItem #if TargetMacOS f = App.ExecutableFile.Parent.Parent.Child("Frameworks").Child("libmysqlclient.18.dylib") #else f = App.ExecutableFile.Parent.Child("FolderNextToYourExe").Child("libmysqlclient.18.dll") #endif

It is not that.

Do yourself a service, and avail yourself of TPSF at https://forum.xojo.com/15318-modules-for-you-updated-12-17/0

It will give you access to Contents no matter the build debug or not. Mac or Windows.

Yet, this reports false here :

dim f as folderItem = TPSF.Contents.child("Frameworks").child("InternetEncodings.dylibs") system.debuglog f.shellpath system.debuglog str(f.exists)

I strongly suspect it may have to do with permissions. You may need to set the permissions for your dylib with chmod 777, which is unlimited access.

Thanks Thomas,

I found app.executablefile.name on this thread https://forum.xojo.com/19415-how-to-get-application-name/0

It’s works with

dim f as new FolderItem db.SetFileOption db.kOptionLibraryMySQL, f.Child(app.ExecutableFile.Name+".app").Child("Contents").Child("Frameworks").Child("libmysqlclient.18.dylib")

but i prefer your relative path!

There is a Frameworks path in TPSF that will get you to the right place.
https://github.com/devtimi/TPSF/