diff --git a/source/config/__init__.py b/source/config/__init__.py
index 26a2934..597a46a 100644
--- a/source/config/__init__.py
+++ b/source/config/__init__.py
@@ -191,6 +191,9 @@ confspec = ConfigObj(StringIO(
 
 [update]
 	autoCheck = boolean(default=true)
+	startupNotification = boolean(default=true)
+	storeUpdatesDir = string(default="")
+	keepUpdatesFor = integer(default=0)
 
 [inputComposition]
 	autoReportAllCandidates = boolean(default=True)
@@ -383,6 +386,8 @@ def _setSystemConfig(fromPath):
 		if not os.path.isdir(curDestDir):
 			os.makedirs(curDestDir)
 		for f in files:
+			if f.startswith("nvda_update_") and f.endswith(".exe"):
+				continue
 			sourceFilePath=os.path.join(curSourceDir,f)
 			destFilePath=os.path.join(curDestDir,f)
 			installer.tryCopyFile(sourceFilePath,destFilePath)
diff --git a/source/core.py b/source/core.py
index 8f5a5f7..d41b17b 100644
--- a/source/core.py
+++ b/source/core.py
@@ -351,6 +351,9 @@ This initializes all modules such as audio, IAccessible, keyboard, mouse, and GU
 	else:
 		log.debug("initializing updateCheck")
 		updateCheck.initialize()
+		# execute pending update, if any and the user agrees
+		if not globalVars.appArgs.launcher and config.conf["update"]["startupNotification"] and updateCheck.isPendingUpdate() and updateCheck.askInstallUpdateNow():
+			updateCheck.executeUpdate()
 	log.info("NVDA initialized")
 
 	log.debug("entering wx application main loop")
diff --git a/source/gui/__init__.py b/source/gui/__init__.py
index 5b1645b..dfa547f 100644
--- a/source/gui/__init__.py
+++ b/source/gui/__init__.py
@@ -191,6 +191,18 @@ class MainFrame(wx.Frame):
 		# Translators: Title for temporary speech dictionary dialog (the voice dictionary that is active as long as NvDA is running).
 		self._popupSettingsDialog(DictionaryDialog,_("Temporary dictionary"),speechDictHandler.dictionaries["temp"])
 
+	def onExecuteUpdateCommand(self, evt):
+		if updateCheck and updateCheck.isPendingUpdate():
+			updateCheck.executeUpdate()
+
+	def onUpdatePendingUpdatesMenuItemCommand(self, evt):
+		try:
+			self.sysTrayIcon.menu.RemoveItem(self.sysTrayIcon.runPendingUpdatesMenuItem)
+		except:
+			pass
+		if not config.conf["general"]["askToExit"] and updateCheck and updateCheck.isPendingUpdate():
+			self.sysTrayIcon.menu.InsertItem(self.sysTrayIcon.menu.GetMenuItemCount()-2,self.sysTrayIcon.runPendingUpdatesMenuItem)
+
 	def onExitCommand(self, evt):
 		if config.conf["general"]["askToExit"]:
 			self.prePopup()
@@ -450,6 +462,10 @@ class SysTrayIcon(wx.TaskBarIcon):
 			# Translators: The label for the menu item to open donate page.
 			item = self.menu.Append(wx.ID_ANY, _("Donate"))
 			self.Bind(wx.EVT_MENU, lambda evt: os.startfile(DONATE_URL), item)
+			# Translators: The label for the menu item to run pending updates.
+			item = self.runPendingUpdatesMenuItem = self.menu.Append(wx.ID_ANY, _("Run pending updates"), _("Start previously downloaded updates, which are still not applyed"))
+			self.Bind(wx.EVT_MENU, frame.onExecuteUpdateCommand, item)
+			self.Bind(wx.EVT_UPDATE_UI, frame.onUpdatePendingUpdatesMenuItemCommand, item)
 		self.menu.AppendSeparator()
 		item = self.menu.Append(wx.ID_EXIT, _("E&xit"),_("Exit NVDA"))
 		self.Bind(wx.EVT_MENU, frame.onExitCommand, item)
@@ -692,6 +708,9 @@ class ExitDialog(wx.Dialog):
 		_("Restart"),
 		# Translators: An option in the combo box to choose exit action.
 		_("Restart with addons disabled")]
+		if updateCheck and updateCheck.isPendingUpdate():
+			# Translators: An option in the combo box to choose exit action.
+			self.actions.append(_("Run pending updates"))
 		# Translators: A combo box to choose exit action (possible options are exit, restart, restart with addons disabled).
 		self.actionsList=wx.Choice(self,actionsListID,name=_("Action"),choices=self.actions)
 		self.actionsList.SetSelection(0)
@@ -713,6 +732,9 @@ class ExitDialog(wx.Dialog):
 			queueHandler.queueFunction(queueHandler.eventQueue,core.restart)
 		elif action == 2:
 			queueHandler.queueFunction(queueHandler.eventQueue,core.restart,True)
+		elif action == len(self.actions)-1:
+			if updateCheck:
+				updateCheck.executeUpdate()
 		self.Destroy()
 
 	def onCancel(self, evt):
diff --git a/source/gui/settingsDialogs.py b/source/gui/settingsDialogs.py
index 6a7f263..825824a 100644
--- a/source/gui/settingsDialogs.py
+++ b/source/gui/settingsDialogs.py
@@ -6,6 +6,7 @@
 
 import glob
 import os
+import sys
 import copy
 import wx
 import winUser
@@ -199,6 +200,41 @@ class GeneralSettingsDialog(SettingsDialog):
 			if globalVars.appArgs.secure:
 				item.Disable()
 			settingsSizer.Add(item)
+			# Translators: The label of a checkbox in general settings to toggle startup notifications for pending updates of NVDA (if not checked, user will not be notified for pending updates).
+			item=self.notifyForPendingUpdatesCheckBox=wx.CheckBox(self,label=_("Notify me for &pending updates on startup"))
+			item.Value=config.conf["update"]["startupNotification"]
+			if globalVars.appArgs.secure:
+				item.Disable()
+			settingsSizer.Add(item)
+			chooseStoreUpdatesDirSizer=wx.BoxSizer(wx.VERTICAL)
+			self.storeUpdatesDir=config.conf["update"]["storeUpdatesDir"] or updateCheck.defaultStoreUpdatesDir
+			# Translators: The label for a setting in general settings to browse for folder where downloaded updates should be stored.
+			self.browseForStoreUpdatesDirLabel=wx.StaticText(self,wx.ID_ANY,label=_("Store updates in:"))
+			chooseStoreUpdatesDirSizer.Add(self.browseForStoreUpdatesDirLabel)
+			self.storeUpdatesDirLocation = wx.TextCtrl(self, wx.ID_ANY, value=self.storeUpdatesDir)
+			chooseStoreUpdatesDirSizer.Add(self.storeUpdatesDirLocation)
+			# Translators: The label for a button in general settings to browse for folder where downloaded updates should be stored.
+			self.browseForStoreUpdatesDirButton= wx.Button(self, wx.ID_ANY, label=_("Browse..."))
+			self.browseForStoreUpdatesDirButton.Bind(wx.EVT_BUTTON,self.onBrowseForStoreUpdatesDir)
+			if globalVars.appArgs.secure:
+				self.browseForStoreUpdatesDirButton.Disable()
+			chooseStoreUpdatesDirSizer.Add(self.browseForStoreUpdatesDirButton)
+			# Translators: The label for a button which (re)sets a perticular setting to its defaults.
+			self.resetStoreUpdatesDirButton= wx.Button(self, wx.ID_ANY, label=_("Use default"))
+			self.resetStoreUpdatesDirButton.Bind(wx.EVT_BUTTON,self.onResetStoreUpdatesDir)
+			if globalVars.appArgs.secure:
+				self.resetStoreUpdatesDirButton.Disable()
+			chooseStoreUpdatesDirSizer.Add(self.resetStoreUpdatesDirButton)
+			settingsSizer.Add(chooseStoreUpdatesDirSizer,border=10,flag=wx.BOTTOM)
+			keepUpdatesSizer = wx.BoxSizer(wx.HORIZONTAL)
+			# Translators: The label of an edit field in general settings to set how long a downloaded update should be kept
+			keepUpdatesSizer.Add(wx.StaticText(self, label=_("Keep downloaded updates for (in days):")))
+			item = self.keepUpdatesFor = wx.SpinCtrl(self, wx.ID_ANY, initial=config.conf["update"]["keepUpdatesFor"], min=0, max=sys.maxint)
+			keepUpdatesSizer.Add(item)
+			if globalVars.appArgs.secure:
+				item.Disable()
+			settingsSizer.Add(keepUpdatesSizer)
+			settingsSizer.Fit(self)
 
 	def postInit(self):
 		self.languageList.SetFocus()
@@ -247,7 +283,27 @@ class GeneralSettingsDialog(SettingsDialog):
 			# Translators: The message displayed when copying configuration to system settings was successful.
 			gui.messageBox(_("Successfully copied NVDA user settings"),_("Success"),wx.OK|wx.ICON_INFORMATION,self)
 
+	def onBrowseForStoreUpdatesDir(self,evt):
+		# Translators: The title of the dialog presented when browsing for the
+		# destination directory for setting the path where to store pending updates.
+		with wx.DirDialog(self, _("Select folder to store pending updates"), defaultPath=self.storeUpdatesDir) as d:
+			if d.ShowModal() == wx.ID_OK:
+				self.storeUpdatesDir = d.Path
+				self.storeUpdatesDirLocation.SetValue(self.storeUpdatesDir)
+
+	def onResetStoreUpdatesDir(self,evt):
+		if updateCheck:
+			self.storeUpdatesDir = updateCheck.defaultStoreUpdatesDir
+			self.storeUpdatesDirLocation.SetValue(self.storeUpdatesDir)
+
 	def onOk(self,evt):
+		if not os.path.isdir(self.storeUpdatesDirLocation.Value) or not os.access(self.storeUpdatesDirLocation.Value, os.W_OK|os.X_OK):
+			gui.messageBox(
+				# Translators: The message displayed when the path for storing downloaded NVDA updates does not exists or is not writable.
+				_("The directory for storing downloaded NVDA updates not exists or is not writable. Please choose another one."),
+				_("Error"),
+				wx.OK|wx.ICON_ERROR,self)
+			return
 		newLanguage=[x[0] for x in self.languageNames][self.languageList.GetSelection()]
 		if newLanguage!=self.oldLanguage:
 			try:
@@ -272,6 +328,18 @@ class GeneralSettingsDialog(SettingsDialog):
 				gui.messageBox(_("This change requires administrator privileges."), _("Insufficient Privileges"), style=wx.OK | wx.ICON_ERROR, parent=self)
 		if updateCheck:
 			config.conf["update"]["autoCheck"]=self.autoCheckForUpdatesCheckBox.IsChecked()
+			config.conf["update"]["startupNotification"]=self.notifyForPendingUpdatesCheckBox.IsChecked()
+			config.conf["update"]["storeUpdatesDir"]=self.storeUpdatesDirLocation.Value
+			if self.storeUpdatesDirLocation.Value != updateCheck.storeUpdatesDir:
+				# move all updates files to the new location
+				try:
+					for file in os.listdir(updateCheck.storeUpdatesDir):
+						f=os.path.join(updateCheck.storeUpdatesDir, file)
+						if file.startswith("nvda_update_") and file.endswith(".exe"):
+							os.renames(f, os.path.join(self.storeUpdatesDirLocation.Value, file))
+				except OSError:
+					log.debug("The file %s can not be moved to the new location %s"%(f, self.storeUpdatesDir))
+			config.conf["update"]["keepUpdatesFor"]=self.keepUpdatesFor.GetValue()
 			updateCheck.terminate()
 			updateCheck.initialize()
 		if self.oldLanguage!=newLanguage:
diff --git a/source/updateCheck.py b/source/updateCheck.py
index 7993e9f..9e74311 100644
--- a/source/updateCheck.py
+++ b/source/updateCheck.py
@@ -38,6 +38,17 @@ RETRY_INTERVAL = 600 # 10 min
 #: The download block size in bytes.
 DOWNLOAD_BLOCK_SIZE = 8192 # 8 kb
 
+#: directory to store pending update files
+storeUpdatesDir=""
+defaultStoreUpdatesDir=os.path.join(globalVars.appArgs.configPath, 'updates')
+try:
+	os.makedirs(defaultStoreUpdatesDir)
+except OSError:
+	if not os.path.isdir(defaultStoreUpdatesDir):
+		log.debugWarning("Default download path for updates %s could not be created."%defaultStoreUpdatesDir)
+#:  keep downloaded updates for X days
+keepUpdatesFor=0
+
 #: Persistent state information.
 #: @type: dict
 state = None
@@ -80,6 +91,39 @@ def checkForUpdate(auto=False):
 		return None
 	return info
 
+def isPendingUpdate():
+	try:
+		pendingUpdateFile=state["pendingUpdateFile"]
+	except:
+		pendingUpdateFile=False
+	if not pendingUpdateFile or not os.path.isfile(pendingUpdateFile):
+		return None
+	return pendingUpdateFile
+
+def executeUpdate(destPath=None):
+	if not destPath:
+		destPath=isPendingUpdate()
+	if not destPath:
+		return
+	state["pendingUpdateFile"]=None
+	state["pendingUpdateVersion"]=None
+	saveState()
+	shellapi.ShellExecute(None, None,
+		destPath.decode("mbcs"),
+		u"--install -m" if config.isInstalledCopy() else u"--launcher",
+		None, 0)
+
+def askInstallUpdateNow():
+	exitDialogEnabled=config.conf["general"]["askToExit"]
+	return gui.messageBox(
+					# Translators: A message presented when the update has been successfully downloaded asking the user to install or postpone.
+		_("Update is ready to install.\nYou can install it now, or install it later from the exit dialog.\nInstall now?") if exitDialogEnabled else
+		# Translators: A message presented when the update has been successfully downloaded asking the user to install or postpone.
+		_("Update is ready to install.\nYou can install it now, or install it later from the NVDA menu.\nInstall now?"),
+		# Translators: The title of the dialog displayed when the update is about to be installed.
+		_("Install Update"),wx.YES|wx.NO|wx.ICON_WARNING
+	)==wx.YES
+
 class UpdateChecker(object):
 	"""Check for an updated version of NVDA, presenting appropriate user interface.
 	The check is performed in the background.
@@ -167,7 +211,7 @@ class AutoUpdateChecker(UpdateChecker):
 	def _result(self, info):
 		if not info:
 			return
-		if info["version"] == state["dontRemindVersion"]:
+		if (info["version"] == state["dontRemindVersion"]) or (info["version"] == state["pendingUpdateVersion"]):
 			return
 		wx.CallAfter(UpdateResultDialog, gui.mainFrame, info, True)
 
@@ -180,20 +224,26 @@ class UpdateResultDialog(wx.Dialog):
 		mainSizer = wx.BoxSizer(wx.VERTICAL)
 
 		if updateInfo:
-			self.isInstalled = config.isInstalledCopy()
 			self.urls = updateInfo["launcherUrl"].split(" ")
-			# Translators: A message indicating that an updated version of NVDA is available.
-			# {version} will be replaced with the version; e.g. 2011.3.
-			message = _("NVDA version {version} is available.").format(**updateInfo)
+			if isPendingUpdate() and state["pendingUpdateVersion"] == updateInfo["version"]:
+				message = _("The latest update is already pending to be installed.")
+			else:
+				# Translators: A message indicating that an updated version of NVDA is available.
+				# {version} will be replaced with the version; e.g. 2011.3.
+				message = _("NVDA version {version} is available.").format(**updateInfo)
 		else:
 			# Translators: A message indicating that no update to NVDA is available.
 			message = _("No update available.")
 		mainSizer.Add(wx.StaticText(self, label=message))
 
 		if updateInfo:
-			if self.isInstalled:
-				# Translators: The label of a button to download and install an NVDA update.
-				label = _("Download and &install update")
+			if isPendingUpdate() and state["pendingUpdateVersion"] == updateInfo["version"]:
+				# Translators: The label of a button to install a pending NVDA update.
+				item = wx.Button(self, label=_("&Install update"))
+				item.Bind(wx.EVT_BUTTON, lambda evt: executeUpdate())
+				mainSizer.Add(item)
+				# Translators: The label of a button to re-download a pending NVDA update.
+				label = _("Re-download update")
 			else:
 				# Translators: The label of a button to download an NVDA update.
 				label = _("&Download update")
@@ -202,7 +252,7 @@ class UpdateResultDialog(wx.Dialog):
 
 			mainSizer.Add(item)
 
-			if auto:
+			if auto and (not isPendingUpdate() or state["pendingUpdateVersion"] != updateInfo["version"]):
 				# Translators: The label of a button to remind the user later about performing some action.
 				item = wx.Button(self, label=_("Remind me &later"))
 				item.Bind(wx.EVT_BUTTON, self.onLaterButton)
@@ -225,10 +275,7 @@ class UpdateResultDialog(wx.Dialog):
 		DonateRequestDialog(gui.mainFrame, self._download)
 
 	def _download(self):
-		if self.isInstalled:
-			UpdateDownloader(self.urls).start()
-		else:
-			os.startfile(self.urls[0])
+		UpdateDownloader(self.urls,self.updateInfo["version"]).start()
 		self.Destroy()
 
 	def onLaterButton(self, evt):
@@ -241,12 +288,15 @@ class UpdateDownloader(object):
 	To use, call L{start} on an instance.
 	"""
 
-	def __init__(self, urls):
+	def __init__(self, urls, version=None):
 		"""Constructor.
 		@param urls: URLs to try for the update file.
 		@type urls: list of str
+		@param version: The version of the update we are downloading.
+		@type version: str
 		"""
 		self.urls = urls
+		self.version = version
 		self.destPath = tempfile.mktemp(prefix="nvda_update_", suffix=".exe")
 
 	def start(self):
@@ -360,18 +410,30 @@ class UpdateDownloader(object):
 			wx.OK | wx.ICON_ERROR)
 
 	def _downloadSuccess(self):
