Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Info.plist replaced during every launch (rendering code signatures invalid) #582

Open
indianajson opened this issue May 23, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@indianajson
Copy link

indianajson commented May 23, 2024

Environment

  • OS: macOS version 14.4.1 (23E224)
  • Winery version: 2.0.2
  • Master Wrapper version: 3.0.3
  • Engine version: x64 23.7.1-2
  • Hardware: MacBook Pro 15" 2019
  • Application/Game Name: N/A (see below)

Describe the bug

Whenever a wrapper is launched the Info.plist file is updated, even if unchanged. (It appears the actual behavior is that the wrapper is overwriting the Info.plist every time, which is also a problem). Info.plist is one of the files that cannot be modified once the app has been signed with an Apple Developer ID. Because the Info.plist is updated/overwritten upon every launch the code signature for the app becomes invalid and the app gets harassed by Gatekeeper (unless you remove the quarantine flag).

After much effort, I was able to sign and notarize a wrapper, but as soon as it is launched on another device the Info.plist is modified, which causes Gatekeeper to halt execution because the signature/notarization is no longer valid.

Note: I am aware I could simply tell users to remove the quarantine flag or wrap the app in an AppleScript to do the same, however, it appears one of the few remaining barriers to fully supporting Apple notarization is this Info.plist issue.

To Reproduce

  1. Create an empty wrapper named MyCoolWrapper.app.
  2. Add a program of choice.
  3. Show package contents and note down the "Modified" date of Info.plist.
  4. Wait a minute (in order to see the difference in time).
  5. Launch wrapper from MyCoolWrapper.app then close it.
  6. The Info.plist modified date and time will have changed to the last launch rendering the signature invalid, despite the fact that the contents of Info.plist remained unchanged. (The signature is invalidated because the modified timestamp changed).

Attempts to fix

I attempted about half a dozen different "hacky" solutions including: modifying the hex code in wineskinlauncher to remove the Info.plist link, setting Info.plist to read only, setting the Contents directory to read only, using chflags to stop modification. All of these attempts failed either because (1) wineskinlauncher could still replace the file or (2) permissions were so locked down Gatekeeper couldn't remove the quarantine flag.

At this time, I do not know of a workaround for this problem.

Expected behavior

Info.plist should only be modified in the event the Wineskin.app is used to modify a wrapper's settings. Info.plist should not every time the app is normally launched.

@indianajson indianajson added the bug Something isn't working label May 23, 2024
@indianajson indianajson changed the title Info.plist touched at EVERY launch (rendering code signatures invalid) Info.plist replaced during every launch (rendering code signatures invalid) May 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant