Index: src/mlx/config.py
===================================================================
--- src/mlx/config.py	(revision 298)
+++ src/mlx/config.py	(revision 373)
@@ -2,11 +2,13 @@
 
 import const
+from util import secondaryInstallation
 
 import os
 import sys
+import traceback
 import ConfigParser
 
 ## @package mlx.config
-# 
+#
 # The handling of the configuration.
 #
@@ -22,5 +24,6 @@
 
 configPath = os.path.join(os.path.expanduser("~"),
-                          "mlx.config" if os.name=="nt" else ".mlxrc")
+                          "mlx.config" if os.name=="nt" else ".mlxrc") + \
+                          ("-secondary" if secondaryInstallation else "")
 
 #-------------------------------------------------------------------------------
@@ -54,5 +57,5 @@
         """Check if the given hotkey is not equal to the other one."""
         return not self==other
-        
+
     def __str__(self):
         """Construct the hotkey to a string."""
@@ -69,5 +72,5 @@
     # The name of the section of the checklists
     SECTION="checklists"
-    
+
     @staticmethod
     def fromConfig(config, aircraftType):
@@ -108,5 +111,5 @@
         """Determine if the checklist is not equal to the given other one."""
         return not self==other
-        
+
     def __len__(self):
         """Get the length of the file list."""
@@ -127,5 +130,5 @@
     # The name of the section of the approach callouts
     SECTION="callouts"
-    
+
     @staticmethod
     def fromConfig(config, aircraftType):
@@ -145,5 +148,5 @@
                 break
 
-        return ApproachCallouts(mapping)    
+        return ApproachCallouts(mapping)
 
     def __init__(self, mapping = None):
@@ -211,5 +214,5 @@
 
     _messageTypesSection = "messageTypes"
-    
+
     def __init__(self):
         """Construct the configuration with default values."""
@@ -222,6 +225,6 @@
         self._hideMinimizedWindow = True
         self._quitOnClose = False
-        self._onlineGateSystem = True
-        self._onlineACARS = True
+        self._onlineGateSystem = not secondaryInstallation
+        self._onlineACARS = not secondaryInstallation
         self._flareTimeFromFS = False
         self._syncFSTime = False
@@ -232,5 +235,5 @@
         self._pirepDirectory = None
 
-        self._enableSounds = True
+        self._enableSounds = not secondaryInstallation
 
         self._pilotControlsSounds = True
@@ -242,7 +245,9 @@
         self._enableChecklists = False
         self._checklistHotkey = Hotkey(ctrl = True, shift = True, key = "0")
-                
-        self._autoUpdate = True        
+
+        self._autoUpdate = True
         self._updateURL = Config.DEFAULT_UPDATE_URL
+        if secondaryInstallation:
+            self._updateURL += "/exp"
 
         self._messageTypeLevels = {}
@@ -253,5 +258,5 @@
             self._checklists[aircraftType] = Checklist()
             self._approachCallouts[aircraftType] = ApproachCallouts()
-            
+
         self._modified = False
 
@@ -315,5 +320,5 @@
             self._hideMinimizedWindow = hideMinimizedWindow
             self._modified = True
-    
+
     @property
     def quitOnClose(self):
@@ -329,5 +334,5 @@
             self._quitOnClose = quitOnClose
             self._modified = True
-    
+
     @property
     def onlineGateSystem(self):
@@ -462,5 +467,5 @@
         return level==const.MESSAGELEVEL_FS or \
                level==const.MESSAGELEVEL_BOTH
-        
+
     def setMessageTypeLevel(self, messageType, level):
         """Set the level of the given message type."""
@@ -482,5 +487,5 @@
             self._modified = True
 
-    @property 
+    @property
     def pilotControlsSounds(self):
         """Get whether the pilot controls the background sounds."""
@@ -529,5 +534,5 @@
             self._speedbrakeAtTD = speedbrakeAtTD
             self._modified = True
-        
+
     @property
     def enableChecklists(self):
@@ -600,6 +605,10 @@
     def load(self):
         """Load the configuration from its default location."""
-        config = ConfigParser.RawConfigParser()
-        config.read(configPath)
+        try:
+            config = ConfigParser.RawConfigParser()
+            config.read(configPath)
+        except:
+            traceback.print_exc()
+            return
 
         self._pilotID = self._get(config, "login", "id", "")
@@ -615,10 +624,11 @@
         self._quitOnClose = self._getBoolean(config, "general",
                                              "quitOnClose", False)
