những điều đầu tiên đầu tiên: Tôi không có kinh nghiệm trong lập trình hướng đối tượng, bất cứ điều gì. Tôi đã tạo phần chia sẻ các tập lệnh VB và một chút Java trong trường học, nhưng đó là nó. Vì vậy, vấn đề của tôi rất có thể nằm ở đó. Nhưng tuy nhiên, trong vài ngày qua, tôi đã cố gắng để có được một ứng dụng nhỏ với nhau cho phép tôi quét, chọn và cài đặt các bản cập nhật Windows. Cho đến nay tôi đã có thể hiểu hầu hết các tài liệu tham khảo và với sự giúp đỡ của một vài bài viết trên internet và bây giờ tôi đang ở thời điểm mà tôi có thể chọn và tải xuống các bản cập nhật.C# và WUAPI: BeginDownload chức năng
Cho đến nay tôi đã có thể tải về một tập hợp các thông tin cập nhật bằng cách sử dụng đoạn mã sau:
UpdateCollection CurrentInstallCollection = (UpdateCollection)e.Argument;
UpdateDownloader CurrentDownloader = CurrentSession.CreateUpdateDownloader();
CurrentDownloader.Updates = CurrentInstallCollection;
này được chạy trong một nền công nhân và trả về một lần tải về xong. Nó hoạt động tốt, tôi có thể thấy các bản cập nhật được tải xuống trên hệ thống tệp nhưng thực sự không có cách nào để hiển thị tiến trình trong ứng dụng. Để làm một điều như vậy, có giao diện IDownloadJob cho phép tôi sử dụng phương thức .BeginDownload của trình tải xuống (UpdateSession.CreateUpdateDownloader) ... tôi nghĩ, ít nhất. : D Và ở đây có vấn đề: Bây giờ tôi đã cố gắng trong khoảng 6 giờ để có được mã làm việc, nhưng không có vấn đề gì tôi đã cố gắng không có gì làm việc. Ngoài ra, không có nhiều thông tin xung quanh trên internet về các phương pháp .BeginDownload (hoặc ít nhất là có vẻ như cách mà), nhưng cuộc gọi của tôi về phương pháp này không làm việc:
IDownloadJob CurrentDownloadJob = CurrentDownloader.BeginDownload();
tôi không có đầu mối gì đối số để cung cấp ... Tôi đã thử phương pháp, đối tượng ... vô ích. Khối đầy đủ các mã trông như thế này:
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);
Tôi đã tìm thấy một nguồn trên internet mà gọi là phương pháp với .BeginDownload(this,this,this)
, mà không báo cáo bất kỳ lỗi trong trình soạn thảo mã nhưng có lẽ sẽ không giúp với báo cáo vì nó là sự hiểu biết của tôi, rằng các đối số được cung cấp là các phương thức được gọi khi xảy ra sự kiện được mô tả (tiến trình đã thay đổi hoặc quá trình tải xuống đã hoàn tất).
Tôi cũng đã cố gắng này, nhưng nó đã không làm việc một trong hai:
http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/636a8399-2bc1-46ff-94df-a58cebfe688c
Mô tả chi tiết của phương pháp BeginDownload:
http://msdn.microsoft.com/en-us/library/aa386132(v=VS.85).aspx
WUAPI tham khảo:
Rất tiếc, tôi không được phép đăng liên kết nhưng liên kết đến phương thức BeginDownload đến cùng một nơi. :)
Tôi biết, đó là một chút để hỏi, nhưng nếu ai đó có thể chỉ cho tôi đi đúng hướng (như trong đó lập luận để vượt qua và làm thế nào), nó sẽ được rất nhiều đánh giá cao! :)
Bất cứ ai cũng biết cách đặt Ngôn ngữ của các bản cập nhật được tìm nạp? w/.Search ("IsInstalled = 0 AND IsPresent = 0"); Tôi nhận được tất cả các ngôn ngữ và tôi gần như đã đi Latvia nhưng đã có thể hủy bỏ. – DukeDidntNukeEm