views:

681

answers:

6

Hi there,

I'm writing a simple Safari Extension, and I'm trying to figure out how to get the update mechanism working. Apple's documentation here is delightfully vague:

http://developer.apple.com/safari/library/documentation/Tools/Conceptual/SafariExtensionGuide/UpdatingExtensions/UpdatingExtensions.html

And here's my manifest, based on that documentation:

<?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"&gt;
<plist version="1.0">
<dict>
    <key>Extension Updates</key>
    <array>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>net.rickyromero.safari.shutup</string>
            <key>Team Identifier</key>
            <string>TMM5P68287</string>
            <key>CFBundleVersion</key>
            <string>1</string>
            <key>CFBundleShortVersionString</key>
            <string>1.0</string>
            <key>URL</key>
            <string>http://rickyromero.net/misc/SafariExtensions/ShutUp.safariextz&lt;/string&gt;
        </dict>
    </array>
</dict>
</plist>

I don't know where to get "YourCertifcateID," for example. And when I increment the values for CFBundleVersion and CFBundleShortVersionString, it doesn't trigger an update. I know Safari is hitting my manifest though, because I'm watching HTTP traffic.

Thoroughly stumped. Any ideas, guys?

+3  A: 

Team Identifier should be Developer Identifier

The Developer Identifier is taken from the string at the top of the Extension Builder window, Safari Developer: (DEVELOPER_IDENTIFIER) EMAIL

matsadler
Just tried changing that, but unfortunately it didn't do it... It still doesn't prompt to update when I increment the version number.
Ricky Romero
Here's the my manifest, which does seem to workhttp://matsadler.github.com/deanimator/updates.plistThe Developer Identifier is taken from the string at the top of the Extension Builder window, `Safari Developer: (DEVELOPER_IDENTIFIER) EMAIL`The other thing I tried was opening the file with Property List Editor.app to check it's a valid .plist, although that doesn't seem to be a problem for you.
matsadler
Alright, thanks for your help. I examined it a little more closely and my identifiers weren't matching up... Should work just fine now. :-)
Ricky Romero
/me files a documentation bug report…
Wevah
A: 

I have the same problem, and still haven't gotten this working.

Daniel Bergey
+1  A: 

Hi,

Similar issue. Safari sees the update (I have set updates to manual) but clicking the install button when an update is detected does nothing. If I then check the "Install Updates Automatically" the update process begins and completes but the new version is not installed. I can see the traffic to the webserver so I know a request has been made.

EDIT: Fixed! Permissions were wrong on the web directory where the extension was stored, fixed this and it installed manually and automatically. Everytime I rebuild the extension and save to my web serving folder I have to set the permissions.

2nd Edit: If you want to look at an existing extension, download it or get it from your Safari extensions folder then change the .safariextz to .xar then open/extract with Pacifist to view the code and if you want add it to the Extension Builder app.

Mat
A: 

I have the same problem as you had, Mat.

Safari sees the update but I can't fix it. I tried setting different permissions but it's not working too. Any idea? Server side problems?

Thanks!

EDIT: Don't know why, but it's working now ;)

inocuo
A: 

Mat: What did you have to set the permissions to? I'm having the same issue as you with Safari seeing the update but not installing it...

adam.k
A: 

I had the same problem, the PLIST file was like the one above and here is how I resolved my problem:

  • Had an incorrect Developer Identifier (had a 5 instead of a Z). Duh!
  • Permissions, which are rest every time you update the file:

    chmod 0444 EXTENSIONNAME.safariextz

michael