NSIS制作Qt自定义界面安装包(四):NSIS脚本实用技巧和注意事项

NSIS脚本实用技巧和注意事项

增加安装日志文件 install.log

下载NSIS 对应版本的log 并覆盖替换,参考文章(一)

添加代码

!include "LogicLib.nsh"

# ...

# MessageBox MB_OK "$INSTDIR"
LogSet on

#...

注意, 使用LogSet on 时候,"$INSTDIR" 必须不为空,否则不会生成install.log

效果

最后在安装目录下生成  install.log

禁止多个安装程序实例

在.onInit中,添加下面代码

Function .onInit
	
	# 禁止多个安装程序实例
	System::Call 'kernel32::CreateMutexA(i 0, i 0, t "zhkt_install") i .r1 ?e'
	Pop $R0
	StrCmp $R0 0 +3
	MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经在运行。"
	Abort

FunctionEnd

创建快捷方式不成功

        在NSIS 脚本OnStartExtractFiles 函数中创建快捷不成功,请在.onInstSuccess 创建快捷方式。可能是因为 OnStartExtractFiles 是绑定的后台运行的回调函数。

脚本中宏不能嵌套调用

以下错误代码示例


!macro InstallExeDepand RegKey SubRegKey DepandExeName Arg
	
	File /oname=$PLUGINSDIR\${DepandExeName} ".\depands\${DepandExeName}"
	
	Push $R0
	ClearErrors
   ;这里检测 该版本的运行时版本号是否存在
   ReadRegStr $R0 HKLM "${RegKey}" "${SubRegKey}"
   ; 
   IfErrors 0 +2
        ; Exec "$PLUGINSDIR\${VcRedistName} /q"   ;若不存在,执行静默安装
		ExecWait "$PLUGINSDIR\${DepandExeName} ${Arg}"   ; 调试安装
	
   StrCpy $R0 "-1"
   ;MessageBox MB_OK  "安装完毕"

   pop $R0
   
!macroend

# 宏内插入宏 是不支持的 下面代码是错误的
!macro InstallVcRedist GUID VcRedistName Arg
	
	!insertmacro InstallExeDepand "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${GUID} "BundleVersion" ${VcRedistName} ${Arg}
   
!macroend

注意上面为错误的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值