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”路径下。

以上代码,基本都来源网络,谢谢原创。如有侵权,请告之。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部