=== modified file 'aptdaemon/worker.py'
--- aptdaemon/worker.py	2012-06-13 19:31:39 +0000
+++ aptdaemon/worker.py	2012-08-16 02:14:57 +0000
@@ -709,7 +709,8 @@
                 raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
                                         _("Package %s isn't installed"),
                                         pkg_name)
-            pkg.mark_install(False, True, pkg.is_auto_installed)
+            from_user = not pkg.is_auto_installed
+            pkg.mark_install(False, True, from_user=from_user)
             resolver.clear(pkg)
             resolver.protect(pkg)
             if pkg_ver:
@@ -750,7 +751,8 @@
                 raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
                                         _("Package %s isn't installed"),
                                         pkg_name)
-            pkg.mark_install(False, True, pkg.is_auto_installed)
+            from_user = not pkg.is_auto_installed
+            pkg.mark_install(False, True, from_user=from_user)
             resolver.clear(pkg)
             resolver.protect(pkg)
             if pkg_ver:

=== modified file 'tests/test_worker.py'
--- tests/test_worker.py	2012-08-10 13:59:10 +0000
+++ tests/test_worker.py	2012-08-16 02:21:01 +0000
@@ -250,6 +250,31 @@
                          enums.ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE,
                          "Allowed to remove an essential package")
 
+    def test_upgrade(self):
+        """Test upgrading of packages."""
+        self.chroot.add_test_repository()
+        for pkg in ["silly-base_0.1-0_all.deb",
+                    "silly-depend-base_0.1-0_all.deb"]:
+            self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+        ext_states = apt_pkg.config.find_file("Dir::State::extended_states")
+        with open(ext_states, "w") as ext_states_file:
+            ext_states_file.write("""Package: silly-base
+Architecture: all
+Auto-Installed: 1""")
+        trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+                            os.getpid(), os.getuid(), sys.argv[0],
+                            "org.debian.apt.test", connect=False,
+                            packages=[[],[],[],[],["silly-base=0.1-0update1"],[]])
+        self.worker.run(trans)
+        self.loop.run()
+        self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+                         "%s: %s" % (trans._error_property[0],
+                                     trans._error_property[1]))
+        self.worker._cache.open()
+        self.assertEqual(self.worker._cache["silly-base"].installed.version,
+                         "0.1-0update1", "Failed to upgrade.")
+        self.assertTrue(self.worker._cache["silly-base"].is_auto_installed)
+
     def test_downgrade(self):
         """Test downgrading of packages."""
         self.chroot.add_test_repository()

