   handleUpdateAll: (callback) ->
     if !@props.disabled
       updating = @state.updating
-      toUpdate = []
+      toInstall = []
       for plugin, index in plugins
-        if semver.lt(plugin.version, @state.latest[plugin.packageName]) && @state.removeStatus[index] == 0
+        if needUpdate(plugin.version, @state.latest[plugin.packageName]) && @state.removeStatus[index] == 0
           updating[index] = true
-          toUpdate.push plugin.packageName
+          toInstall.push "#{plugin.packageName}@#{@state.latest[plugin.packageName]}"
       npm.load npmConfig, (err) ->
-        npm.commands.update toUpdate, (er, data) ->
+        npm.commands.install toInstall, (er, data) ->
           callback(er)
       @setState
         updating: updating

                      {
                        if @state.updating[index]
                           __ "Updating"
                        else if semver.lt(plugin.version, @state.latest[plugin.packageName])
                           __ "Update"
                        else
                           __ "Latest"

                      }
                    </Button>
                    <Button bsStyle='primary'
                            disabled={@state.updating[index] || not needUpdate(plugin.version, @state.latest[plugin.packageName]) || @state.removeStatus[index] != 0}
                            onClick={@handleUpdate.bind @, index, @handleUpdateComplete}
                            style={width: "33%"}
                            className="plugin-control-button">
                      <FontAwesome name={
                                     if @state.updating[index]
                                       "spinner"
                                     else if needUpdate(plugin.version, @state.latest[plugin.packageName])
                                       "cloud-download"
                                     else
                                       "check"
