diff -Naur pacman-2.9.8.orig/src/pacman.c pacman-2.9.8/src/pacman.c
--- pacman-2.9.8.orig/src/pacman.c	2006-01-31 00:27:43.000000000 +0000
+++ pacman-2.9.8/src/pacman.c	2012-01-14 16:38:07.000000000 +0000
@@ -117,6 +117,8 @@
 int maxcols = 80;
 int neednl = 0; /* for cleaner message output */
 
+int menu_generator_trigger = 0;
+
 int main(int argc, char *argv[])
 {
 	int ret = 0;
@@ -282,6 +285,10 @@
 			break;
 	}
 	db_close(db_local);
+
+	/* menu generator trigger */
+	#define TRIGGER_BINARY "/usr/bin/menu-generator-trigger"
+	if (menu_generator_trigger && (!access(TRIGGER_BINARY, F_OK|X_OK)) && (!fork())) execlp(TRIGGER_BINARY, TRIGGER_BINARY, NULL);
 	cleanup(ret);
 	/* not reached */
 	return(0);
@@ -2173,6 +2178,7 @@
 			}
 			printf("done.\n"); fflush(stdout);
 
+			menu_generator_trigger = 1;
 			/* run the post-install/upgrade script if it exists  */
 			snprintf(pm_install, PATH_MAX, "%s%s/%s/%s-%s/install", pmo_root, pmo_dbpath, db->treename, info->name, info->version);
 			if(pmo_upgrade) {
@@ -2416,6 +2422,7 @@
 			}
 		}
 
+		menu_generator_trigger = 1;
 		if(!pmo_upgrade) {
 			/* run the post-remove script if it exists  */
 			snprintf(pm_install, PATH_MAX, "%s%s/%s/%s-%s/install", pmo_root, pmo_dbpath, db->treename, info->name, info->version);