-        
+
         self._onlineGateSystem = self._getBoolean(config, "general",
                                                   "onlineGateSystem",
-                                                  True)
+                                                  not secondaryInstallation)
         self._onlineACARS = self._getBoolean(config, "general",
-                                             "onlineACARS", True)
+                                             "onlineACARS",
+                                             not secondaryInstallation)
         self._flareTimeFromFS = self._getBoolean(config, "general",
                                                  "flareTimeFromFS",
@@ -644,6 +654,6 @@
                 self._getMessageTypeLevel(config, messageType)
 
-        self._enableSounds = self._getBoolean(config, "sounds",
-                                              "enable", True)
+        self._enableSounds = self._getBoolean(config, "sounds", "enable",
+                                              not secondaryInstallation)
         self._pilotControlsSounds = self._getBoolean(config, "sounds",
                                                      "pilotControls", True)
@@ -659,8 +669,9 @@
         self._checklistHotkey.set(self._get(config, "sounds",
                                             "checklistHotkey", "CS0"))
-            
+
         self._autoUpdate = self._getBoolean(config, "update", "auto", True)
         self._updateURL = self._get(config, "update", "url",
-                                    Config.DEFAULT_UPDATE_URL)
+                                    Config.DEFAULT_UPDATE_URL +
+                                    ("/exp" if secondaryInstallation else ""))
 
         for aircraftType in const.aircraftTypes:
@@ -714,5 +725,5 @@
             if messageType in self._messageTypeLevels:
                 option = self._getMessageTypeLevelOptionName(messageType)
-                level = self._messageTypeLevels[messageType]                
+                level = self._messageTypeLevels[messageType]
                 config.set(Config._messageTypesSection, option,
                            const.messageLevel2string(level))
@@ -733,5 +744,5 @@
         config.set("sounds", "checklistHotkey",
                    str(self._checklistHotkey))
-        
+
         config.add_section("update")
         config.set("update", "auto",
@@ -760,5 +771,5 @@
                if config.has_option(section, option) \
                else default
-    
+
     def _get(self, config, section, option, default):
         """Get the given option as a string, if found in the given config,
@@ -774,9 +785,11 @@
             value = config.get(Config._messageTypesSection, option)
             return const.string2messageLevel(value)
+        elif secondaryInstallation:
+            return const.MESSAGELEVEL_NONE
         elif messageType in [const.MESSAGETYPE_LOGGER_ERROR,
                              const.MESSAGETYPE_FAULT,
                              const.MESSAGETYPE_NOGO,
                              const.MESSAGETYPE_GATE_SYSTEM,
-                             const.MESSAGETYPE_HELP]:            
+                             const.MESSAGETYPE_HELP]:
             return const.MESSAGELEVEL_BOTH
         else:
Index: src/mlx/gui/common.py
===================================================================
--- src/mlx/gui/common.py	(revision 362)
+++ src/mlx/gui/common.py	(revision 373)
@@ -2,4 +2,6 @@
 import mlx.const as _const
 from mlx.i18n import xstr
+
+from mlx.util import secondaryInstallation
 
 import os
@@ -262,4 +264,6 @@
 
 WINDOW_TITLE_BASE = PROGRAM_NAME + " " + _const.VERSION
+if secondaryInstallation:
+    WINDOW_TITLE_BASE += " (" + xstr("secondary") + ")"
 
 #------------------------------------------------------------------------------
Index: src/mlx/mlx.py
===================================================================
--- src/mlx/mlx.py	(revision 298)
+++ src/mlx/mlx.py	(revision 373)
@@ -3,4 +3,5 @@
 from i18n import setLanguage
 from sound import initializeSound
+from util import secondaryInstallation
 
 import os
@@ -51,5 +52,5 @@
 
     instance.close()
-    os.execv(programPath, args)    
+    os.execv(programPath, args)
 
 #--------------------------------------------------------------------------------------
@@ -60,5 +61,6 @@
 
     global instance
-    instance = SingleInstance("mlx", raiseCallbackWrapper)
+    instance = SingleInstance("mlx" + ("-secondary" if secondaryInstallation
+                                       else ""), raiseCallbackWrapper)
     if not instance: return
 
@@ -69,11 +71,11 @@
 
     if (len(sys.argv)<=1 or sys.argv[1]!="usedeflang") and config.setupLocale():
-        restart(["usedeflang"])
+        restart(["usedeflang"] + (["secondary"] if secondaryInstallation else []))
 
     setLanguage(programDirectory, config.getLanguage())
-    
+
     from .gui.gui import GUI
     gui = GUI(programDirectory, config)
-    
+
     sys.stdout = StdIOHandler(gui)
     sys.stderr = StdIOHandler(gui)
Index: src/mlx/util.py
===================================================================
--- src/mlx/util.py	(revision 298)
+++ src/mlx/util.py	(revision 373)
@@ -2,4 +2,5 @@
 import math
 import time
+import sys
 
 #------------------------------------------------------------------------------
@@ -26,5 +27,5 @@
     - the seconds as an integer
     - 1.0 if the value was non-negative, -1.0 if it was negative."""
-    
+
     if degrees<0:
         degrees = -degrees
@@ -32,5 +33,5 @@
     else:
         mul = 1.0
-        
+
     deg = int(degrees)
     min = int((degrees*60.0)%60.0)
@@ -125,5 +126,5 @@
 
     This function calculates the rhumb distance."""
-    
+
     latitude1 = math.radians(latitude1)
     longitude1 = math.radians(longitude1)
@@ -160,2 +161,6 @@
     return "%.0f metres" % (visibility,) if visibility<10000 \
            else "%.1f kilometres" % (visibility/1000.0,)
+
+#------------------------------------------------------------------------------
+
+secondaryInstallation="secondary" in sys.argv
