I'm looking into how the publisherid value is generated in Adobe AIR 1.5.3 applications. Reading: http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63 e3d118666ade46-7ff0.html it appears that I should not specify a publisherid value in my application descriptor file. It looks like with 1.5.3 and later, the publisherid is not specified by AIR - I'm guessing the OS assigns the publisher id value so? Is there any predictable way of figuring out what the publisherid is going to be? Will a publisherid change if I update an existing version of the application?
The reason I'm asking this question is for debugging purposes. I'd like to be able to tell users of my application _exactly_ where they can find log files for my app. I'm storing log files for my application under /Users/me/Library/Preferences/my.namespace.PUBLISHERIDGOESHERE/Local Store.
AIR generates your publisher ID from the certificate used to sign the AIR app. All of your apps you sign with the same certificate will have the same publisher ID. Just sign any app to see what it is.
If your certificate expires and you get another, your publisher ID may or may not be the same as the original; you'd have to wait and see what happens. In our case, the publisher ID from the new cert is different from the orignal publisher ID. AIR 1.5.3 attempts to resolve app update conflicts due to this problem.
According to the Adobe documentation:
As of AIR 1.5.3 the publisher ID is deprecated and no longer computed based on the code signing certificate.
I'm running a 1.5.3 AIR app, so the above applies to my application. So, it looks like the publisherid is computed at install time if its not done at compile/build time?
In the document I referenced above, it says:
New applications do not need and should not use a publisher ID.
My application is a new application. I've never deployed on less than AIR 1.5.3. Further on in that same document I see this:
An application published with AIR 1.5.3 can specify a publisher ID string in the application descriptor. You should only specify a publisher ID when publishing updates for applications originally published for versions of AIR prior to 1.5.3.
Perhaps I'm missing some nuance, but these two statements seem to be in conflict with one another.
I'm happy to include an publishId in my application descriptor file (as it would solve all my problems), but I just want to make sure I'm definitely doing the right thing.
If it is a new app., you should not need to set publisher ID in application descriptor.
Setting a publisher ID in application descriptor is mainly for backward compactibility, so that people can develop updates to their apps. published before 1.5.3.
If you set a publisher ID, you will need to set the same publisher ID for all your updates later on.
Tried adding a publisherID attribute in the application descriptor .xml file and I get this error when packaging the app:
error 103: application.publisherID is an unexpected element/attribute
I thought this might be because I'm running the 2.0 beta release of Adobe AIR, but I reverted back to 1.5.3 and I get the same results. I then thought that it might be related to the string I had in the publisherID attribute, so I copied the example from http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63 e3d118666ade46-7ff1.html, but I get the same error again. I had added the publisherID entry at the same level as the app id, so I'm pretty sure its in the correct hierarchy.
Anyways, this brings me back to my initial question - how is the publisherid value in the META-INF directory constructed?
That is becuase you are not using an AIR 1.5.3 SDK or AIR 2.0 SD
Earlier versions SDK doesn't accept namespace 1.5.3.
You need to set namespace to 1.5.3 or later, and use an AIR SDK 1.5.3 or later.