cad-editor/packaging/Info.plist
Kevin Griffin 5488d6c13f fix(macos): declare DWG/DXF UTIs, sandbox the QL appex, add signed-build script (#365)
Finder thumbnails and "Open with" registration fail in the field for
three compounding reasons: the app claims com.autodesk.dwg/.dxf but
never declares them (UTImportedTypeDeclarations was missing, so on
systems with no other declarer Launch Services can't bind the
extensions at all); the QuickLook appex only serves com.autodesk.dwg
while machines with AutoCAD installed resolve .dwg to its exported
com.autodesk.autocad.dwg (BricsCAD etc. likewise win with their own
UTIs); and the ad-hoc --deep signature carries no entitlements, but a
QuickLook thumbnail extension must be sandboxed
(com.apple.security.app-sandbox) before macOS will run it.

Import-declare both UTIs, claim and serve the AutoCAD variants too,
add the appex sandbox entitlements, and add
packaging/build_macos_signed.sh — a local mirror of the CI build-macos
job that signs with a Developer ID (hardened runtime, per-component
entitlements), notarizes and staples. DEVELOPER_ID=- reproduces the
CI ad-hoc build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 10:28:23 +03:00

119 lines
4.2 KiB
Text

<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Open CAD Studio</string>
<key>CFBundleExecutable</key>
<string>OpenCADStudio</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
<key>CFBundleIdentifier</key>
<string>io.github.HakanSeven12.OpenCadStudio</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Open CAD Studio</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>__VERSION__</string>
<key>CFBundleVersion</key>
<string>__VERSION__</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>© Hakan Seven</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>AutoCAD Drawing</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeIconFile</key>
<string>DWG</string>
<key>LSItemContentTypes</key>
<array>
<string>com.autodesk.dwg</string>
<!-- AutoCAD exports its own DWG UTI; when it is installed,
.dwg files bind to this identifier instead, so claim it
too or OCS never appears under "Open with". -->
<string>com.autodesk.autocad.dwg</string>
</array>
<key>LSHandlerRank</key>
<string>Alternate</string>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>AutoCAD DXF</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeIconFile</key>
<string>DXF</string>
<key>LSItemContentTypes</key>
<array>
<string>com.autodesk.dxf</string>
<string>com.autodesk.autocad.dxf</string>
</array>
<key>LSHandlerRank</key>
<string>Alternate</string>
</dict>
</array>
<!-- Declare (import) the DWG/DXF UTIs we claim above. Without a
declaration Launch Services cannot map the .dwg/.dxf filename
extensions to these identifiers on systems where no other CAD app
declares them, so "Open with", default-handler binding and the
QuickLook thumbnail extension all silently fail (#365). An *import*
declaration defers to any app that *exports* the same UTI. -->
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.autodesk.dwg</string>
<key>UTTypeDescription</key>
<string>AutoCAD Drawing</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>dwg</string>
</array>
<key>public.mime-type</key>
<array>
<string>image/vnd.dwg</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.autodesk.dxf</string>
<key>UTTypeDescription</key>
<string>AutoCAD DXF</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>dxf</string>
</array>
<key>public.mime-type</key>
<array>
<string>image/vnd.dxf</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>