diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 502c05473008ac3f399f8689a63ce799667fcd7b..03a727468ed852d691042ef893bd52ee8ed48834 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -767,6 +767,12 @@ def construct(self):
                 self.path("uk.lproj")
                 self.path("zh-Hans.lproj")
 
+                #VMP icons
+                if self.prefix("vmp_icons"):
+                    self.path("*.png")
+                    self.path("*.gif")
+                    self.end_prefix("vmp_icons")
+
                 def path_optional(src, dst):
                     """
                     For a number of our self.path() calls, not only do we want
diff --git a/indra/newview/vmp_icons/SL_Logo.gif b/indra/newview/vmp_icons/SL_Logo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c24d6b08cbda0d7d597932733eb04b9f805b858a
Binary files /dev/null and b/indra/newview/vmp_icons/SL_Logo.gif differ
diff --git a/indra/newview/vmp_icons/SL_Logo.png b/indra/newview/vmp_icons/SL_Logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e376c72f976253c8d54c0186667552d45bea937
Binary files /dev/null and b/indra/newview/vmp_icons/SL_Logo.png differ
diff --git a/indra/newview/vmp_icons/head-sl-logo.gif b/indra/newview/vmp_icons/head-sl-logo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d635348dccc1988947ec7c41d6a86a86371da207
Binary files /dev/null and b/indra/newview/vmp_icons/head-sl-logo.gif differ
diff --git a/indra/newview/vmp_icons/head-sl-logo.png b/indra/newview/vmp_icons/head-sl-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c214e96d1cc22698384815cd696cb780fd0e16a
Binary files /dev/null and b/indra/newview/vmp_icons/head-sl-logo.png differ
diff --git a/indra/viewer_components/manager/InstallerUserMessage.py b/indra/viewer_components/manager/InstallerUserMessage.py
index 4f81aa9cd1d71e48c5b9c22bc5c9257ab515725d..8002399659d081c429066285679e90762bf0a104 100644
--- a/indra/viewer_components/manager/InstallerUserMessage.py
+++ b/indra/viewer_components/manager/InstallerUserMessage.py
@@ -50,7 +50,7 @@ class InstallerUserMessage(tk.Tk):
     #Linden standard green color, from Marketing
     linden_green = "#487A7B"
 
-    def __init__(self, text="", title="", width=500, height=200, icon_name = None, icon_path = None):
+    def __init__(self, text="", title="", width=500, height=200, wraplength = 400, icon_name = None, icon_path = None):
         tk.Tk.__init__(self)
         self.grid()
         self.title(title)
@@ -71,7 +71,8 @@ def __init__(self, text="", title="", width=500, height=200, icon_name = None, i
 
         #find a few things
         self.script_dir = os.path.dirname(os.path.realpath(__file__))
-        self.icon_dir = os.path.abspath(os.path.join(self.script_dir, 'icons'))
+        self.contents_dir = os.path.dirname(self.script_dir)
+        self.icon_dir = os.path.abspath(os.path.join(self.contents_dir, 'Resources/vmp_icons'))
 
         #finds the icon and creates the widget
         self.find_icon(icon_path, icon_name)
@@ -104,6 +105,7 @@ def find_icon(self, icon_path = None, icon_name = None):
         if not icon_path:
             icon_path = self.icon_dir
         icon_path = os.path.join(icon_path, icon_name)
+        print icon_path
         if os.path.exists(icon_path):
             icon = tk.PhotoImage(file=icon_path)
             self.image_label = tk.Label(image = icon)
@@ -222,12 +224,16 @@ def progress_bar(self, message = None, size = 0, interval = 100, pb_queue = None
         self.check_scheduler()
 
     def check_scheduler(self):
-        if self.value < self.progress["maximum"]:
-            self.check_queue()            
-            self.id = self.after(100, self.check_scheduler)
-        else:
-            #prevent a race condition between polling and the widget destruction
-            self.after_cancel(self.id)
+        try:
+            if self.value < self.progress["maximum"]:
+                self.check_queue()            
+                self.id = self.after(100, self.check_scheduler)
+            else:
+                #prevent a race condition between polling and the widget destruction
+                self.after_cancel(self.id)
+        except tk.TclError:
+            #we're already dead, just die quietly
+            pass
 
     def check_queue(self):
         while self.queue.qsize():
@@ -264,7 +270,7 @@ def run(self):
 
 if __name__ == "__main__":
     #When run as a script, just test the InstallUserMessage.  
-    #To proceed with the test, close the first window, select on the second.  The third will close by itself.
+    #To proceed with the test, close the first window, select on the second and fourth.  The third will close by itself.
     import sys
     import tempfile
 
@@ -278,6 +284,8 @@ def set_and_check(frame, value):
 
     #basic message window test
     frame2 = InstallerUserMessage(text = "Something in the way she moves....", title = "Beatles Quotes for 100", icon_name="head-sl-logo.gif")
+    print frame2.contents_dir
+    print frame2.icon_dir
     frame2.basic_message(message = "...attracts me like no other.")
     print "Destroyed!"
     sys.stdout.flush()
diff --git a/indra/viewer_components/manager/update_manager.py b/indra/viewer_components/manager/update_manager.py
index 647e7a77e6d53f5715b934c37cd474b675f60341..796256811930fb46ea1059fb3870fad858fb6b6c 100755
--- a/indra/viewer_components/manager/update_manager.py
+++ b/indra/viewer_components/manager/update_manager.py
@@ -452,6 +452,8 @@ def update_manager(cli_overrides = None):
         if 'set' in cli_overrides.keys():
             if 'UpdaterMaximumBandwidth' in cli_overrides['set'].keys():    
                 chunk_size = cli_overrides['set']['UpdaterMaximumBandwidth']
+        else:
+            chunk_size = 1024
     else:
         chunk_size = 1024