nisi安装包 打印日志语法,NSIS 安装包制作常用代码
在制作安装包的过程中,有些常用的步骤需要考虑。比如安装程序需要检查程序是否正在运行,vs2010运行时库是否已经安装等。
1、检查vs2010运行时库是否已经安装。
Function InstallX86
Push $R0
ClearErrors
ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "Version"
IfErrors 0 VSRedistInstalled
ClearErrors
ReadRegDword $R0 HKLM "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}" "Version"
IfErrors 0 VSRedistInstalled
ExecWait '"$INSTDIR\vcredist_x86.exe" /q' # silent install
VSRedistInstalled:
Exch $R0
FunctionEnd
Function CheckVCRedist
Call InstallX86
FunctionEnd
“CheckVCRedist”函数可以在合适的Section中调用。
调用条件:1、vcredist_x86.exe在安装目录下。
2、注意“{196BB40D-1578-3D01-B289-BEFC77A11A1E}”和“{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}”,这是vs2010运行时库的id
其他版本的id需要查找。
2、在安装过程中需要判断文件是否已经存在。按照是否存在,做不同的处理。
IfFileExists "$DOCUMENTS\atwork\xxxx.ini" 0 +2
Goto ini_has
CreateDirectory "$DOCUMENTS\atwork"
SetOutPath "$DOCUMENTS\atwork\"
File ".\release\xxxx.ini"
ini_has:
IfFileExists "$DOCUMENTS\atwork\xxxx.db" 0 +2
Goto db_has
CreateDirectory "$DOCUMENTS\atwork"
SetOutPath "$DOCUMENTS\atwork\"
File ".\release\xxxx.db"
db_has:
............
3、判断被安装的程序是否正在运行中
Function .onInit
FindProcDLL::FindProc "xxxx.exe"
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "安装程序检测到 xxxx.exe 正在运行,请退出程序后重试"
Quit
no_run:
FunctionEnd
注意:1、网上很多示例代码在"FindProcDLL::FindProc "xxxx.exe""的下一行,都有 “Pop $Ro”这句代码。
在测试中如果存在这句代码,是不能真确检查进程是否存在的。
2、需要在下载“FindProcDLL.dll”插件。将插件放入NSIS安装目录下的“Plugins\x86-ansi”路径下。
以上代码,基本都来源网络,谢谢原创。如有侵权,请告之。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
