首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WUAPI在C#中静默安装更新

使用WUAPI在C#中静默安装更新
EN

Stack Overflow用户
提问于 2011-08-19 06:27:57
回答 3查看 3.3K关注 0票数 0

我正在尝试创建一个静默处理更新的程序。我使用的是带有许多类(c#)的wuapilib.dll。我对程序的第一次修改如下(忽略打字错误问题-它在另一台没有互联网接入的计算机上,所以我要手动输入它):

代码语言:javascript
复制
IUpdateSession mySess = new UpdateSession();
IUpdateSearcher mySear = mySess.CreateUpdateSearcher();
ISearchResult myRes = mySear.Search("Type='Software'");
IUpdateDownloader myDown = mySess.CreateUpdateDownloader();
IUpdateInstaller myInst = mySess.CreateUpdateInstaller();

myDown.Updates = myRes.Updates;
myDown.Download();
myInst.Updates = myRes.Updates;
myInst.Install();

忽略已经下载或安装更新的情况,我省略了上面的逻辑。我的问题是,IUpdateInstaller不允许你强制进行静默安装--很多更新都需要用户点击确认框。IUpdateInstaller2类做到了(我从here的第二篇文章中得到了这一点),但我一直找不到一种方法来获取IUpdateInstaller2对象。似乎没有任何内容返回,而且Microsoft的文档中也没有包含任何示例代码。广泛的谷歌搜索没有任何用处。

我想我真的很接近了--功能就在那里,我只是不能完全访问它。

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2011-08-22 23:35:37

我检查了一下(或者更确切地说,我想我检查过了--不太清楚如何让它工作),看起来CreateUpdateInstaller只返回了一个IUpdateInstaller,其他什么都没有。

然而,我发现代码(在一个中文网站上,有趣的是)直接将IUpdateInstaller转换为IUpdateInstalelr2,这解决了我的问题。

谢谢你的帮助

票数 1
EN

Stack Overflow用户

发布于 2013-02-28 11:19:38

我在另一个问题中发布了我的应用程序,搜索,下载,然后安装Windows更新。

请参阅:C# and WUAPI: BeginDownload function

您可以轻松地更改:

代码语言:javascript
复制
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();

Thread thread = new Thread(() =>
{
Form1 form1 = new Form1();
form1.Visible = false;
form1.ShowInTaskbar = false;
Application.Run(form1);
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
}

然后处理

代码语言:javascript
复制
Application.Close();

在事件做完他们的事情之后。例如,如果未找到任何更新,则关闭应用程序。我使用接口的异步属性,以便它可以执行异步所需的操作。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-06-08 16:58:49

我也找了很长时间。你只需要把它转换成

代码语言:javascript
复制
IUpdateInstaller2 installer = new UpdateInstaller();

根据Microsoft文档,还有版本3和4可用。但这肯定是个错误。版本3的函数在IUpdateInstaller2中也可用,而版本4的函数我从未在任何地方找到过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7114913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档