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