"Need to upgrade iPrint client..." when uploading print driver from Linux desktop

  • 7009772
  • 18-Nov-2011
  • 26-Apr-2012

Environment

SUSE Linux Enterprise Desktop 10
SUSE Linux Enterprise Desktop 11
Novell iPrint Client for Linux

Situation

Attempting to upload a print driver from Firefox on a Linux machine returns this error:
 
Need to upgrade iPrint client to the latest version

When attempting to install an iPrint printer, no message or printer install occurs.

These problems occur with Firefox versions 4 and 5.

Resolution

There are two options to solve the problem:
Resolution Option 1. Upgrade Firefox to any of the newer versions 6, 7 or 8.

Resolution Option 2. Run a script to disable the iPrint browser plugin from running in a plugin-container.
  1. Paste the script found below into a text file.
    • When copying the script below, do not include the equal signs.
  2. Give the script a name and an extension of .sh
    • For example: iPrintPluginFix.sh
  3. Give the script file executable permissions.
    • Example:
      • chmod 775 iPrintPluginFix.sh
  4. Execute the script on the Linux workstation which has the problem.
    • Example:
      • ./iPrintPluginFix.sh
= = = = = = =
 
writeUserjsFile() {
  home=$1;
  firefoxDir="$home/.mozilla/firefox";
  if [ -s $firefoxDir/profiles.ini ] 
  then
     pathVar=`cat $firefoxDir/profiles.ini | grep Path | cut -d "=" -f2`
     for i in $pathVar
     do 
         temp=`echo $i | grep -e "/.*"`
         if [ "$temp" == ""]
         then
            fullPath=$firefoxDir/$i
         else
            fullPath=$i
         fi 
         userjsFile=$fullPath/user.js
         dataExist=`grep libiprint-plugin \$userjsFile 2> /dev/null`
         if [ "$dataExist" == ""]
         then
            echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin.so", false);'      >> $userjsFile
            echo 'user_pref("dom.ipc.plugins.enabled.npnipp.so", false);'                 >> $userjsFile
            echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin32.so", false);'   >> $userjsFile
            echo 'user_pref("dom.ipc.plugins.enabled.npnipp32.so", false);'              >> $userjsFile
         fi
     done
  fi
}
#list all non-system users
allUsers=`awk -F: '{ if ( $3 >= 500 ) print $1}' /etc/passwd`
#write user.js for 'root' user
writeUserjsFile "/root" ;
#write user.js file for non-root users
for user in $allUsers
do
              writeUserjsFile "/home/$user";
done
 
= = = = = = =

    Additional Information

    Background:
    Starting in Firefox 3.6.4 on Windows and Linux, a new crash protection feature isolates certain plugins from the browser process and sets those plugins to each run in a separate plugin-container process. Before this new "out-of-process plugins" ("OOPP") crash protection feature, a problem with a plugin (e.g, Adobe Flash) would often cause the entire Firefox browser to crash. When an "out-of-process plugin" stops working, Firefox can remain running and just the portions of a web page that need the plugin will be disabled.
     
    What is a plugin container?
    An out-of-process plugin runs in a separate process named "plugin-container". For each plugin for which the "OOPP" crash protection feature is enabled, a separate plugin-container process will be started when you first visit a web page that evokes that plugin. When you exit Firefox, those plugin-container processes will terminate.
     
    Why iPrint plugin is not working in Firefox 4 and above? -
    The answer lies in the above description. Experiments show that disabling the iPrint plugin from running in a plugin-container causes the printer driver upload and printer install work on Firefox versions 4 and 5. The plugins which is using NPAPI are by default enabled to run "out-of-process".  iPrint plugin is also using NPAPI but for reasons currently not understood it still does not work when run "out-of-process".