Beep6581 / RawTherapee

A powerful cross-platform raw photo processing program
https://rawtherapee.com
GNU General Public License v3.0
2.67k stars 306 forks source link

OSX: Fails to load when not in "/Application" #6580

Open TurtleWilly opened 1 year ago

TurtleWilly commented 1 year ago

Short description

RawTherapee.app fails to load when it is not installed directly in the system directory "/Applications", e.g. if user has it installed in "~/Applications" or on a separate partition.

On initial installation and the subsequent launch OS X's CoreServiceUIAgent reports File /Volumes/Storage/Applications/RawTherapee.app/Contents/MacOS/bin/rawtherapee-bin failed on rPathCmd /Applications/RawTherapee.app/Contents/Frameworks/libomp.dylib and Fails dylib check, afterwards RawTherapee.app via com.apple.xpc.launchd: Service exited with abnormal code: 126.

Moving the application bundle to /Applications fixes things. But moving it out again and it will continue to Service exited with abnormal code: 126, albeit the inital report by CoreServiceUIAgent no longer seems to happen.

Setting up an ugly softlink fixes the issue too:

$ cd "/Applications"
$ ln -s /Volumes/Storage/Applications/RawTherapee.app RawTherapee.app

Steps to reproduce

Expected behavior Installing the application in any user controlled path should not block it from launching, e.g. the user may not have write permissions in the system "/Applications" directory.

Additional information

Other useful information: n/a

Thanatomanic commented 1 year ago

Possible duplicate of https://github.com/Beep6581/RawTherapee/issues/6045

Benitoite commented 1 year ago

10.10 is highly ancient, and the installation procedures used there are no longer relevant to modern RawTherapee. You are experiencing expected behavior. ~/ is a relative path and not allowable in hardened runtime, which is used in RawTherapee.

the-real-tokai commented 1 year ago

"/Users//Application" or short "~/Applications" is nothing ancient and is not no longer relevant. RawTherapee feels broken. I can't install it for that reason either. I don't seem to have problems like that with any of my other apps. RawTherapee probably simply should use the proper bundle paths, not some random hardcoded system paths to lookup its dylibs, then it probably would just work?

Benitoite commented 1 year ago

@the-real-tokai There are no such thing as random hardcoded system paths in RawTherapee for macOS.

@Thanatomanic Duplicate of #6045.

the-real-tokai commented 1 year ago

@Benitoite:

the paths looks pretty much hard-coded to me in your launch script (RawTherapee.app/Contents/MacOS/rawtherapee).

…
app="/Applications/RawTherapee.app"
lib="${app}/Contents/Frameworks"
resources="${app}/Contents/Resources"
etc="${resources}/etc"
…
Benitoite commented 1 year ago

@the-real-tokai did you have a question about the current dev branch?

the-real-tokai commented 1 year ago

@Benitoite I did not ask a question (no question marks). I was only commenting on the situation in the latest public binary release that is currently available to us as macOS users. I have no idea how I could make use of your "dev branch": I just want to click an icon. 😎

Benitoite commented 1 year ago

Ok. Post a feature request if you wish that someone would write an installer for your purposes. Comments about releases are good for the discuss forum, whereas the GitHub crowd here usually focuses work on the dev branch.

the-real-tokai commented 1 year ago

@Benitoite Sorry, I'm not sure what you're on about. 😎

I'm merely commenting about the bug @turtlewilly has reported here. The public version of RawTherapee.app for macOS seems to use an odd setup with a shell script as its main executable. That shell script has absolute paths referenced. Which is probably what breaks things on typical "we don't have admin rights, so we can write to '/Applications'" setups.

Benitoite commented 1 year ago

Again, you are commenting on a years-old code structure that has nothing to do with current code... please, take a look at dev branch! It's /completely/ different!

