Daniel Veditz wrote:

> Mike Potter wrote:
> 
> 
>>Here is the script which works for Linux...
>>
>>---------------------------------BEGIN---
>>initInstall("Mozilla Calendar", "/Mozilla/Calendar", "0.7");
>>
> 
> 
> "/Mozilla/Calendar" is not a great choice for a registry name. The main
> problem is that initial '/' turns it into an absolute registry path, but
> also because the name is pretty generic. If someone else writes a Calendar
> app they might well pick the same name and then both apps could confuse each
> other over which one was up to date.
> 
> Generally I recommend something like <company or author>/<product>, so in
> your case perhaps "OEOne/Calendar" (note no leading slash). If you want to
> claim to be the "one true calendar" you could try squatting on plain
> "Calendar". That's likely to be what mozilla.org would use for whatever
> calendar package they might ship. I know OEOne donated source to
> mozilla.org, but I suspect what you're shipping doesn't match exactly.


Actually, this install.js is for the Mozilla calendar. (Its in CVS at 
mozilla/calendar) OEone doesn't use XPI since we only run on Linux. (I'm 
trying to convince people here that we should still use it).

 
> 
> 
>>calendarDir = getFolder("Chrome","calendar");
>>
>>setPackageFolder(calendarDir);
>>
>>var err = addDirectory("", "resources", getFolder("Chrome","calendar"), 
>>"" );
>>
> 
> 
> Replace the getFolder() call here with the calendarDir variable you've
> already got, or even, since you've set the default package folder, use the
> most abbreviated form: addDirectory("resources");
> 
> 
> 
>>addDirectory("", "components", getFolder( "Components" ), "" );
>>
> 
>>if ( err == SUCCESS ) {
>>
> 
> 
> You check one return value and not the other. Maybe don't check either
> addDirectory call directly and instead do
> 
>   var err = getLastError();
>   if ( err == SUCCESS ) {
> 
> 
> 
>>   var calendarContent = getFolder(calendarDir, "content");
>>   var calendarSkin    = getFolder(calendarDir, "skin");
>>   var calendarLocale  = getFolder(calendarDir, "locale");
>>
>>   var returnval = registerChrome(CONTENT | DELAYED_CHROME, 
>>calendarContent );
>>   var returnval = registerChrome(SKIN | DELAYED_CHROME, calendarSkin, 
>>"modern/");
>>   var returnval = registerChrome(LOCALE | DELAYED_CHROME, 
>>calendarLocale, "en-US/");
>>
> 
> 
> You're not looking at returnval; just drop it and unclutter your script.


The returnval's are only there for when I needed to alert them.


> 
> Eventually you might want to ship chrome archived in jarfiles. If that's a
> possibility you might want to structure your script now to support that,
> which requires that the second arg 'folder' object point at the archive
> 
>    registerChrome(CONTENT, calendarDir, "content");
>    registerChrome(SKIN,    calendarDir, "skin/modern");
>    registerChrome(LOCALE,  calendarDir, "locale/en-US");
> 
> I've dropped the DELAYED_CHROME chrome type because I'm not sure why you
> need it. Yeah, users will probably have to restart anyway to use the new
> package because of XUL caching, but someday it may work.
> 
> 
> 
>>   err = performInstall();
>>   if ( err == SUCCESS ) {
>>     alert("The Mozilla Calendar has been succesfully installed. \n"
>>       +"Please restart your browser to continue.");
>>
> 
> 
> At this point you could add a refreshPlugins() call. SHOULD if you take out
> DELAYED_CHROME because you don't want the user trying to start up your app
> if the components aren't registered yet. Unlikely case, but if XUL caching
> is turned off this could happen.
> 
> 
>>I was thinking that all the files for both installs will go in one XPI, 
>>so I thought that I had to know the platform in order to say something 
>>like, "If you're on Windows, then install the dll files, otherwise we 
>>don't need to install them."
>>
> 
> 
> You could do that, but as a modem user I think it's unkind to make people
> download binaries they don't need. The platform property is most useful if
> the thing you're installing is overwhelmingly cross-platform with a small
> platform-specific component, or if you make platform-specific packages but
> want to re-use the same script to keep development/testing effort down.


I think that describes the calendar quite well.  The XUL/JS/CSS stuff is 
all XP, but there are specific items for each platform when it comes to 
the XPCOM.


> 
> If you do ship binaries for multiple platforms you need to have separate
> wincomponents and linuxcomponents directories in your script above in
> addition to the extra files windows puts in the "Program" directory.
> 
> -Dan Veditz
> 
> 


Reply via email to