IAssemblyCache::UninstallAssembly 方法 (winsxs.h)

UnistallAssembly 方法从并行存储中删除对程序集的应用程序引用。 如果其他应用程序没有对程序集的其他引用,该程序集将变得不可用。 Windows 可能会从并行存储中删除程序集的文件,并在以后回收磁盘空间。

语法

HRESULT UninstallAssembly(
  [in]            DWORD                       dwFlags,
  [in]            LPCWSTR                     pszAssemblyName,
  [in]            LPCFUSION_INSTALL_REFERENCE pRefData,
  [out, optional] ULONG                       *pulDisposition
);

参数

[in] dwFlags

此参数必须为 0。

[in] pszAssemblyName

指向以 null 结尾的字符串值的指针,该值包含程序集的完全指定的强名称。 如果未提供全名,则结果为未定义。

[in] pRefData

指向 FUSION_INSTALL_REFERENCE 结构的指针,该结构描述保存对要移除的程序集的引用的应用程序。 如果此值为 null,则并行存储中不会保留应用程序对程序集的引用,并且会删除程序集的文件。

注意 字符 \、/、:、;、*、 <、 >和 | 在引用 ID 中无效。
 

[out, optional] pulDisposition

指向描述所执行的操作的整数值的指针。

pulDisposition 参数可以包含以下值之一或 null。

含义
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED
程序集文件已从并行存储中删除。
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE
由于应用程序正在使用程序集,因此尚未删除程序集的文件。
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED
并行存储中不存在程序集。
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING
保留。
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES
程序集的文件尚未删除,因为并行存储包含另一个应用程序对程序集的引用。
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND
在 pRefData 中指定的引用不存在于并行存储中。

返回值

此方法可以返回其中一个值。

返回值 说明
S_OK
程序集的文件已从并行存储中删除。
S_FALSE
操作成功,并且删除了对程序集的引用。 由于 pulDisposition 返回的值所描述的原因,未从并行存储中删除程序集文件。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 winsxs.h
DLL Sxs.dll

另请参阅

IAssemblyCache