+		global storeUpdatesDir, keepUpdatesFor
 		self._stopped()
-		# Translators: The message presented when the update has been successfully downloaded
-		# and is about to be installed.
-		gui.messageBox(_("Update downloaded. It will now be installed."),
-			# Translators: The title of the dialog displayed when the update is about to be installed.
-			_("Install Update"))
-		state["removeFile"] = self.destPath
+		while not os.path.isdir(storeUpdatesDir) or not os.access(storeUpdatesDir, os.W_OK|os.X_OK):
+			with wx.DirDialog(gui.mainFrame, _("Store updates directory not writable. Select a writable one"), defaultPath=storeUpdatesDir) as d:
+				if d.ShowModal() == wx.ID_OK:
+					storeUpdatesDir = d.Path
+				else:
+					break
+		moveDest=os.path.join(storeUpdatesDir, os.path.basename(self.destPath))
+		try:
+			os.renames(self.destPath, moveDest)
+		except:
+			gui.messageBox(
+				# Translators: The message when downloaded update file could not be preserved.
+				_("The downloaded file could not be moved to a safe location and could disappear on the next system restart.\n"
+					"NVDA still can use it during this session, but if you want to preserv it, you can copy it yourselv from:\n"
+					"%s" % self.destPath),
+				_("Error"), wx.OK | wx.ICON_ERROR)
+			moveDest=self.destPath
+		state["pendingUpdateFile"]=moveDest
+		state["pendingUpdateVersion"]=self.version
 		saveState()
