Hello,
I have a macOS app built with Flutter’s macOS target (native Xcode project). The app is unsigned (no Developer ID code signing / notarization). The .app bundle looks valid:
CFBundlePackageType = APPL
Unique CFBundleIdentifier
No LSUIElement or LSBackgroundOnly
Executable exists and is runnable
Placed at /Applications/MyApp.app (top-level), runs fine from Finder
However, it does not show up in Launchpad.
What I tried:
Remove quarantine:
xattr -dr com.apple.quarantine "/Applications/MyApp.app"
Force Launch Services registration:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f "/Applications/MyApp.app"
Rebuild LS caches:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Reset Launchpad DB and restart Dock:
defaults write com.apple.dock ResetLaunchPad -bool true && killall Dock
Verified bundle structure/type:
mdls -name kMDItemContentType -name kMDItemKind "/Applications/MyApp.app" → shows com.apple.application-bundle / Application
Questions
Is code signing/notarization required for an app to appear in Launchpad (even if it runs from Finder)?
What additional conditions cause Launchpad to skip an otherwise valid, unsigned .app in /Applications?
Are there deeper Launch Services or Dock database checks I can run to diagnose why this specific app is excluded?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi everyone,
I have a macOS application that uses Screen Recording permission. I build my app with an adhoc signature (not with a Developer ID certificate).
For example, in version 1.0.0, I grant Screen Recording permission to the app. Later, I build a new version (1.1.0) and update by dragging the new app into the Applications folder to overwrite the previous one.
However, when I launch the updated app, it asks for Screen Recording permission again, even though I have already granted it for the previous version.
I don’t fully understand how TCC (Transparency, Consent, and Control) determines when permissions need to be re-granted.
Can anyone explain how TCC manages permissions for updated builds, especially with adhoc signatures? Is there any way to retain permissions between updates, or any best practices to avoid having users re-authorize permissions after every update?