I’m trying to port my project from Windows to Mac (latest Mojave version), latest 2019 1.1 Xojo.
I have some code here to load some info from a text file:
f = GetFolderItem("").Parent.Child(“streets.txt”) #Else
f = GetFolderItem(“streets.txt”) #EndIf
Dim t As textinputstream = textinputstream.open(f)[/code]
This loads from the text file regardless if its a debug build or the actual compiled product. This fails on a Mac with a IOException 2 error, but works fine with Windows 10. The textinputstream line is the one that fails.
The text file i’m loading is in the same folder as the Xojo main project file and is in the project itself too. How would I change this to work on a Mac?
I recommend the FindFile function I use in a lot of MBS examples to find files in the same place as the app:
[code]Function FindFile(name as string) As FolderItem
// Look for file in parent folders from executable on
dim parent as FolderItem = app.ExecutableFile.Parent
dim file as FolderItem = parent.Child(name)
if file<>Nil and file.Exists then
parent = parent.Parent
[quote=454316:@Derek DiBenedetto]This loads from the text file regardless if its a debug build or the actual compiled product. This fails on a Mac with a IOException 2 error, but works fine with Windows 10. The textinputstream line is the one that fails.
The text file i’m loading is in the same folder as the Xojo main project file and is in the project itself too. How would I change this to work on a Mac?[/quote]
Don’t do this for the Mac. Apple have guidelines on specific locations that executable code and non-executable code can be stored in. While your application will work when breaching these guidelines, Apple’s code signing API some times throws hissy fits when files in the wrong place, which prevents you from releasing your application on the internet or via the Mac App Store.
This causes all kinds of grief as you only find out when you try to release your application; and at that point you realize you need to redesign your app if you want to ship it on the Mac.
Non-executable files should be stored in the “Resources” folder, and to create confusion, what Apple means in this context is non Mach-O binary files, so even script files should go in the “Resources” folder.
I figured as much. My app won’t be on the App Store (it’ll be sold elsewhere), so I won’t have to worry about this much. But Windows 10 is sort of the same way with non .exe writable files needing to be elsewhere too (AppData usually).
I apologize if I wasnt clear; code signing is a process that you must complete in order to publically distribute your app. If you dont code sign, most people will not be able to open your app. Regardless of where you sell it.
Yes, I see that. What exactly are the minimum steps required for this? I did check out Apple’s site, but it isn’t super clear. Do I need a $99 Dev Account to do this? I don’t plan on submitting the app to the App Store.
I can recommend Sam’s AppWrapper app, which will code-sign and notarise your app. It did mine the other day and rather to my astonishment the whole process was successful. I was faintly expecting an e-mail back from Apple saying my certs had all been cancelled and self-destruct had been initiated on all my Macs.