Launcher items added via Ubuntu Software Center incorrectly point to the app-install desktop files rather than the actual installed desktop files

Bug #999427 reported by Gary Lasker on 2012-05-15
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Unity
Invalid
Undecided
Bilal Akhtar
software-center (Ubuntu)
High
Gary Lasker
Precise
High
Gary Lasker

Bug Description

[TEST CASE]
The easiest way to insure that the Unity launcher is now pointing to the installed desktop file is to simply verify that the corresponding launcher icon is removed correctly after an application is uninstalled. Note that this test case is the same as that for bug 981488.
1. Launch the current Ubuntu Software Center in Precise.
2. Click the "Installed" toolbar button to access the list of installed applications.
3. Choose an installed application to remove (choose one for which there is a corresponding icon in the Unity launcher).
4. Click the "More Info" button.
5. In the details view for the application, click the "Remove" button and enter the password for the remove if prompted.
6. The uninstall process begins and the progress bar moves in Software Center.
7. At the end of the install process, verify that the corresponding icon in the Unity launcher has *not" been removed.
8. Close Ubuntu Software Center.
9. Update to both the software-center *and* unity packages in precise-proposed.
10. Repeat steps 1 through 6.
11. This time, at the end of the install process, verify that the corresponding icon in the Unity launcher is *removed*.

[REGRESSION POTENTIAL]
Risk of regression is very low. Just verifying that the correct icon is actually removed should be enough.

---

