Index: /trunk/doc/manual/en_US/user_GuestAdditions.xml
===================================================================
--- /trunk/doc/manual/en_US/user_GuestAdditions.xml	(revision 33767)
+++ /trunk/doc/manual/en_US/user_GuestAdditions.xml	(revision 33768)
@@ -206,9 +206,13 @@
 
         <para>In the "Devices" menu in the virtual machine's menu bar,
-        VirtualBox has a handy menu item named "Install guest additions",
-        which mounts the Guest Additions ISO file inside your virtual machine.
-        A Windows guest should then automatically start the Guest Additions
-        installer, which installs the Guest Additions into your Windows
-        guest.</para>
+        VirtualBox has a handy menu item named "Install Guest Additions",
+        which either allows to upgrade already installed Guest Additions
+        (only Windows Guest Additions 4.0 and later) automatically or
+        mounts the Guest Additions ISO file inside your virtual machine
+        to perform a manual update.</para>
+
+        <para>In case of a manual update, a Windows guest should then
+        automatically start the Guest Additions installer, which allows to
+        install the Guest Additions into your Windows guest.</para>
 
         <note>
@@ -1413,6 +1417,11 @@
     the guest.</para>
 
-    <para>To use this feature, use the VirtualBox command line. See <xref
-    linkend="vboxmanage-guestcontrol" /> for details.</para>
+    <para>Starting with version 4.0, the Guest Additions for Windows
+    allow for automatic updating (only already installed Guest Additions 4.0
+    or later).</para>
+
+    <para>To use these feature, use the VirtualBox command line or the GUI. See
+    <xref linkend="mountingadditionsiso" /> or <xref linkend="vboxmanage-guestcontrol" />
+    for details.</para>
   </sect1>
 
Index: /trunk/doc/manual/en_US/user_VBoxManage.xml
===================================================================
--- /trunk/doc/manual/en_US/user_VBoxManage.xml	(revision 33767)
+++ /trunk/doc/manual/en_US/user_VBoxManage.xml	(revision 33768)
@@ -2397,158 +2397,307 @@
     <screen>VBoxManage guestcontrol &lt;command&gt;</screen>
 
