Lo primero es lo primero: no tengo experiencia en programación orientada a objetos, sea cual sea. Creé mi cuota de scripts de VB y un poco de Java en la escuela, pero eso es todo. Entonces mi problema probablemente yazca allí. Sin embargo, en los últimos días, he intentado juntar una pequeña aplicación que me permite buscar, seleccionar e instalar actualizaciones de Windows. Hasta ahora he podido comprender la mayor parte de la referencia y con la ayuda de algunas publicaciones en Internet y ahora estoy en el punto en que puedo seleccionar y descargar actualizaciones.C# y WUAPI: función BeginDownload
Hasta ahora he sido capaz de descargar una colección de cambios utilizando el siguiente código:
UpdateCollection CurrentInstallCollection = (UpdateCollection)e.Argument;
UpdateDownloader CurrentDownloader = CurrentSession.CreateUpdateDownloader();
CurrentDownloader.Updates = CurrentInstallCollection;
Esto se ejecuta en un trabajador y vuelve fondo una vez que la descarga se realiza. Funciona muy bien, puedo ver las actualizaciones descargadas en el sistema de archivos, pero no hay realmente una manera de mostrar el progreso dentro de la aplicación. Para hacer tal cosa, existe la interfaz IDownloadJob que me permite usar el método .BeginDownload del descargador (UpdateSession.CreateUpdateDownloader) ... al menos creo. : D Y aquí viene el problema: ahora he intentado durante aproximadamente 6 horas para que el código funcione, pero no importa lo que intenté, nada funcionó. Además, no hay mucha información alrededor en el Internet sobre el método .BeginDownload (o al menos eso parece), pero mi llamada del método no funciona:
IDownloadJob CurrentDownloadJob = CurrentDownloader.BeginDownload();
no tengo ni idea de lo argumentos para suministrar ... He intentado métodos, objetos ... en vano. El bloque completo de código es el siguiente:
UpdateCollection CurrentInstallCollection = (UpdateCollection)e.Argument;
UpdateDownloader CurrentDownloader = CurrentSession.CreateUpdateDownloader();
CurrentDownloader.Updates = CurrentInstallCollection;
IDownloadJob CurrentDownloadJob = CurrentDownloader.BeginDownload();
IDownloadProgress CurrentJobProgess = CurrentDownloadJob.GetProgress();
tbStatus.Text = Convert.ToString(CurrentJobProgess.PercentComplete);
he encontrado una fuente en el Internet que llama el método con .BeginDownload(this,this,this)
, que no reporta ningún error en el editor de código, pero probablemente no va a ayudar con la presentación de informes como entiendo, los argumentos proporcionados son los métodos que se invocan cuando ocurre el evento descrito (el progreso ha cambiado o la descarga ha finalizado).
También probé esto, pero no funcionó bien:
http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/636a8399-2bc1-46ff-94df-a58cebfe688c
Una descripción detallada del método BeginDownload:
http://msdn.microsoft.com/en-us/library/aa386132(v=VS.85).aspx
Wuapi Referencia:
Lamentablemente, no puedo publicar el enlace, pero el enlace al método BeginDownload va al mismo lugar. :)
Lo sé, es bastante pedir, pero si alguien pudiera señalarme en la dirección correcta (como en qué argumentos para pasar y cómo), sería muy apreciado. :)
¿Alguien sabe cómo configurar el idioma de las actualizaciones recuperadas? w/.Search ("IsInstalled = 0 AND IsPresent = 0"); Recibo todos los idiomas y casi fui al letón pero pude cancelar. – DukeDidntNukeEm