Catalina changes executable to non-executable on download

I’m sure there’s a “how-to” already somewhere on this, but other than signing, is there anything I can do to stop Catalina from changing the exectuable in my .app package into non-executable?

The issue I’m having is exactly like this video below (someone else’s program), and the fix works also with my .app but obviously I don’t want customers to have to go through this. A control-click to open is easy enough, but not running terminal!

https://www.youtube.com/watch?v=i9TtoOJjGpU

Eh, what are you doing? Catalina doesn’t change your executable into non-executable.

And you should sign and notarize your software anyways. Even if we don’t know what the notarization really does.

Did you watch the youtube link? It’s doing exactly the same thing to my app that is happening to the poster’s app.

Doing the chmod +x on the executable fixes the problem. I can’t find anything else about this specific issue on the 'net.

No issue on Mojave, just Catalina, and ONLY when the file is downloaded from the 'net.
If I copy it from my Xojo folder to the Catalina computer, there’s no issue (or transfer via dropbox).

Have you done any research on properly packaging, signing, and notarizing a Mac app?

I would suspect since that behavior is so crazy (I can’t get any google results about this behavior), the developer of the app you’ve pointed us to is doing something wrong. You’ve likely got something in your release process that has the same effect. By the way, if you skip the step “codesign the app” that’s the very first place to look.

Walk us through it. From pressing Build in Xojo, to running into “Application cannot be opened” what, step-by-step, is your release process?

The execution flag must be applied after the file creation, so, or Catalina is not doing it at extraction time for security reasons, or the flags are not stored at compressing time. But, what’s the behavior of Catalina with DMGs? Why not a DMG?

I have, but up until Catalina, only the control-click open procedure was required. I understand that Catalina is very different, but I was hoping to avoid signing up for a developer license and all that BS. However, if there is no other way around it, then I guess that’s what I have to do.
N.B. I am NOT a Mac guy, my decades of programming are on Windows. I only came to Xojo because of it’s cross-platform capabilities. I don’t know what most Mac folks already know - never used Xcode or any of that stuff.

I can post a video of what happens when I try to run the app, but it is as I said, the executable has lost it’s +x flag. Not sure if that’s something you need more details on?

I press build, it creates the .app. The app runs fine on Mojave, but when downloaded onto a Catalina machine, the executable is changed to non-executable.

Let me know what else you’d like to know?

I appreciate all the help you’re offering to this Xojo newbie!!

Check out my app Chmod Scout, in the MAS App Store. It’l let you set the Executable bit quite easily.

https://apps.apple.com/us/app/chmod-scout/id1485122366?ls=1&mt=12

That said, Catalina requires that apps be signed, and notarized, for distribution.

For non-pro purposes, in computers with gatekeeper temporally disabled, I believe that even Catalina lets you run sideloaded apps.

But avoid zip, pack your app in a DMG. One can be easily done, putting your app in a temporary folder, and with disk utility, File -> New Image -> Image from folder, you can create one.

But I never tried Catalina. Do a test.

From what I see here under Catalina, an unsigned app triggers a dialog saying that the app could not be verified as not containing malware, and the only option is to trash it.

I don’t have that probkem

The rules are complex, as they depend on whether

  • you are running macOS 10.13, 14, 15…
  • your app is signed
  • your app is notarized
  • your app was signed before or after the June 2019 cutoff date
  • how you got the app onto your computer, which affects whether it’s quarrantined.

I recently had an experience where my app which was code-signed but not notarized, would open and run fine on Catalina if you right-clicked and chose “Open” from the popup menu, but would not run if you just double-clicked.

I understand that, Michael. That all makes sense.

What I want to know at this point I guess is… where’s the documentation on Catalina removing the executable bit on the executable in my .app package?
In what scenarios does it do this?

Is there a simple fix for this or is notarizing the only way?

Sounds like nobody here has run into this specific problem so I’m in uncharted territory!

How do you build your app? Where can we download your app? How do you distribute your app? You should do this in a dmg in any case.

And no, Catalina doesn’t remove the executable bit.

I’m not sure what people here mean when the ask “how do you build your app?”
I press build in Xojo and out pops an .app.
I zip it and put it on the net.

Here’s a link:
http://mindplacesupport.com/download/927/

Why does it need to be a dmg? Will that fix this issue?

I downloaded your app and the error message is super odd. Is this a 64bit app? What happens for a “Hello World” app? Which version of Xojo do you use?

The Frameworks folder contains the Xojo framework XojoFramework.framework.

In my app I have an alias to Resources, a Versions folder and an alias to Xojo framework. Your app has a non-alias Resources folder, a Versions folder and a non-alias XojoFramework.

Do you build your app on Windows or Linux? In no way can this happen on a Mac.

I appreciate you all looking at this, but I feel like you’re barking up the wrong tree.

If you don’t mind, can we discuss the specifics, which I’ve detailed before? Sprvificslly, again, why Catalina changes the executable flag.

  1. Program works fine on any version of MacOS, including Catalina.
  2. The ONLY issue with Catalina is that when the file is downloaded, the executable flag is removed from the executable file within the .app package.
  3. This problem only happens on Catalina.

Nope, we are not barking at the wrong tree. The problem only happens for you so you must be doing something special. Otherwise, everyone of us would have started screaming with the first beta of Catalina. Which we all did but because of other problems and not the executable bit.

Ok, well at least one other person has this issue, the person in the video I linked in the first post.

I was hoping that someone else had run into this, or at least knew more than I do about Catalina to know why it would be clearing the executable flag ONLY for downloaded apps.

I’ll keep searching…