Please check the following before you report:

  1. Search through the open and closed issues on GitHub for keywords related to your issue. Avoid creating duplicates. Many issues from the latest release version will already have been fixed.
  2. Read http://rawpedia.rawtherapee.com/How_to_write_useful_bug_reports to ensure you provide as much information as possible.
Benitoite commented 1 year ago

Also, it's worth noting that 5.9 will not have fixed that issue... it's actually doubled-down into /Applications with the addition of app notarization, of which the hardened runtime is a pre-requisite. The notarization of the package is done when the build has completed using an Apple team credential. Lesser packaging methods require a non-default methodology of launch in more recent macOS, and now in which gatekeeper polls the ticket at each launch, no longer offering a quarantined area for apps that have either had their tickets previously checked or that you have allowed into quarantine via clicking OK on an explicit malware warning. Also, macOS 14 is probably about go alpha, meaning potentially even greater access to system integrity features in the next few Ventura dot releases. I have always the goal in mind to maintain the app package a just click an icon type of app on modern macOS.

Lawrence37 commented 6 months ago

@Benitoite Is there a way to add a message to the "installer" or the application launcher to warn the user that RawTherapee must be installed in /Applications without a name change? That would cut down the number of people who are unaware of the requirements.

I also noticed that the main rawtherapee.com page does not give installation instructions. It would be nice if the page redirected to some instructions upon clicking one of the downloads or something like that... Thoughts @Beep6581?

Benitoite commented 6 months ago

@Lawrence37 Yes, I can add a message to the fancy dmg background to that effect. "To install RawTherapee, drag the RawTherapee icon into the Applications folder."

And "To run RawTherapee, open /Applications and double click on the RawTherapee icon."

Benitoite commented 6 months ago

https://github.com/Beep6581/RawTherapee/pull/6923 generated adds instructions in the fancy dmg background png and the text install readme file at the zip level.

The general instructions for macOS are:

Once you’ve downloaded RawTherapee, 
open Downloads and double click on the
new RawTherapee zip file.

Then double-click the RawTherapee dmg 
file inside the resulting folder.

When the fancy dmg pops up, drag the 
RawTherapee icon onto the Applications
folder to install it.

To run RawTherapee, open Applications 
and double-click the RawTherapee icon.
databu commented 1 day ago

Hello. Continuing from #7124 which I opened but which was marked as a duplicate of this here (which I hadn't found using search, maybe I searched for the wrong terms).

I'm sad to see that it's not planned to fix this. Whatever reasons are given here, other apps, including signed ones, run just fine from other locations. So that's my expectation, i.e. that I can move an app elsewhere and it still works. Since others here have reported the same, I don't think it's a very unreasonable expectation.

However, since devs seem to disagree to this, can at least the instructions about this be made clearer? In the .dmg, it currently says

To install RT, drag icon onto /Applications

Fair enough; however, basically every app says this either explicitly or by just suggesting with icons etc. And usually it means that this is suggested way to install, but as mentioned, the vast majority of apps supports running from other locations. So I wouldn't read this as "RT runs only from /Applications/". I think such a note should be added.

Or even better, the app could maybe check that it's run from "/Applications", and a note presented to the user if not? Rather than just crashing, which doesn't show anything to users who don't happen to run it from a terminal...

Benitoite commented 22 hours ago

My RT builds are not just signed, they are apple notarized and distributed outside of the app store, meaning the app is required to be hardcoded as to the location of its libraries. The instructions seem clear that you must launch from /Applications. The reasoning behind this is system integrity protection. Notarized RT is thereby allowed to run in the default macOS security state. The program may also be self-compiled and installed anywhere you wish...

databu commented 21 hours ago

The instructions seem clear that you must launch from /Applications.

Well, I thought I explained why it wasn't clear to me, but then probably I'm just a stupid user.

Benitoite commented 19 hours ago

Would you be able to suggest an update to the wording that would make the concept more clear?

databu commented 18 hours ago

How about

To install RT, drag icon onto /Applications (it will not start if in another location).

?