NSIS 进度条精确显示 (学习六)

#1、界面的搭建

;创建简要说明
 Pop $0
 ${NSD_CreateLabel} 40 243 100 20 "开始安装..."
 Pop $9
 ;进度条的创建
 ${NSD_CreateProgressBar} 24 265 460 20 ""
 SkinProgress::Set $PB_ProgressBar "$PLUGINSDIR\loading2.bmp" "$PLUGINSDIR\loading1.bmp"
 Pop $8
 ${NSD_CreateTimer} OnDialogTimer 100

#2、事件

Function Extractfunc

 ;Call DiskFrameWorkSpaceCheck ;检查磁盘的空间 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 SetOutPath $INSTDIR
 /*
 该命令设置了由 File 命令使用的覆盖标记来决定目标文件已存在时是否覆盖。如果覆盖标记为 on,则目标文件被覆盖 (这个是默认值)。
 如果覆盖标记为 off,则已存在的文件不会被覆盖。如果覆盖标记为 try,文件仅当可以被覆盖时 (就是说假如文件不能写入,它会自动略过而不需要用户决定) 才会覆盖目标文件。
 如果覆盖标记为 ifnewer,则仅当已存在的文件比新文件旧时才会覆盖目标文件。如果覆盖标记为 ifdiff,则仅当已存在的文件比新文件旧或新时才会覆盖目标文件。
 注意在 ifnewer 或 ifdiff 模式下,目标文件的日期都会被设为新文件的日期,而不管 SetDateSave 是怎么设置的。
 */
 SetOverwrite ifnewer

;这个文件是应该安装的文件
 File "Main.7z"
 GetFunctionAddress $R9 Callback
 Nsis7z::ExtractWithCallback "Main.7z" $R9 ;必须使用这一句
/*
 WriteUninstaller "$INSTDIR\uninst.exe" ;生成卸载exe,自动调用section Uninstall
 WriteRegStr HKLM "$PRODUCT_INSTALL_KEY" "InstallDir" "$INSTDIR"
 WriteRegStr HKLM "$PRODUCT_UNINST_KEY" "Version" "${PRODUCT_VERSION}"
 ;WriteRegStr HKLM "$PRODUCT_INSTALL_KEY" "Version" "$PRODUCT_VERSION_NAME" 
 WriteRegStr HKLM "$PRODUCT_UNINST_KEY" "DisplayName" "$(^Name)"
 WriteRegStr HKLM "$PRODUCT_UNINST_KEY" "UninstallString" "$INSTDIR\uninst.exe"
 WriteRegStr HKLM "$PRODUCT_UNINST_KEY" "DisplayIcon" "$INSTDIR\$PRODUCT_NAMEEXE"
 WriteRegStr HKLM "$PRODUCT_UNINST_KEY" "DisplayVersion" "$PRODUCT_VERSION_NAME"
 Delete "$OUTDIR\$PRODUCT_OUTFILE_MAIN7z"
*/
 WriteUninstaller "$INSTDIR\uninst.exe" ;生成卸载exe,自动调用section Uninstall
 WriteRegStr HKLM "${PRODUCT_INSTALL_KEY}" "Version" "${PRODUCT_VERSION}" ; 根键 子键 项 值
 
 #跳到下一个界面
 StrCpy $R9 1 ;Goto the next page
 Call RelGotoPage
FunctionEnd
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容