Page 1 of 1

Growl[1.2] installation pops up when helper app is stopped.

Posted: Thu Oct 15, 2009 2:36 pm
by Kiranb0007
Hi,

I am planning to integrate Growl with installer framework in my application. I am using version 1.2 as my application is 64-bit with 10.6 support.
In the text below "Growl running" would mean that the GrowlHelperApp.app is running unless which the alert is not displayed to the User. Running/stopping can be due to User stopping the Growl in preference pane or killed via Activity monitor. The observations below are by stopping in Preference pane.

Here are the 3 scenarios I am testing :
1. Growl is not installed.
When my application posts an event, Growl offers an installation dialog. If User agrees, it allows the User to install for current/all User. However, this option is not available when the Growl distributed directly is installed. It always installs for all User.
So should I be worried about this deviation? What if two different versions of Growl in installed in two different locations? i.e. in ~/Library/PreferencePanes and /Library/PreferencePanes/

2. Latest Growl is installed and growl is not running.
In this scenario, the framework provides an installation option even thought the required version is installed. Is this not a bug?
Is there any way I can start Growl if it is not running to prevent this behavior?
I feel that User would never opt to install again as he is aware that he has the latest version.

3. Growl already installed and running.
This works. No issues.

Thanks in advance,
Kiran

Re: Growl[1.2] installation pops up when helper app is stopped.

Posted: Thu Oct 15, 2009 9:45 pm
by boredzo
Kiranb0007 wrote:Latest Growl is installed and growl is not running.
In this scenario, the framework provides an installation option even thought the required version is installed. Is this not a bug?


What version of Growl do you have installed, as reported in the About tab in the prefpane in System Preferences (above the Credits view)?

What is the full POSIX path to that prefpane?

Re: Growl[1.2] installation pops up when helper app is stopped.

Posted: Fri Oct 16, 2009 4:39 am
by Kiranb0007
boredzo wrote:
Kiranb0007 wrote:Latest Growl is installed and growl is not running.
In this scenario, the framework provides an installation option even thought the required version is installed. Is this not a bug?


What version of Growl do you have installed, as reported in the About tab in the prefpane in System Preferences (above the Credits view)?

What is the full POSIX path to that prefpane?

Growl version is 1.2 in about tab. I have also checked the Info.plist of the Prefpane and helper app. It is 1.2. Also in the +frameworkInfoDictionary method returns the NSDict with Version set to 1.2.

The observation is valid when Growl is installed at ~/Library/PreferencePanes/ or /Library/PreferencePanes/.

Also every time the install option is popped up, it opens a Finder where Growl Pref pane is getting unzipped. The folder would have Growl.prefPane.zip and Growl.prefPane. The path in my Mac is /private/var/folders/Ta/QweGfdISD-GFer09fErDFr+++TI/-Tmp-/GrowlInstallations/ABCD5EFG-3568-2S8G-21ED-SD42DF4E21SD/. Will this be fixed in future?

Re: Growl[1.2] installation pops up when helper app is stopped.

Posted: Fri Oct 16, 2009 2:52 pm
by smajor
Actually, I've seen #2 as a regular growl user.

I have a TON of start up items. If Growl (1.2) has not yet been started, but is properly installed, and I fire up something like Adium, it offers to install Growl.

If I give my Mac time to finish it's startup routine, this does not happen.

Re: Growl[1.2] installation pops up when helper app is stopped.

Posted: Wed Oct 28, 2009 5:28 am
by Kiranb0007
I was having a glance at the Growl code. In the method notifyWithDictionary:, it appears that if the check for Growl running returns negative, it is coded to request installation. Here is the code snippet of the function that is responsible to post the notification :

Code: Select all

+ (void) notifyWithDictionary:(NSDictionary *)userInfo {
   //post it.
   if (growlLaunched) {      
   //kiran Code to post the notification.
    }
    else {
#ifdef GROWL_WITH_INSTALLER
      /*if Growl launches, and the user hasn't already said NO to installing
       *   it, store this notification for posting
       */
      if (!userChoseNotToInstallGrowl) {
         if (!queuedGrowlNotifications)
            queuedGrowlNotifications = [[NSMutableArray alloc] init];
         [queuedGrowlNotifications addObject:userInfo];

         //kiran Why is the code below here?

         //if we have not already asked the user to install Growl, do it now
         if (!promptedToInstallGrowl) {
            [GrowlInstallationPrompt showInstallationPrompt];
            promptedToInstallGrowl = YES;
         }
      }
#endif


As i am new to Growl code, I am not sure why this is in place. Looking into the above, it appears that Installation prompt is deliberately done when Growl is not running. Why such a requirement?