Skip to content

Strange character in Info.plist file causes problems with packaging automation #2527

@grahampugh

Description

@grahampugh

Describe the bug
There is a strange character in the Info.plist file of Quicksilver.app, on line 220. the string appears empty in some editors, but when pasted into GitHub, the non-printable character appears:

			<key>NSKeyEquivalent</key>
			<dict>
				<key>default</key>
				<string>�</string>
			</dict>

Unfortunately, this character causes parsing of the plist file using python's plistlib module to fail.

This causes the AutoPkg recipe which packages up Quicksilver for import into Mac software enterprise management tools such as Jamf Pro and Munki to fail. See autopkg/homebysix-recipes#297 for more details.

For information, AutoPkg is the most-used solution for automating Mac software management in the enterprise.

I assume this character is an unseen artefact not required for the software to run, and could be safely removed?

To Reproduce
Steps to reproduce the behavior:

  1. Install python 3 on a Mac.
  2. Download and mount the Quicksilver 1.6.1 installer DMG
  3. Run python3.
  4. Run the following commands to induce the error:
>>> import os.path
>>> import plistlib
>>> app = '/Volumes/Quicksilver/Quicksilver.app'
>>> plistpath = os.path.join(app, "Contents", "Info.plist")
>>> with open(plistpath, "rb") as f:
...     info = plistlib.load(f)
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/Library/AutoPkg/Python3/Python.framework/Versions/Current/lib/python3.7/plistlib.py", line 950, in load
    return p.parse(fp)
  File "/Library/AutoPkg/Python3/Python.framework/Versions/Current/lib/python3.7/plistlib.py", line 260, in parse
    self.parser.ParseFile(fileobj)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 220, column 12

Expected behavior
plistlib should be able to read values from Quicksilver.app/Contents/Info.plist.

What version of macOS?
macOS 10.15.5

What version of Quicksilver?
1.6.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions