Methods, systems, and configured storage media are provided for discovering
software updates, discovering if a given computer can use the software update,
and then updating the computers with the software as needed automatically across
a network without storing the updates on an intermediate machine within the network.
Furthermore, when a failure is detected, the rollout is stopped and the software
can be automatically removed from those computers that already were updated. The
software update can be stored originally at an address that is inaccessible through
the network firewall by intermediately uploading the software update to an update
computer which is not a part of the network but has access through the firewall,
which is then used to distribute the update.