diff --git a/src/mio/installer.py b/src/mio/installer.py
index 3e66b533931a5fed6bf3f033a03ac3156ab7661e..53776293b805f6e24f630d2ee806f406d6c1e18e 100755
--- a/src/mio/installer.py
+++ b/src/mio/installer.py
@@ -186,6 +186,8 @@ class Installer:
         return result
             
     def install_groups(self, prefix, backup):
+        for g in self.group:
+            g.do_pre(prefix, backup)
         for g in self.group:
             g.install(prefix, backup)
 
diff --git a/src/mio/node.py b/src/mio/node.py
index f41611724c41215c82da6151e381767faf6dd19d..71d741cdbec3359d226915b37fa4e3a401bf4d4e 100755
--- a/src/mio/node.py
+++ b/src/mio/node.py
@@ -117,12 +117,15 @@ class group_node(target_node):
             if d.trigged(prefix):
                 return True
         return False
+
+    def do_pre(self, prefix, backup):
+        if self.trigged(prefix):
+            for a in self.pre:
+                a.run("pre")
     
     def do_install(self, prefix, backup):
         for d in self.dependency:
             d.install(prefix, backup)
-        for a in self.pre:
-            a.run("pre")
         for t in self.target:
             t.install(prefix, backup)
         for a in self.post: