IronyModManager
IronyModManager copied to clipboard
Installer versions
Describe the bug Application unable to run in MacOS Catalina
To Reproduce Steps to reproduce the behavior:
- Set executable bit
- Launch
- Watch it complain about lack of developer signature
- Follow standard producer to allow
- Watch it need permission to open a .dylib and then bomb because you can't follow the accepting procedure for non-executables
Expected behavior The app should launch
Screenshots
Logs
Not a log, however:
... libhostpolicy.dylib) not valid for use in process using Library Validation: library load disallowed by system policy
Version:
- OS: Catalina
- Irony Version 1.5.53
Additional context Trying to go at this one by one is not a good idea. Easiest solution is to notarize the release. Despite what articles like https://appletoolbox.com/everything-you-need-to-know-about-app-notarization-in-macos-catalina/ claim, running it from the Terminal is not a solution when the binary in question is then opening additional libraries. I would recommend the following resource: https://scriptingosx.com/2019/09/notarize-a-command-line-tool/
Failing notarization, I'd recommend adding a note that Catalina and above are not supported/will not run without extensive manual work by the user.
OSX is becoming a major pain I see. I get the gist of it but most of it is alien to me as I've never used a OSX machine in my life. Even the initial instructions on how to run it were written by a contributor. Applying for some developer program and certificates are out of the question for me at the moment. I promised myself to keep this program free of spending any amount of $ on its development (in the spirit of open source).
Anyone willing to find an alternate way to make it work for catalina users is welcome. I do not have access to an OSX machine and time to spend on this issue. In the meantime added this into the FAQ and linked towards this ticket.
So in theory you'd need to do the following? Settings -> Security and Privacy -> Allow apps downloaded from... Then right clicking the app and choosing "Open" and clicking allow anyway on a dozen or so files.
So in theory you'd need to do the following? Settings -> Security and Privacy -> Allow apps downloaded from... Then right clicking the app and choosing "Open" and clicking allow anyway on a dozen or so files.
That is what I thought, but the process is a bit more involved. Once you've allowed the app itself it will then deny it with the delete/cancel window.. Then you have to go into settings -> Security and Privacy and find where it shows the last thing to be denied. In reports of similar issues with other programs on GitHub that use c# and dynamic libraries in the same way the process can take 15-30 minutes because it is every library it needs to open.
That problem is unique to the methodology as other apps that do not use it only need the app itself, and thus you don't even need to go into Settings but instead use the right-click -> open -> allow option and you're done.
I promised myself to keep this program free of spending any amount of $ on its development (in the spirit of open source).
Side note: OSS isn't about not spending money.
In that case I'm gonna leave the FAQ link towards this ticket until another solution is found. Despite having a rather low osx userbase of about 1% I will still deploy in the same form osx builds.
As for what OSS is, it's really opinionated and not worth discussing. To me in this case it's a promise of not spending any additional amount of $ than what I already have at my disposal since I'm putting hundreds of hours into this app. And as long as I'm working on this project I'm going to keep it that way. I've ignored several libraries just because of this very promise that I made to myself.
In end the requirements to notarize an app are ludicrous at best. From what I read either Apple really wants to close OSX like IOS or it's a really crappy implementation in the end.
I’ve managed to get a bundle together that allows you to launch this as any other app, but I'm not sure how to submit it into your Github structure - To get it to work, there's a bit of a change in the packaging structure (there's a couple of nested directories that need to be created) and an Info.plist file. I'm not sure if it just works for me because I went through the above process first on an earlier version either. (It also doesn't mean that the app is a signed app, but hopefully at least it's a single allow.)
I'm attaching the Info.plist file - it's pseudo-XML, but actually order-based: Key values follow key names. The CFBundleSignature entry may need to be changed/registered (it should be unique), and of course the CFBundleVersion entry should change with each version update.
The full structure would be:
- IronyModManager.app
- Contents
- Info.plist
- Resources
- Empty. (It's an empty directory.)
- MacOS
- Current files.
- Contents
Where the 'MacOS' folder is the current distributed directory.
Hello thanks. I'll have to adjust my publish procedures a bit to make this work and probably update Updater app to understand this structure.
The deploy/package (not committed) and publish scripts are actually responsible for creating the deployment structure so I'll have to rework this for macos version (you can see the publish script in the publish directory).
No problem, and thanks for actually supporting Mac - so many times mods and mod managers are never even available.
Note to self.
After some googling around found these helpful links and packages to help in making app bundles and installers: https://avaloniaui.net/docs/packing/macOS https://github.com/egramtel/dotnet-bundle https://github.com/qmfrederik/dotnet-packaging
Thank you @DanStaal , I just used your information to manually make a bundle for myself and works perfectly!
Out of curiosity since I've never used a mac before. How do you guys now launch Irony? This is for the documentation. I'm assuming you still have to set the chmod +X permission or does with this structure mac os immediately add proper chmod permissions?
With the app bundle you still need to set the chmod +x on the executable, but once that's done you can double-click on the 'IronyModManager.app' directory/bundle and it launches like any other macOS app.
So seems like this will be the future setup then:
- OSX Portable version (remains as is)
- OSX Installer version (using the setup you posted here)
- Linux Portable version (remains as is)
- Linux Installer Version (using the packaging setup with the help of dotnet packaging)
- Windows Portable version (remains as is)
- Windows Installer version (remains the same) No ETAs though for this one.
Not sure if this helps but for anyone wanting a workaround for now running the following command will remove the quarantine flag from all the files allowing it to run (you will still need to chmod +x the main file)
sudo xattr -r -d com.apple.quarantine <path_to_portable_install_on_macos>
src: https://derflounder.wordpress.com/2012/11/20/clearing-the-quarantine-extended-attribute-from-downloaded-applications/
Just quoting info about various linux packaging:
I'd lean towards tar.gz where possible
though wouldn't hurt to have an rpm and deb available for users of redhat derivatives and debian derivatives respectively
redhat users could then use rpm -I <whatever.rpm> to install irony
debian users could dpkg -i <whatever.deb> to install irony
and everyone else gets a tarball which are much easier to deal with than zips on non-windows platforms
From discord:
For anyone having trouble running Irony on recent Mac OS because the OS complains about files from an unidentified developer... the problem seems to be that if you download the file with safari, it (and all unzipped files) are marked with the quarantine flag.
To remove this flag, open a terminal and go the folder that contains the folder with irony in it (in my case, IronyModManager) and run this command:
xattr -r -d com.apple.quarantine IronyModManager
That should remove the quarantine flags from all files in the folder. Doing this allowed me to launch it without trouble.