diff --git a/org.eclipse.epf.toolbox/src/org/eclipse/epf/toolbox/utils/CopyPIIFiles.java b/org.eclipse.epf.toolbox/src/org/eclipse/epf/toolbox/utils/CopyPIIFiles.java
index 240a13b..6a62a12 100644
--- a/org.eclipse.epf.toolbox/src/org/eclipse/epf/toolbox/utils/CopyPIIFiles.java
+++ b/org.eclipse.epf.toolbox/src/org/eclipse/epf/toolbox/utils/CopyPIIFiles.java
@@ -15,7 +15,7 @@
 	private static boolean localDebug = true;
 	
 	private static final String[] startWithFiles = {
-		"spalsh.",
+		"splash.",
 	};
 	
 	private static final String[] types = {
@@ -25,13 +25,31 @@
 		".js",
 	};
 	
+	private static final String[] pathNames = {
+		"com.ibm.rmc",
+		"org.eclipse.epf",
+	};
+	
+	private static final String[] excludeFolders = {
+		"bin",
+		"CVS",
+		"nl",
+	};
+	
 	private static Set<String> typeSet; 
+	private static Set<String> excludeFolderSet; 
+	
 	
 	static {
 		typeSet = new HashSet<String>();
 		for (String type : types) {
 			typeSet.add(type);
 		}
+		
+		excludeFolderSet = new HashSet<String>();
+		for (String folder : excludeFolders) {
+			excludeFolderSet.add(folder);
+		}
 	}
 	
 	//Hard coded parameters
@@ -67,7 +85,9 @@
 		int ccCount = 0;
 		for (File file : files) {
 			if (file.isDirectory()) {
-				subDirs.add(file);
+				if (toProcessFolder(file)) {
+					subDirs.add(file);
+				}
 			} else {
 				if (toCopyFile(file)) {
 					ccCount++;
@@ -107,4 +127,22 @@
 		return typeSet.contains(ext);
 	}
 	
+	private boolean toProcessFolder(File folder) {
+		if (excludeFolderSet.contains(folder.getName())) {
+			return false;
+		}		
+		String filePath = folder.getAbsolutePath();
+		
+		boolean containingName = false;		
+		for (String str : pathNames) {
+			if (filePath.indexOf(str) >= 0) {
+				containingName = true;
+				break;
+			}
+		}
+		
+		return containingName;
+
+	}
+	
 }