-		shellapi.ShellExecute(None, None,
-			self.destPath.decode("mbcs"),
-			u"--install -m",
-			None, 0)
+		if askInstallUpdateNow():
+			executeUpdate(moveDest)
 
 class DonateRequestDialog(wx.Dialog):
 	# Translators: The message requesting donations from users.
@@ -424,27 +486,50 @@ class DonateRequestDialog(wx.Dialog):
 
 def saveState():
 	try:
-		cPickle.dump(state, file(_stateFilename, "wb"))
+		with open(_stateFilename, "wb") as sfp:
+			cPickle.dump(state, sfp)
 	except:
 		log.debugWarning("Error saving state", exc_info=True)
 
 def initialize():
-	global state, _stateFilename, autoChecker
+	global state, _stateFilename, autoChecker, storeUpdatesDir, keepUpdatesFor
+	if config.conf["update"]["storeUpdatesDir"] and os.path.isdir(config.conf["update"]["storeUpdatesDir"]):
+		storeUpdatesDir=config.conf["update"]["storeUpdatesDir"]
+	else:
+		storeUpdatesDir=defaultStoreUpdatesDir
+	if config.conf["update"]["keepUpdatesFor"] >= 0:
+		keepUpdatesFor=config.conf["update"]["keepUpdatesFor"]
 	_stateFilename = os.path.join(globalVars.appArgs.configPath, "updateCheckState.pickle")
 	try:
