如何使用 Inno Setup 确定是否安装了特定的 Windows 更新包 (KB*.msu)?

2023-12-31

我想知道如何确定目标计算机中是否安装了特定的 Windows 更新包,例如名为的 Windows 更新包KB2919355 https://support.microsoft.com/en-us/kb/2919355.

是否存在内置功能来检查?如果不是,确定它所需的代码是什么?也许会弄乱注册表,或者可能是最干净和/或安全的方式?

伪代码:

[Setup]
...

[Files]
Source: {app}\*; DestDir: {app}; Check: IsPackageInstalled('KB2919355')

[Code]
function IsPackageInstalled(packageName): Boolean;
  begin
    ...
    Result := ...;
  end;

function IsKBInstalled(KB: string): Boolean;
var
  WbemLocator: Variant;
  WbemServices: Variant;
  WQLQuery: string;
  WbemObjectSet: Variant;
begin
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('', 'root\CIMV2');

  WQLQuery := 'select * from Win32_QuickFixEngineering where HotFixID = ''' + KB + '''';

  WbemObjectSet := WbemServices.ExecQuery(WQLQuery);
  Result := (not VarIsNull(WbemObjectSet)) and (WbemObjectSet.Count > 0);
end;

使用如下:

if IsKBInstalled('KB2919355') then
begin
  Log('KB2919355 is installed');
end
  else 
begin
  Log('KB2919355 is not installed');
end;

Credits:

  • WMI 更新查询:
    如何通过命令行查询我的系统是否安装了知识库补丁? https://serverfault.com/q/263847/168875
  • 使用 Inno Setup 中的 WMI:
    @TLama的回答 https://stackoverflow.com/q/21390130/850848#21408578 to Inno Setup Pascal 脚本搜索正在运行的进程 https://stackoverflow.com/q/21390130/850848.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Inno Setup 确定是否安装了特定的 Windows 更新包 (KB*.msu)? 的相关文章

  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • 无法加载 JNI 共享库 (JDK)

    当我尝试打开时Eclipse http www eclipse org 弹出对话框指出 无法加载 JNI 共享库 C JDK bin client jvm dll 此后 Eclipse 强制关闭 我想提出以下几点 我检查了这条路径上是否存在
  • 使用 Inno Setup 更快地创建安装程序

    当我在大量文件 gt 2GB 上运行 Inno Setup 时 需要很长时间才能运行 我相信它把时间花在了压缩上 这应该是 CPU 限制的 但它只使用了几个 CPU 有没有办法将其分散到 许多 更多核心 具体来说 我正在处理这个提升发布存储
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • C# WMI 在远程 PC 上运行一个 exe,然后在同一台 PC 上运行另一个 exe,然后在网络路径上调用 Directory.CreateDirectory 并失败

    使用 C WMI 我在另一台计算机上启动一个 exe 该 exe 使用 C 启动另一个 exeProcess班级 最后一个 exe 尝试调用Directory CreateDirectory使用网络路径 又名 comp1 d dir Dir
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • Windows 上的 boot2docker 缺少 apt-get / 包管理器

    我在 boot2docker 中 我不确定我完全理解它 但它似乎是我正在进行的项目所需要的 我已经通过 ssh 登录了 并且尝试对我们的项目进行 make 但是我得到了 make not found 然后我尝试了一个 apt get ins
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • Windows 8 Metro 应用程序(网格应用程序)过渡时出现黑色闪烁

    我正在基于网格应用程序模板构建 Windows 8 Metro 应用程序 一切都很顺利 直到我尝试更改应用程序的主题和背景 我将图像背景应用于所有 3 个 XAML 页面的网格 另外 我在应用程序包清单中将主题更改为 Light 但它没有执
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • 使用 Visual C++ 在桌面上绘图

    我正在编写一个 opencv 应用程序 使用 Visual Studio VC 控制台应用程序使用激光束进行绘图 我想在桌面上画线 我知道绘图功能在 GDI32 dll 中可用 但对如何将 GDI32 dll 与我的 vc 代码集成感到困惑
  • 无法设置气流,在“启动气流数据库”时出现错误

    无法设置气流 在 启动气流数据库 时出现错误 我收到以下错误 File Library Frameworks Python framework Versions 3 8 bin airflow line 26 in

随机推荐

  • 如何用Python做华夫饼图? (方形饼图)

    Something like this 有一个很好的包在 R 中做到这一点 https github com hrbrmstr waffle 在Python中 我能想到的最好的办法就是使用squarify包 灵感来自关于如何制作树形图的帖子
  • 如何在 C# 3.5 中对泛型方法施加接口约束?

    我想在 C 3 5 中实现这样的目标 public void Register
  • Elasticsearch 访问日志

    我正在尝试追踪谁向 ElasticSearch 集群发出查询 Elastic 似乎没有访问日志 有没有地方可以找出哪个 IP 正在访问集群 Elasticsearch 不提供任何开箱即用的安全性 即有目的和有意设计 所以你有几个解决方案 不
  • 如何使用 pdfbox 生成可下载的 PDF(损坏的 PDF)?

    如何使 PDF 文件可通过链接下载 我正在使用 JSF 构建一个 Web 应用程序 当用户单击 另存为 PDF 链接时 应该可以下载 PDF 到目前为止 我有一个生成 PDF 文件的工作代码 但该文件保存在我的桌面上 我想要做的是 当用户单
  • 检测 iPhone 应用程序的 iPad 2x 按钮

    有没有办法检测您的 iPhone 应用程序在 iPad 上运行 2x 1x 我需要能够检测我的应用程序每英寸点数的差异 检查scale财产 UIScreen mainScreen scale 这是一个方便的功能 BOOL screenIs2
  • 将 *.lib 文件与 MinGW 链接

    是否可以链接 lib与 MinGW 一起使用文件 我将其与 Eclipse 一起使用 我正在与 libcurl OpenSSL 作斗争 我不明白我的错误是否是因为我尝试使用 lib MinGW 中的文件或其他错误 lib libeay32
  • 将 Phoenix 项目拆分为应用程序

    Mix 提供了一个伞式项目的功能 其中独立的功能 应用程序 可以一起运行 但可以松散耦合并单独开发 在我的 phoenix 应用程序中 我想将身份验证逻辑移动到一个单独的应用程序中 以便稍后重用它 然而 对于我的身份验证应用程序 模块 我需
  • 如何找到 Hive 中表的上次修改时间戳?

    我正在尝试获取 Hive 中表的最后修改时间戳 请使用以下命令 show TBLPROPERTIES table name transient lastDdlTime
  • 跟踪以查看 AngularJS 中视图何时发生变化

    有谁知道如何在视图改变时使角度射击成为事件 或者在请求并下载视图时 我正在尝试添加页面更改时的加载动画 看一眼这个线程 https groups google com d topic angular OroP1DBE6AA discussi
  • 设置 DataContext 后 PropertyChanged 事件为 null

    我将视图构造函数中视图的 DataContext 设置为 ViewModel 的实例 只是标准的东西 此后不久 一个UPDATE RECENT DOCUMENTS LIST事件从事件聚合器触发 我的 ViewModel 正确捕获了该事件 更
  • 在某些情况下,SVG 在 Safari 中过滤模糊

    我有一个带有交互式 SVG 的页面 它在除 Safari 之外的所有浏览器 Firefox Chrome 甚至 IE Edge 上看起来都很好 其中受 SVG 过滤器之一影响的所有内容都会变成模糊的糊状 看起来像是渲染在低分辨率上的东西 使
  • JQuerymobile 和 Bartender Tabbar - 单独的图标

    我对 JQM 和 CSS 很陌生 所以如果这是一个简单的问题 我很抱歉 我一直在使用 Bartender Tabbar http www stokkers mobi valuables bartender html 和 JQM Barten
  • 都在同一个视图 MVC3 中创建和列出

    所以我想做的是在同一视图中同时创建和列出一个视图 所以我读到我可以为此使用 ViewModel 所以我创建了我的视图模型 Evento ViewModel public class EventoViewModel public Evento
  • 如何使locateCenterOnScreen更准确-PYTHON-,-WINDOWS-

    您好 我的目标是能够让我的机器人在任何屏幕尺寸上单击我选择的内容 因为我认为这是主要问题 我尝试降低置信度 但最终只是点击了具有相同一般颜色的其他内容 我用精确的图像对其进行了测试 它点击了正确的位置 因此它不像坐标已关闭或任何其他东西 它
  • 程序不包含适合入口点的静态“main”方法

    我知道这个问题已经被问了很多次 但似乎没有一个解决方案对我有用 或者我只是无能 需要我的手来解决这个问题 最有可能的解决方案 我查看了所有类 并且所有构建操作都设置为编译 所以我不知道可能出了什么问题 有什么帮助吗 额外细节 我一直在编写游
  • 设置mapView的边界

    我有一个应用程序调用 api 并返回位置列表 返回数据后 我将 JSON 转换为地图点以进行注释 这些都可以毫无问题地添加到 ma 中 我遇到的问题是设置地图的边界 我似乎无法弄清楚 我目前拥有的代码是 handleResponse res
  • 在后台运行 matlab

    我正在 48 个虚拟机上运行 matlab 并且希望将其自动化 我通过 ssh 进入机器然后使用matlab r matlab command gt outfile txt 让进程在后台运行并在我注销时正常运行 唯一的问题是当我jobs我的
  • 登录后react-redux重定向到其他页面

    action js export const login creds gt console log url login const requestOptions method POST headers Accept application
  • 卸载时如何删除设置

    我的程序是通过 Visual Studio 安装项目安装的 该程序运行时会创建一个user config文件位于其默认位置 因为我正在使用Settings http msdn microsoft com en us library aa73
  • 如何使用 Inno Setup 确定是否安装了特定的 Windows 更新包 (KB*.msu)?

    我想知道如何确定目标计算机中是否安装了特定的 Windows 更新包 例如名为的 Windows 更新包KB2919355 https support microsoft com en us kb 2919355 是否存在内置功能来检查 如