Buenas no soy ningún experto, pero para la descarga con un boton desde la app se me ocurre que utilizes este codigo:
public class MainActivity extends Activity {
private long enqueue;
private DownloadManager dm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void onClick(View view) {
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse("http://www.pagina.com/tuapp.apk"));
enqueue = dm.enqueue(request);
}
/*el apk se te descarga y lo ves en la barra de notificaciones ademas puedes añadir un segundo boton para mostar las descargas si no quieres "bajar" la barra de notificaciones; segundo boton:*
public void showDownload(View view) {
Intent i = new Intent();
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS) ;
startActivity(i);
}
}
edito: en el layout te creas dos botones con atributos android

nClick="onClick" y el otro android

nClick="showDownload"
para los servers de XDA ni idea.
Para notificar masivamente puedes hacer que tu app haga una consulta http y compruebe su version contra la de la respuesta http, si coinciden nada, si son distintas procedes a la descarga.
Los expertos te responderan mejor que yo , Saludos.