+
Skip to content

Add macOS .app cataloger #4010

Open
Open
@wagoodman

Description

@wagoodman

Be able to detect the package slack@4.44.65 from an .app directory (e.g. /Applications/Slack.app/). These directories tend to have a Info.plist file to discover the main package (probably from CFBundleName/CFBundleDisplayName/CFBundleExecutable and CFBundleVersion/CFBundleShortVersionString).

Example Info.plist file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>CFBundleDisplayName</key>
    <string>Slack</string>
    <key>CFBundleExecutable</key>
    <string>Slack</string>
    <key>CFBundleIconFile</key>
    <string>electron.icns</string>
    <key>CFBundleIdentifier</key>
    <string>com.tinyspeck.slackmacgap</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>Slack</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>4.44.65</string>
    <key>CFBundleVersion</key>
    <string>444000065</string>
    <key>DTCompiler</key>
    <string>com.apple.compilers.llvm.clang.1_0</string>
    <key>DTSDKBuild</key>
    <string>23F73</string>
    <key>DTSDKName</key>
    <string>macosx14.5</string>
    <key>DTXcode</key>
    <string>1540</string>
    <key>DTXcodeBuild</key>
    <string>15F31d</string>
    <key>LSApplicationCategoryType</key>
    <string>public.app-category.business</string>
    <key>LSEnvironment</key>
    <dict>
      <key>MallocNanoZone</key>
      <string>0</string>
    </dict>
    <key>LSMinimumSystemVersion</key>
    <string>11.0</string>
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <false/>
      <key>NSAllowsLocalNetworking</key>
      <true/>
    </dict>
    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>This app needs access to Bluetooth</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>This app needs access to Bluetooth</string>
    <key>NSCameraUsageDescription</key>
    <string>This app requires camera access to make video calls from your Slack workspaces.</string>
    <key>NSHighResolutionCapable</key>
    <true/>
    <key>NSMainNibFile</key>
    <string>MainMenu</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>This app requires microphone access to make video calls from your Slack workspaces.</string>
    <key>NSPrefersDisplaySafeAreaCompatibilityMode</key>
    <false/>
    <key>NSPrincipalClass</key>
    <string>AtomApplication</string>
    <key>NSQuitAlwaysKeepsWindows</key>
    <false/>
    <key>NSRequiresAquaSystemAppearance</key>
    <false/>
    <key>NSSupportsAutomaticGraphicsSwitching</key>
    <true/>
    <key>ElectronTeamID</key>
    <string>BQR82RBBHL</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleDocumentTypes</key>
    <array>
      <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
          <string>slacktoken</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>slack-key.icns</string>
        <key>CFBundleTypeName</key>
        <string>Slack token</string>
        <key>CFBundleTypeRole</key>
        <string>Shell</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
      </dict>
    </array>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>slack</string>
    </array>
    <key>ITSAppUsesNonExemptEncryption</key>
    <false/>
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLName</key>
        <string>Slack</string>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>slack</string>
        </array>
      </dict>
    </array>
    <key>NSHumanReadableCopyright</key>
    <string>©2025 Slack Technologies LLC, a Salesforce company. All rights reserved.</string>
    <key>NSDownloadsFolderUsageDescription</key>
    <string>This app saves downloaded files to your Downloads folder.</string>
    <key>ElectronAsarIntegrity</key>
    <dict>
      <key>Resources/app.asar</key>
      <dict>
        <key>algorithm</key>
        <string>SHA256</string>
        <key>hash</key>
        <string>c93e3c00799011e85ed7386fe8aa24c17766acf0e192ea7cda2b44e17eb3c8f3</string>
      </dict>
      <key>Resources/app-x64.asar</key>
      <dict>
        <key>algorithm</key>
        <string>SHA256</string>
        <key>hash</key>
        <string>36ce51975b9a7acd05928d7d1fbd486eabc7abd053e8a003837ba7df869e75a5</string>
      </dict>
      <key>Resources/app-arm64.asar</key>
      <dict>
        <key>algorithm</key>
        <string>SHA256</string>
        <key>hash</key>
        <string>4a0295f3fec08d3387395fe9984e6f432e4cf3911487bb1dcc8d20af1eda6358</string>
      </dict>
    </dict>
  </dict>
</plist>

Additional context:
Peeled off as work from #4006.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载