可卸载修补程序
是否可以卸载修补程序取决于修补程序的创作方式、用于安装修补程序的 Windows Installer 版本以及修补程序对应用程序所做的更改。 如果修补程序不可卸载,则删除修补程序的唯一方法是卸载整个应用程序并重新安装,而无需应用要删除的修补程序。
可以使用 命令行选项、MsiRemovePatches 函数或 RemovePatches 方法 来调用使用 Windows Installer 版本 3.0 应用的修补程序的卸载,如 卸载修补程序 部分中所述。 Windows Installer 验证 MSIPATCHREMOVE 属性中要删除的每个修补程序是否可卸载。 如果用户没有删除修补程序的权限,则产品修补程序未知,修补程序策略会阻止删除,或者修补程序被标记为不可卸载,安装程序将返回指示安装事务失败的错误。
Windows Installer 2.0:不支持。 使用低于 Windows Installer 3.0 的 Windows Installer 版本应用的修补程序不可卸载。
不可卸载的修补程序
在以下情况下,应用于已安装应用程序的修补程序(.msp 文件)不可卸载。 删除不可卸载的修补程序的唯一方法是卸载已修补的应用程序,然后重新安装应用程序,而无需重新应用修补程序。 在这种情况下,必须重新应用不希望从应用程序中删除的任何修补程序。
使用低于 Windows Installer 3.0 的 Windows Installer 版本应用的修补程序不可卸载。
不适用于管理员设置的 DisablePatchUninstall 策略的计算机上安装的应用程序的修补程序。 设置此 计算机策略后,即使管理员也无法卸载计算机上的修补程序。
其数据库中没有 MsiPatchMetadata 表的修补程序不可卸载。
MsiPatchMetadata 表中不包含以下行的修补程序不可卸载。 对于公司、属性和值的其他值,此修补程序不可卸载。
公司 财产 价值 {Null} AllowRemoval 1 修补程序已应用于在用户没有足够的权限卸载修补程序的上下文中安装的应用程序。 下表中的单词“不允许”表示管理员或非管理员用户无法从在此上下文中安装的已修补的应用程序卸载修补程序。 此表中的“允许”一词意味着特权不会阻止管理员或非管理员用户卸载修补程序,但是出于本部分中讨论的任何其他原因,可能无法卸载修补程序。
应用程序安装上下文 管理员卸载修补程序 非管理员卸载修补程序 Per-Machine 允许 通常不允许唯一的例外是使用 (LUA) 修补应用修补程序。 标记为 LUA 修补程序的修补程序可由管理员或非管理员卸载。 LUA 修补仅适用于从媒体安装的包,并且需要特殊创作。 Per-User 当前用户的非托管用户 允许 允许 为不同用户 Per-User 非托管 不允许 不允许 为当前用户管理 Per-User 允许 不允许 为不同用户管理 Per-User 不允许 不允许 修补程序应用的主要升级 不可卸载。 应用程序的主要升级应通过安装升级的应用程序(.msi 文件)而不是修补程序来执行。
应用于管理安装的修补程序不可卸载。 不建议修补管理安装。 在用户从管理映像安装应用程序后,应在用户的计算机上应用当前修补程序集。 这可以防止用户计算机上缓存的 包代码 与管理安装上的包代码不同。 如果用户的计算机上缓存的包代码与管理安装上的包代码不同,请从管理安装重新安装应用程序,然后修补客户端计算机。
当修补程序将新内容添加到以下列表中的任何表时,Windows Installer 会将修补程序标记为不可卸载。 可卸载修补程序可以将新文件、程序集、注册表项、组件或功能添加到安装中,方法是向此列表中未包含的数据库表添加新行。
[!注意]
如果修补程序将新内容添加到 RemoveFile 或 RemoveRegistry 表中,Windows Installer 不会将修补程序标记为不可卸载。 但是,除非删除新内容的资源尚不存在于原始安装包中,否则修补程序不可卸载。 例如,如果修补程序向 RemoveFile 表添加新行,则如果文件位于 文件表外部,则无法通过卸载修补程序来还原已删除的文件。 该文件必须已创作在原始包的文件表中,以及要卸载的修补程序的已应用修补程序。
相关主题