-    <para>At this time, the only available
-    <computeroutput>&lt;command&gt;</computeroutput> is "execute", which
-    allows for executing a program/script (process) which is already installed
-    and runnable on the guest. This command only works while a VM is up and
-    running and has the following syntax:</para>
-
-    <screen>VBoxManage guestcontrol execute &lt;vmname&gt;|&lt;uuid&gt;
-        &lt;pathToProgram&gt;
-        --username &lt;name&gt; --password &lt;password&gt;
-        [--arguments "&lt;arguments&gt;"]
-        [--environment "&lt;NAME&gt;=&lt;VALUE&gt; [&lt;NAME&gt;=&lt;VALUE&gt;]"]
-        [--flags &lt;flags&gt;] [--timeout &lt;msec&gt;]
-        [--verbose] [--wait-for exit,stdout,stderr||]</screen>
-
-    <para>where the parameters mean: <glosslist>
-        <glossentry>
-          <glossterm>uuid|vmname</glossterm>
-
-          <glossdef>
-            <para>The VM UUID or VM name. Mandatory.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>pathToProgram</glossterm>
-
-          <glossdef>
-            <para>Absolute path and process name of process to execute in the
-            guest, e.g.
-            <computeroutput>C:\Windows\System32\calc.exe</computeroutput></para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--arguments "&lt;arguments&gt;"</glossterm>
-
-          <glossdef>
-            <para>One or more arguments to pass to the process being
-            executed.</para>
-
-            <para>Arguments containing spaces must be enclosed in quotation
-            marks. More than one <computeroutput>--arguments</computeroutput>
-            at a time can be specified to keep the command line tidy.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--environment "&lt;NAME&gt;=&lt;VALUE&gt;"</glossterm>
-
-          <glossdef>
-            <para>One or more environment variables to be set or unset.</para>
-
-            <para>By default, the new process in the guest will be created
-            with the the standard environment of the guest OS. This option
-            allows for modifying that environment. To set/modify a variable, a
-            pair of <computeroutput>NAME=VALUE</computeroutput> must be
-            specified; to unset a certain variable, the name with no value
-            must set, e.g. <computeroutput>NAME=</computeroutput>.</para>
-
-            <para>Arguments containing spaces must be enclosed in quotation
-            marks. More than one
-            <computeroutput>--environment</computeroutput> at a time can be
-            specified to keep the command line tidy.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--flags &lt;flags&gt;</glossterm>
-
-          <glossdef>
-            <para>Additional flags to set. This is not used at the
-            moment.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--timeout &lt;msec&gt;</glossterm>
-
-          <glossdef>
-            <para>Value (in milliseconds) that specifies the time how long the
-            started process is allowed to run and how long VBoxManage waits
-            for getting output from that process. If no timeout is specified,
-            VBoxManage will wait forever until the started process ends or an
-            error occured.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--username &lt;name&gt;</glossterm>
-
-          <glossdef>
-            <para>Name of the user the process should run under. This user
-            must exist on the guest OS.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--password &lt;password&gt;</glossterm>
-
-          <glossdef>
-            <para>Password of the user account specified with
-            <computeroutput>--username</computeroutput>. If not given, an
-            empty password is assumed.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--verbose</glossterm>
-
-          <glossdef>
-            <para>Tells VBoxManage to be more verbose during the
-            execution.</para>
-          </glossdef>
-        </glossentry>
-
-        <glossentry>
-          <glossterm>--wait-for &lt;action&gt;</glossterm>
-
-          <glossdef>
-            <para>Tells VBoxManage to wait for a certain action to happen and
-            react to it. The following actions are available: <glosslist>
-                <glossentry>
-                  <glossterm>exit</glossterm>
-
-                  <glossdef>
-                    <para>Waits until the process ends and outputs its exit
-                    code along with the exit reason/flags.</para>
-                  </glossdef>
-                </glossentry>
-
-                <glossentry>
-                  <glossterm>stdout or stderr</glossterm>
-
-                  <glossdef>
-                    <para>Waits until the process ends and outputs its exit
-                    code along with the exit reason/flags. After that
-                    VBoxManage retrieves the output collected from the guest
-                    process's stdout and stderr.</para>
-                  </glossdef>
-                </glossentry>
-              </glosslist></para>
-          </glossdef>
-        </glossentry>
-      </glosslist></para>
-
-    <para><note>
-        <para>On Windows there are certain limitations for graphical
-        applications; please see <xref linkend="KnownIssues" /> for more
-        information.</para>
-      </note> Examples: <screen>VBoxManage --nologo guestcontrol execute "My VM" "/bin/ls" --arguments "-l /usr"
-           --username foo --password bar --wait-for stdout</screen> <screen>VBoxManage --nologo guestcontrol execute "My VM" "c:\\windows\\system32\\ipconfig.exe"
-           --username foo --password bar --wait-for stdout</screen> Note that
-    the double backslashes in the second example are only required on Unix
-    hosts.</para>
+    <para>The following subcommands are available (where
+    <computeroutput>&lt;vm&gt;</computeroutput>, in each case, can either be a
+    VM name or a VM UUID, as with the other VBoxManage commands):<itemizedlist>
+      <listitem>
+        <para><computeroutput>execute</computeroutput>, which
+          allows for executing a program/script (process) which is already installed
+          and runnable on the guest. This command only works while a VM is up and
+          running and has the following syntax:</para>
+
+          <screen>VBoxManage guestcontrol execute &lt;vmname&gt;|&lt;uuid&gt;
+            &lt;path to program&gt;
+            --username &lt;name&gt; --password &lt;password&gt;
+            [--arguments "&lt;arguments&gt;"]
+            [--environment "&lt;NAME&gt;=&lt;VALUE&gt; [&lt;NAME&gt;=&lt;VALUE&gt;]"]
+            [--flags &lt;flags&gt;] [--timeout &lt;msec&gt;]
+            [--verbose] [--wait-for exit,stdout,stderr||]</screen>
+
+          <para>where the parameters mean: <glosslist>
+            <glossentry>
+              <glossterm>uuid|vmname</glossterm>
+
+              <glossdef>
+                <para>The VM UUID or VM name. Mandatory.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+            <glossterm>path to program</glossterm>
+
+              <glossdef>
+                <para>Absolute path and process name of process to execute in the
+                guest, e.g.
+                <computeroutput>C:\Windows\System32\calc.exe</computeroutput></para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--arguments "&lt;arguments&gt;"</glossterm>
+
+              <glossdef>
+                <para>One or more arguments to pass to the process being
+                executed.</para>
+
+                <para>Arguments containing spaces must be enclosed in quotation
+                marks. More than one <computeroutput>--arguments</computeroutput>
+                at a time can be specified to keep the command line tidy.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--environment "&lt;NAME&gt;=&lt;VALUE&gt;"</glossterm>
+
+              <glossdef>
+                <para>One or more environment variables to be set or unset.</para>
+
+                <para>By default, the new process in the guest will be created
+                with the the standard environment of the guest OS. This option
+                allows for modifying that environment. To set/modify a variable, a
+                pair of <computeroutput>NAME=VALUE</computeroutput> must be
+                specified; to unset a certain variable, the name with no value
+                must set, e.g. <computeroutput>NAME=</computeroutput>.</para>
+
+                <para>Arguments containing spaces must be enclosed in quotation
+                marks. More than one
+                <computeroutput>--environment</computeroutput> at a time can be
+                specified to keep the command line tidy.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--flags &lt;flags&gt;</glossterm>
+
+              <glossdef>
+                <para>Additional flags to set. This is not used at the
+                moment.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--timeout &lt;msec&gt;</glossterm>
+
+              <glossdef>
+                <para>Value (in milliseconds) that specifies the time how long the
+                started process is allowed to run and how long VBoxManage waits
+                for getting output from that process. If no timeout is specified,
+                VBoxManage will wait forever until the started process ends or an
+                error occured.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--username &lt;name&gt;</glossterm>
+
+              <glossdef>
+                <para>Name of the user the process should run under. This user
+                must exist on the guest OS.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--password &lt;password&gt;</glossterm>
+
+              <glossdef>
+                <para>Password of the user account specified with
+                <computeroutput>--username</computeroutput>. If not given, an
+                empty password is assumed.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--verbose</glossterm>
+
+              <glossdef>
+                <para>Tells VBoxManage to be more verbose during the
+                execution.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--wait-for &lt;action&gt;</glossterm>
+
+              <glossdef>
+                <para>Tells VBoxManage to wait for a certain action to happen and
+                react to it. The following actions are available: <glosslist>
+                    <glossentry>
+                      <glossterm>exit</glossterm>
+
+                      <glossdef>
+                        <para>Waits until the process ends and outputs its exit
+                        code along with the exit reason/flags.</para>
+                      </glossdef>
+                    </glossentry>
+
+                    <glossentry>
+                      <glossterm>stdout or stderr</glossterm>
+
+                      <glossdef>
+                        <para>Waits until the process ends and outputs its exit
+                        code along with the exit reason/flags. After that
+                        VBoxManage retrieves the output collected from the guest
+                        process's stdout and stderr.</para>
+                      </glossdef>
+                    </glossentry>
+                  </glosslist></para>
+              </glossdef>
+            </glossentry>
+          </glosslist>
+        </para>
+
+        <para>
+          <note>
+            <para>On Windows there are certain limitations for graphical
+              applications; please see <xref linkend="KnownIssues" /> for more
+              information.
+            </para>
+          </note>
+          Examples: <screen>VBoxManage --nologo guestcontrol execute "My VM" "/bin/ls" --arguments "-l /usr"
+          --username foo --password bar --wait-for stdout</screen> <screen>VBoxManage --nologo guestcontrol execute "My VM" "c:\\windows\\system32\\ipconfig.exe"
+          --username foo --password bar --wait-for stdout</screen> Note that
+          the double backslashes in the second example are only required on Unix
+          hosts.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>copyto</computeroutput>, which
+          allows copying files from the host to the guest
+          (only with installed Guest Additions 4.0 and later).</para>
+
+          <screen>VBoxManage copyto &lt;vmname&gt;|&lt;uuid&gt;
+            &lt;source on host&gt; &lt;destination on guest&gt;
+            [--username "&lt;name&gt;"] [--password "&lt;password&gt;"]
+            [--dryrun] [--recursive] [--verbose] [--flags &lt;flags&gt;]</screen>
+
+          <para>where the parameters mean: <glosslist>
+            <glossentry>
+              <glossterm>uuid|vmname</glossterm>
+
+              <glossdef>
+                <para>The VM UUID or VM name. Mandatory.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+            <glossterm>source on host</glossterm>
+
+              <glossdef>
+                <para>Absolute path of source file(s) on host to copy over to
+                the guest, e.g.
+                <computeroutput>C:\Windows\System32\calc.exe</computeroutput>. This also
+                can be a wildcard expression, e.g.
+                <computeroutput>C:\Windows\System32\*.dll</computeroutput>
+                </para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+            <glossterm>destination on guest</glossterm>
+
+              <glossdef>
+                <para>Absolute destination path on the guest, e.g.
+                <computeroutput>C:\Temp</computeroutput></para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--username &lt;name&gt;</glossterm>
+
+              <glossdef>
+                <para>Name of the user the copy process should run under. This user
+                must exist on the guest OS.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--password &lt;password&gt;</glossterm>
+
+              <glossdef>
+                <para>Password of the user account specified with
+                <computeroutput>--username</computeroutput>. If not given, an
+                empty password is assumed.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--dryrun</glossterm>
+
+              <glossdef>
+                <para>Tells VBoxManage to only perform a dry run instead of
+                really copying files to the guest.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--recursive</glossterm>
+
+              <glossdef>
+                <para>Recursively copies files/directories.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--verbose</glossterm>
+
+              <glossdef>
+                <para>Tells VBoxManage to be more verbose during the
+                copy operation.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--flags &lt;flags&gt;</glossterm>
+
+              <glossdef>
+                <para>Additional flags to set. This is not used at the
+                moment.</para>
+              </glossdef>
+            </glossentry>
+
+            </glosslist>
+          </para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>updateadditions</computeroutput>, which
+          allows for updating an already installed Guest Additions version on
+          the guest (only already installed Guest Additions 4.0 and later).</para>
+
+          <screen>VBoxManage guestcontrol updateadditions &lt;vmname&gt;|&lt;uuid&gt;
+            [--source "&lt;guest additions .ISO file to use&gt;"] [--verbose]</screen>
+
+          <para>where the parameters mean: <glosslist>
+            <glossentry>
+              <glossterm>uuid|vmname</glossterm>
+
+              <glossdef>
+                <para>The VM UUID or VM name. Mandatory.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--source "&lt;guest additions .ISO file to use&gt;"</glossterm>
+
+              <glossdef>
+                <para>Full path to an alternative VirtualBox Guest Additions .ISO file to use
+                for the Guest Additions update.</para>
+              </glossdef>
+            </glossentry>
+
+            <glossentry>
+              <glossterm>--verbose</glossterm>
+
+              <glossdef>
+                <para>Tells VBoxManage to be more verbose during the
+                update.</para>
+              </glossdef>
+            </glossentry>
+
+            </glosslist>
+          </para>
+      </listitem>
+
+    </itemizedlist></para>
   </sect1>
 
Index: /trunk/doc/manual/user_ChangeLogImpl.xml
===================================================================
--- /trunk/doc/manual/user_ChangeLogImpl.xml	(revision 33767)
+++ /trunk/doc/manual/user_ChangeLogImpl.xml	(revision 33768)
@@ -24,4 +24,13 @@
       </listitem>
 
+      <listitem>
+        <para>Windows Additions: Support for automatic updating Guest Additions
+        (only already installed Windows Guest Additions 4.0 and later)</para>
+      </listitem>
+
+      <listitem>
+        <para>Guest Additions: Support for copying files from host to the guest</para>
+      </listitem>
+
     </itemizedlist>
 
