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
Create an empty wrapper named MyCoolWrapper.app.
Add a program of choice.
Show package contents and note down the "Modified" date of Info.plist.
Wait a minute (in order to see the difference in time).
Launch wrapper from MyCoolWrapper.app then close it.
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.
Environment
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 theInfo.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 theInfo.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
MyCoolWrapper.app
.Info.plist
.MyCoolWrapper.app
then close it.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, usingchflags
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.