While investigating bug 925014, I made the discovery that Unity launcher items that are added during an application installation via the Ubuntu Software Center incorrectly point to the desktop files from the app-install-data package, in the directory:

  /usr/share/app-install/desktop (e.g., /usr/share/app-install/desktop/gnome-hearts:gnome-hearts.desktop

rather than the actual *installed* desktop files in:

  /usr/share/applications (e.g., /usr/share/applications/gnome-hearts.desktop)

Note that the installed desktop files can be found in the /usr/share/applications directory after the installation has completed.

This appears to be a regression in a very recent release of Unity, as afaik this has worked correctly for quite a few cycles and also in Precise right up until the very final releases.

Note that we recently finished the remaining pieces of the implementation of the fully animated Unity launcher integration, as outlined in bug 761851, and it was as part of this work that this regression appears to have occurred.

You can refer to comment #7 of bug 761851 for details about the steps needed to determine the actual installed desktop file path. The Python code from Software Center that we used in past releases for this is as shown:

    def convert_desktop_file_to_installed_location(app_install_data_file_path, pkgname=None):
    """ returns the installed desktop file path that corresponds to the
        given app-install-data file path, and will also check directly for
        the desktop file that corresponds to a given pkgname.
    """
    # "normal" case
    installed_desktop_file_path = app_install_data_file_path.replace("app-install/desktop", "applications")
    if os.path.exists(installed_desktop_file_path):
        return installed_desktop_file_path
    # next, try case where a subdirectory is encoded in the app-install
    # desktop filename, e.g. kde4_soundkonverter.desktop
    installed_desktop_file_path = installed_desktop_file_path.replace(APP_INSTALL_PATH_DELIMITER, "/")
    if os.path.exists(installed_desktop_file_path):
        return installed_desktop_file_path
    # lastly, just try checking directly for the desktop file based on the pkgname itself
    if pkgname:
        installed_desktop_file_path = "/usr/share/applications/%s.desktop" % pkgname
        if os.path.exists(installed_desktop_file_path):
            return installed_desktop_file_path
    logging.warn("Could not determine the installed desktop file path for app-install desktop file: '%s'" % app_install_data_file_path)
    return ""

---

Additional info from Dmitry Shachnev, duplicate bug 996690:

Some Unity Mail users reported that after installing Unity Mail via the Software Center,

- The quicklist is not translated
- The count badge is not shown

Trying to debug this issue, I've found out that when installing an application from the Software Center, the desktop file added to Unity launcher favorites is '/usr/share/app-install/desktop/unity-mail:unity-mail.desktop', not expected '/usr/share/applications/unity-mail.desktop':

$ gsettings get com.canonical.Unity.Launcher favorites
['nautilus.desktop', 'chromium-browser.desktop', 'geany.desktop', 'gnome-terminal.desktop', '/usr/share/app-install/desktop/unity-mail:unity-mail.desktop']

I've temporarily added a workaround to Unity Mail that uses the desktop file from Unity.LauncherFavorites (see bug 990689), but this doesn't solve the problem with untranslated quicklist.

Obviously, this affects not only Unity Mail, but any other application in the Software Center.

Related branches

Gary Lasker (gary-lasker) wrote :

Note that this bug appears to be at least part of the cause of bug 925014, where purchased items are currently not added to the Unity launcher. In the Python code snippet above, it's the direct check for the desktop file based on the pkgname that was used previously to determine the installed desktop file for purchased items (as purchased items do not have a corresponding app-install-data entry).

Changed in unity:
assignee: nobody → Bilal Akhtar (bilalakhtar)
status: New → Confirmed
description: updated
Changed in software-center (Ubuntu):
status: New → Triaged
importance: Undecided → High
assignee: nobody → Gary Lasker (gary-lasker)
milestone: none → precise-updates
status: Triaged → In Progress
Gary Lasker (gary-lasker) wrote :

The attached branch, lp:~gary-lasker/software-center/unity-launcher-integration-fixes, changes the operation of Software Center to fire the Unity launcher dbus event at the end of the package install process, thereby allowing the values sent over dbus to include the actual installed desktop file path and removing the need for the Unity code to determine it. This fixes the issue described in this report. Please see bug 925014 for additional information about this fix.

Many thanks!

Michael Vogt (mvo) on 2012-07-20
Changed in software-center (Ubuntu Precise):
status: New → In Progress
importance: Undecided → High
Changed in software-center (Ubuntu):
status: In Progress → Fix Released
Gary Lasker (gary-lasker) wrote :

With the new add-to-launcher timing from Software Center, no fix is needed on the Unity side so I've set that task as invalid.

description: updated
Changed in unity:
status: Confirmed → Invalid
Changed in software-center (Ubuntu):
milestone: precise-updates → none
Changed in software-center (Ubuntu Precise):
milestone: none → precise-updates
assignee: nobody → Gary Lasker (gary-lasker)
Changed in software-center (Ubuntu Precise):
status: In Progress → Fix Committed
Stéphane Graber (stgraber) wrote :

Reverting the precise task to In Porogress, Fix Commited is for packages that are in the -proposed pocket, this package is still in the Unapproved queue.

Changed in software-center (Ubuntu Precise):
status: Fix Committed → In Progress

Hello Gary, or anyone else affected,

Accepted software-center into precise-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/software-center/5.2.5 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in software-center (Ubuntu Precise):
status: In Progress → Fix Committed
tags: added: verification-needed
Gary Lasker (gary-lasker) wrote :

I have verified that software-center version 5.2.5 in precise-proposed fixes this bug per the test case given in the description.

Thanks!

tags: added: verification-done
removed: verification-needed

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package software-center - 5.2.5

---------------
software-center (5.2.5) precise-proposed; urgency=low

  [ Michael Vogt ]
  * lp:~mvo/software-center/fix-lp1009039:
    - fix treeview selection background (LP: #1009039)
  * lp:~mvo/software-center/fix-lp1011522:
    - fix bug where clicking on "Reinstall previous purchases" twice
      shows endless spinner (LP: #1011522)
  * lp:~mvo/software-center/click_url:
    - adds support for a "click_url" from the exhibits banner to
      support banners for things like the humble-bundle where we
      don't have packages but URLs (LP: #1020205)
  * lp:~mvo/software-center/hopefully-fix-lp1008229:
    - fix crash that can happen if there is an error while
      opening a deb file (LP: #1008229)
  * lp:~mvo/software-center/lp1026494:
    - typo fix in the hw description code (LP: #1026494)

  [ Gary Lasker ]
  * lp:~gary-lasker/software-center/unity-launcher-integration-fixes:
    - fix bug where for-purchase items are not being added to the Unity
      launcher (LP: #925014)
    - fix bug where the Unity launcher item for an application incorrectly
      points to its app-install-data desktop file rather than its installed
      desktop file (LP: #999427)
    - fix bug where an application's icon remains in the Unity launcher after
      the corresponding application has been uninstalled (LP: #981488)
    - fix bug where the Unity launcher fails to auto-hide after installation
      of a for-purchase item (LP: #1002440)
    - fix bug where items in the "Independent" section are not being added
      to the Unity launcher (LP: #1012877)
  * lp:~gary-lasker/software-center/tech-items-to-launcher-fix-lp1006483:
    - don't add an item to the launcher if its desktop file specifies
      NoDisplay=true (LP: #1006483)
  * lp:~gary-lasker/software-center/launcher-integration-unit-tests:
   - additional unit tests to round out the suite for the Unity
     launcher integration feature
  * lp:~gary-lasker/software-center/fix-lp969907-for-5.2:
    - fix race condition in _app_activated_cb() (LP: #969907)
 -- Michael Vogt <email address hidden> Mon, 23 Jul 2012 16:38:04 +0200

Changed in software-center (Ubuntu Precise):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers