Index: src/edu/ucsb/nceas/metacat/util/SystemUtil.java
===================================================================
--- src/edu/ucsb/nceas/metacat/util/SystemUtil.java	(revision 4661)
+++ src/edu/ucsb/nceas/metacat/util/SystemUtil.java	(revision 4662)
@@ -42,7 +42,15 @@
 
 	private static Logger logMetacat = Logger.getLogger(SystemUtil.class);
 	private static String METACAT_SERVLET = "metacat";
-
+	private static int OS_CLASS = 0;
+	
+	// Class of OS.  If we need more granularity, we should create a version
+	// list and access it separately.
+	public static int WIN_OS = 1;
+	public static int LINUX_OS = 2;
+	public static int MAC_OS = 3;
+	public static int OTHER_OS = 4;
+	
 	/**
 	 * private constructor - all methods are static so there is no no need to
 	 * instantiate.
@@ -50,6 +58,33 @@
 	private SystemUtil() {}
 
 	/**
+	 * Get the OS for this system.
+	 * @return an integer representing the class of OS.  Possibilities are:
+	 *     WIN_OS = 1;
+	 *     LINUX_OS = 2;
+	 *     MAC_OS = 3;
+	 *     OTHER_OS = 4;
+	 */
+	public static int getOsClass() {
+		if (OS_CLASS > 0) {
+			return OS_CLASS;
+		}
+		
+		String osName = System.getProperty("os.name");
+		if (osName.startsWith("Windows")) {
+			OS_CLASS =  WIN_OS;
+		} else if (osName.startsWith("Linux")) {
+			OS_CLASS =  LINUX_OS;
+		} else if (osName.startsWith("Mac")) {
+			OS_CLASS =  MAC_OS;
+		} else if (osName.startsWith("Mac")) {
+			OS_CLASS =  OTHER_OS;
+		}
+		
+		return OS_CLASS;
+	}
+	
+	/**
 	 * Attempt to discover the server name. The name is retrieved from the http
 	 * servlet request. This is used by configuration routines before the port
 	 * has been populated in metacat.properties. it is possible the port that
@@ -168,7 +203,7 @@
 	 * @return string holding the server URL with context
 	 */
 	public static String getContextURL() throws PropertyNotFoundException {
-		return getServerURL() + FileUtil.getFS()
+		return getServerURL() + "/"
 				+ PropertyService.getProperty("application.context");
 	}
 
@@ -179,7 +214,7 @@
 	 * @return string holding the servlet URL
 	 */
 	public static String getServletURL() throws PropertyNotFoundException {
-		return getContextURL() + FileUtil.getFS() + METACAT_SERVLET;
+		return getContextURL() + "/" + METACAT_SERVLET;
 	}
 
 	/**
@@ -189,8 +224,7 @@
 	 * @return string holding the style skins URL
 	 */
 	public static String getStyleSkinsURL() throws PropertyNotFoundException {
-		return getContextURL() + FileUtil.getFS() + "style" + FileUtil.getFS()
-				+ "skins";
+		return getContextURL() + "/" + "style" + "/" + "skins";
 	}
 
 	/**
@@ -200,8 +234,7 @@
 	 * @return string holding the style common URL
 	 */
 	public static String getStyleCommonURL() throws PropertyNotFoundException {
-		return getContextURL() + FileUtil.getFS() + "style" + FileUtil.getFS()
-				+ "common";
+		return getContextURL() + "/" + "style" + "/" + "common";
 	}
 	
 	/**
@@ -263,6 +296,23 @@
 
 		return contextPath;
 	}
+	
+	/**
+	 * Attempt to discover the external (to the metacat installation)
+	 * directory where metacat will hold backup files.   This functionality 
+	 * is used to populate the configuration utility initially.  The user 
+	 * can change the directory manually, so you can't rely on this method 
+	 * to give you the actual directory.
+	 * 
+	 * @return a string holding the backup directory path
+	 */
+	public static String discoverExternalDir() {
+		if (getOsClass() == WIN_OS) {
+			return "C:\\Program Files\\metacat";
+		}
+		
+		return "/var/metacat";
+	}
 
 	/**
 	 * Get the style skins directory. This is made up of the tomcat directory
@@ -291,7 +341,7 @@
 	 * @return string holding the default style URL
 	 */
 	public static String getDefaultStyleURL() throws PropertyNotFoundException {
-		return getStyleCommonURL() + FileUtil.getFS()
+		return getStyleCommonURL() + "/"
 				+ PropertyService.getProperty("application.default-style");
 	}
 
Index: src/edu/ucsb/nceas/metacat/admin/PropertiesAdmin.java
===================================================================
--- src/edu/ucsb/nceas/metacat/admin/PropertiesAdmin.java	(revision 4661)
+++ src/edu/ucsb/nceas/metacat/admin/PropertiesAdmin.java	(revision 4662)
@@ -109,6 +109,16 @@
 						SystemUtil.discoverServerSSLPort(request));
 				PropertyService.setPropertyNoPersist("application.deployDir",
 						SystemUtil.discoverDeployDir(request));
+				PropertyService.setPropertyNoPersist("application.datafilepath",
+						SystemUtil.discoverExternalDir() + FileUtil.getFS() + "data");
+				PropertyService.setPropertyNoPersist("application.inlinedatafilepath",
+						SystemUtil.discoverExternalDir() + FileUtil.getFS() + "inline-data");
+				PropertyService.setPropertyNoPersist("application.documentfilepath",
+						SystemUtil.discoverExternalDir() + FileUtil.getFS() + "documents");
+				PropertyService.setPropertyNoPersist("application.tempDir",
+						SystemUtil.discoverExternalDir() + FileUtil.getFS() + "temporary");
+				PropertyService.setPropertyNoPersist("replication.logdir",
+						SystemUtil.discoverExternalDir() + FileUtil.getFS() + "logs");
 
 				PropertyService.persistProperties();
 