-		state = cPickle.load(file(_stateFilename, "r"))
+		with open(_stateFilename, "r") as sfp:
+			state = cPickle.load(sfp)
 	except:
 		# Defaults.
 		state = {
 			"lastCheck": 0,
 			"dontRemindVersion": None,
+			"pendingUpdateVersion": None,
+			"pendingUpdateFile": None,
 		}
 
-	# If we just updated, remove the updater file.
+	# check the pending version against the current version
 	try:
-		os.remove(state.pop("removeFile"))
-		saveState()
-	except (KeyError, OSError):
+		if state["pendingUpdateVersion"] == versionInfo.version:
+			raise
+	except:
+		state["pendingUpdateFile"] = state["pendingUpdateVersion"] = None
+	# if there is pending update, and it was moved because the storeUpdatesDir was changed - update the path
+	if state["pendingUpdateFile"] and not os.path.isfile(state["pendingUpdateFile"]) and not state["pendingUpdateFile"].startswith(storeUpdatesDir):
+		state["pendingUpdateFile"] = os.path.join(storeUpdatesDir, os.path.basename(state["pendingUpdateFile"]))
+
+	# remove all updates files older than keepUpdatesFor, except the one that is currently pending (if any)
+	try:
+		for file in os.listdir(storeUpdatesDir):
+			f=os.path.join(storeUpdatesDir, file)
+			if file.startswith("nvda_update_") and file.endswith(".exe") and (f != state["pendingUpdateFile"]) and (os.stat(f).st_mtime < time.time() - keepUpdatesFor * 86400):
+				os.remove(f)
+				log.debug("Update file %s removed: older than %s days"%(f,keepUpdatesFor))
+	except OSError:
 		pass
 
 	if config.conf["update"]["autoCheck"] and not globalVars.appArgs.launcher:
