当前位置: 首页 > 文档资料 > NSIS 用户手册 >

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