code: function _cmdUpdate(packagePath, destinationDirectory, options, callback, pCallback) {
      _cmdInstall(packagePath, destinationDirectory, options, callback, pCallback, true);
  }
docs: Implements the "update" command in the "extensions" domain.
  
  Currently, this just wraps _cmdInstall, but will remove the existing directory
  first.
  
  There is no need to call validate independently. Validation is the first
  thing that is done here.
  
  After the extension is validated, it is installed in destinationDirectory
  unless the extension is already present there. If it is already present,
  a determination is made about whether the package being installed is
  an update. If it does appear to be an update, then result.installationStatus
  is set to NEEDS_UPDATE. If not, then it's set to ALREADY_INSTALLED.
  
  If the installation succeeds, then result.installationStatus is set to INSTALLED.
  
  The extension is unzipped into a directory in destinationDirectory with
  the name of the extension (the name is derived either from package.json
  or the name of the zip file).
  
  The destinationDirectory will be created if it does not exist.
  
  @param {string} Absolute path to the package zip file
  @param {string} the destination directory
  @param {{disabledDirectory: !string, apiVersion: !string, nameHint: ?string,
  systemExtensionDirectory: !string}} additional settings to control the installation
  @param {function} callback (err, result)
  @param {function} pCallback (msg) callback for notifications about operation progress