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

B.2 库的安装

优质
小牛编辑
129浏览
2023-12-01

B.2.1 说明

安装库使用 InstallLib 宏。如果在安装过程中发生了错误将会放置一个错误标记。

要检测安装完成后是否需要重启可以使用 MUI 并且带一个完成页面或者使用 IfRebootFlag 指令来判断。

B.2.2 参数

库类型 是否共享 安装方式 本地文件 目标文件 临时目录

库类型

库的类型

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

是否共享

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

NOTSHARED - 该库不共享
$VARNAME - 当应用程序第一次安装时为空, 安装时将使共享库计数增加。

安装方式

指定安装方式

REBOOT_PROTECTED

  • 正在使用时等待重启后更新文件 (系统文件必须)。
  • 当文件没有系统文件保护时更新文件。

NOREBOOT_PROTECTED

  • 当文件正在使用时警告用户。用户将可以关闭使用该文件的应用程序。
  • 当文件没有系统文件保护时更新文件。

REBOOT_NOTPROTECTED

  • 正在使用时等待重启后更新文件 (系统文件必须)。
  • 不检测系统文件保护而直接更新文件。

NOREBOOT_NOTPROTECTED

  • 当文件正在使用时警告用户。用户将可以关闭使用该文件的应用程序。
  • 不检测系统文件保护而直接更新文件。

本地文件

编译时文件的位置。

目标文件

用户系统里需要更新文件的位置。

临时目录

当系统需要重启时用来保存临时文件的目录。

要支持 Windows 9x/ME ,该目录应该和目标文件位于同一个卷。Windows 临时目录可以位于任何卷,所以你不能使用该目录。

B.2.3 选项

LIBRARY_SHELL_EXTENSION

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

LIBRARY_COM

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

B.2.4 注意事项

  • 如果你想要支持 Windows 9x/ME,那么你只能使用短文件名 (8.3)。
  • 警告:当配置 DLL 时,总是使用可分配的文件。不要从你的系统目录里复制文件。

B.2.5 例子

 ;如果应用程序已安装,请把 $ALREADY_INSTALLED 设为一个非零的值。
 ;例如:
 IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;将 MyApp.exe 替换为你的应用程序
   StrCpy $ALREADY_INSTALLED 1
 new_installation:
 !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR