NSIS DLL/TLB 库的卸载

UnInstallLib 宏用来卸载一个库。.

参数
库类型 是否共享 卸载方式 文件库类型

库的类型

DLL - 动态链接库 (DLL)
REGDLL - 要注册的 DLL
TLB - 类型库或包含 LIBRARY 类型的 DLL
REGDLLTLB - 要注册的 DLL 并包含类型库

是否共享

指定要卸载的库是否与其它应用程序共享

NOTSHARED - 该库不是共享的
SHARED - 该库是共享的且仅在共享库计数减少到不再使用时才移除。

卸载方式

指定卸载方式

NOREMOVE

该库不要被移除。你应该在公共的或重要的系统文件比如 Visual Basic/C++/MFC 运行时库使用该选项。
REBOOT_PROTECTED

如果正在使用则等重启后移除 (系统文件必须)。
当文件没有系统保护时移除。
NOREBOOT_PROTECTED

当库正在使用时警告用户。使用户可以关闭正在使用该库的应用程序。
当文件没有系统保护时移除。
REBOOT_NOTPROTECTED

如果正在使用则等重启后移除 (系统文件必须)。
移除该库而不检测系统文件保护。
NOREBOOT_NOTPROTECTED

当库正在使用时警告用户。使用户可以关闭正在使用该库的应用程序。
移除该库而不检测系统文件保护。

文件

用户系统里要卸载的文件位置

选项
LIBRARY_SHELL_EXTENSION

在插入 UninstallLib 宏之前定义来在反注册后调用带 SHCNE_ASSOCCHANGED 的 SHChangeNotify 函数。它可以在卸载了环境扩展或更改了文件关联后刷新环境。

LIBRARY_COM

在插入 UninstallLib 宏之前定义来在反注册后调用CoFreeUnusedLibraries 函数。当卸载了 COM 库后它可以从内存里卸载所有不需要的库文件。

例子 !insertmacro UnInstallLib REGDLL SHARED REBOOT_NOTPROTECTED $SYSDIR\dllname.dll