B.3 库的卸载
优质
小牛编辑
128浏览
2023-12-01
B.3.1 说明
UnInstallLib 宏用来卸载一个库。如果在卸载过程中发生了错误将会放置一个错误标记。
B.3.2 参数
库类型 是否共享 卸载方式 文件
库类型
库的类型
DLL - 动态链接库 (DLL)
REGDLL - 要注册的 DLL
TLB - 类型库或包含 LIBRARY 类型的 DLL
REGDLLTLB - 要注册的 DLL 并包含类型库
是否共享
指定要卸载的库是否与其它应用程序共享
NOTSHARED - 该库不是共享的
SHARED - 该库是共享的且仅在共享库计数减少到不再使用时才移除。
卸载方式
指定卸载方式
NOREMOVE
- 该库不要被移除。你应该在公共的或重要的系统文件比如 Visual Basic/C++/MFC 运行时库使用该选项。
REBOOT_PROTECTED
- 如果正在使用则等重启后移除 (系统文件必须)。
- 当文件没有系统保护时移除。
NOREBOOT_PROTECTED
- 当库正在使用时警告用户。使用户可以关闭正在使用该库的应用程序。
- 当文件没有系统保护时移除。
REBOOT_NOTPROTECTED
- 如果正在使用则等重启后移除 (系统文件必须)。
- 移除该库而不检测系统文件保护。
NOREBOOT_NOTPROTECTED
- 当库正在使用时警告用户。使用户可以关闭正在使用该库的应用程序。
- 移除该库而不检测系统文件保护。
文件
用户系统里要卸载的文件位置
B.3.3 选项
LIBRARY_SHELL_EXTENSION
- 在插入 UninstallLib 宏之前定义来在反注册后调用带 SHCNE_ASSOCCHANGED 的 SHChangeNotify 函数。它可以在卸载了环境扩展或更改了文件关联后刷新环境。
LIBRARY_COM
- 在插入 UninstallLib 宏之前定义来在反注册后调用CoFreeUnusedLibraries 函数。当卸载了 COM 库后它可以从内存里卸载所有不需要的库文件。
B.3.4 例子
!insertmacro UnInstallLib REGDLL SHARED REBOOT_NOTPROTECTED $SYSDIR\dllname.dll