diff --git a/user_docs/en/userGuide.t2t b/user_docs/en/userGuide.t2t
index 0bd2a61..1dad4a9 100644
--- a/user_docs/en/userGuide.t2t
+++ b/user_docs/en/userGuide.t2t
@@ -596,8 +596,8 @@ This option is a checkbox that, when checked, tells NVDA to automatically save t
 
 ==== Show exit options on exiting NVDA ====
 This option is a checkbox that allows you to choose whether or not a dialog appears when you exit NVDA that asks what action you want to perform.
-When checked, a dialog will appear when you attempt to exit NVDA asking whether you want to exit, restart or restart with addons disabled.
-When unchecked, NVDA will exit directly.
+When checked, a dialog will appear when you attempt to exit NVDA asking whether you want to exit, restart, restart with addons disabled or Run pending updates (if any).
+When unchecked, NVDA will exit directly. In that case, you will have the option of Running pending updates from the next to last option in the NVDA menu with the same name as the combo box item.
 
 ==== Play sounds when starting or exiting NVDA ====
 This option is a checkbox that, when checked, tells NVDA to play sounds when it starts or exits.
@@ -624,6 +624,20 @@ This option is only available for installed copies of NVDA.
 If this is enabled, NVDA will automatically check for updated versions of NVDA and inform you when an update is available.
 You can also manually check for updates by selecting Check for updates under Help in the NVDA menu.
 
+==== Notify me for pending updates on startup ====
+If this is enabled, NVDA will inform you when there is a pending update on startup, offering you the option to install it.
+You can also manually run the pending update from the Exit NVDA dialog (if enabled, or from NVDA menu otherwise), or when you perform a new check.
+
+==== Store updates in ====
+This is an edit field with a browse button next to it where you can tell NVDA where to store its updates that have not been installed yet.
+There is also a button called "Use default" for reverting this setting to its defaults, which is a folder called updates under the folder with your user configuration.
+If there are update files which have been stored in this folder and you change it - they will be moved to the new location.
+
+==== Keep downloaded updates for ====
+This field allows you to determin how long the downloaded updates should be kept (in days).
+All update files which have been installed and are older than that period will be removed .
+Default is 0, which meens that update files will be deleted right after installation.
+
 +++ Synthesizer Selection (NVDA+control+s) +++
 The Synthesizer dialog, which is found under "Synthesizer..." in the Preferences menu, allows you to select which Synthesizer NVDA should use to speak with.
 Once you have selected your synthesizer of choice, you can press Ok and NVDA will load the selected Synthesizer.
