Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

WordHopper

A stylish arcade word game for DOS (and more) · By kokoscript

macOS Build is "damaged and can’t be opened"

A topic by Jessica created Jul 17, 2023 Views: 319 Replies: 5
Viewing posts 1 to 2

Hi there, the macOS version doesn't currently work, due to a combination of modifying a signed copy of DOSBox Staging, which has code signing/notarization, and removing/commenting the bundle identifier from the Info.plist.

You'll need to set an actual bundle identifier (I edited mine to `com.kokoscript.wordhopper`) and either remove the code signing as it stands, or sign it yourself with a developer certificate to make this work.

Once I'd edited Info.plist to reinstate a bundle identifier, I made it run on my local machine, with:

# remove any extended attributes and resource forks
xattr -cr ~/Downloads/WordHopper.app && \
codesign --force --deep -s - ~/Downloads/WordHopper.app

Note that this is NOT SUFFICIENT FOR DISTRIBUTION, the resulting app is signed to work on the local machine only.

Developer (1 edit)

Thanks for letting me know! I definitely should've tested on another Mac before release, but I was in such a rush -n-

I'm contemplating whether or not I should even leave the Mac version up until it's fixed, but in the meantime I've updated the project page with a note linking here.

EDIT: Also, regarding the bundle identifier, it looks like that's commented out in a fresh copy of DOSBox Staging to begin with. Not sure why :s

Hmm, maybe the bundle identifier is a red herring, but the code signing is definitely the bigger issue.

I would say your options are either to sign it, or remove the code signature entirely, leaving you with a Mac app which users will need to bypass security checks (i.e. right click and choose open, then say yes to the prompt) to run.

Developer

I've just pushed a fix for the macOS build which removes the signature. I wasn't able to test it on another Mac (every other one I've got runs Mojave or earlier), so there could be some lingering issues. Thank you for bringing this to my attention in the first place!

I just tested this on my Apple silicon Mac (M1 mini) and it doesn't run even if I right click it. I had to manually ad hoc sign it to allow it to run, because Apple silicon outright requires signatures even on your own local builds to run them. In fact, Xcode ad hoc signs everything it links these days. (I've been told I overexplain things, sometimes even to people who already knew those things. Maybe it's sometimes helpful for information to be available in lots of places, though. Especially with Google circling the drain as it is.)

I'd be willing to help with notary signing, but you should probably do that yourself if you can afford it, since the signature does expose the name of the person or team that signed the app, unless you're using ad hoc signing, then it's an anonymous machine specific signature.

Just a minor hint that seemed to pop up when I was checking the signature myself, it seems it may be objecting to a signature having been applied to the DOSBox bundle prior to the settings files and resources being inserted. It needs to be re-signed after everything is embedded proper. Hope this helps somewhat. (And this would definitely be breaking the ad hoc signing if you were just using the link time auto signing of the bundle.)

Developer

Oh, that's not good to hear; I don't have any AS Macs around (nor the funds to buy one), so if app security works differently from an Intel Mac, then I can't test that at all :(

Just double-checking, this on the latest v1.00-1 build and not the one from when the game was first released, correct? It shouldn't have a signature at all (though to be fair, I never recieved confirmation from anyone that it worked after it was updated). I was under the impression that unsigned apps would still run, but only with Gatekeeper disabled and opened via the right-click menu. But if this isn't the case with newer Macs, then I may just remove the build entirely as there's too much time, effort, and cost involved in making it work properly.