nisi安装包 打印日志语法_Nisi实现安装包制作

Nisi实现大型端游安装包制作

大型端游客户端往往客户端都有几个G,一般的普通软件安装包制作方式并不合适。于是选择了将客户端压缩成7z压缩包, NISI解压客户端的方式。

简介

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等插件功能。这如其名字所指出的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS 的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。       NSIS有一个限制:产生的安装包一旦超过2G必须使用分包机制。Window操作系统中超过4G的exe无法执行,所以考虑将安装包和安装程序.exe分离以减小安装程序。

工具

1.7Z安装包: 7z1805-x64.exe 2.NISI安装包:  nsis-3.03-setup.exe 3.nisedit脚本编辑器: nisedit2.0.3.exe

NSIS脚本结构

NSIS脚本(下称nsi脚本)主要包含安装程序属性、页面、区段、函数。 NSIS 大体布局如下:      1. 预设参数(包括外部压缩器选择、编译选项、宏定义以及文件包含等)      2.普通安装设置      3.自定义函数      4.安装程序区域内容      5.安装程序回调函数及其相关函数定义      6.卸载程序区域内容      7.卸载程序回调函数及其相关函数定义

示例代码如下:

; Script generated by the HM NIS Edit Script Wizard.

!AddPluginDir "Plugins"

;!include nsDialogs.nsh

; HM NIS Edit Wizard helper defines

!define PRODUCT_NAME "myexe"

!define PRODUCT_VERSION "1.0.0.5"

!define PRODUCT_WEB_SITE "http://www.myexe.com"

!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\myexeLauncher.exe"

!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"

!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------

!include "MUI.nsh"

; MUI Settings

!define MUI_ABORTWARNING

!define MUI_ICON "G:\LHXZ\InstallationPackage\Package\myexe.ico"

!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

; Welcome page

!insertmacro MUI_PAGE_WELCOME

; Directory page

!insertmacro MUI_PAGE_DIRECTORY

; Instfiles page

;!define MUI_INSTFILESPAGE_FINISHHEADER_TEXT "资源包较大,解压等待时间稍长,请勿关闭安装界面!"

!insertmacro MUI_PAGE_INSTFILES

; Finish page

;!define MUI_FINISHPAGE_TITLE "安装成功!"

!define MUI_FINISHPAGE_RUN "$INSTDIR\myexeLauncher.exe"

!insertmacro MUI_PAGE_FINISH

; Uninstaller pages

!insertmacro MUI_UNPAGE_INSTFILES

; Language files

!insertmacro MUI_LANGUAGE "SimpChinese"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

OutFile "myexeSetup.exe"

InstallDir "$PROGRAMFILES\myexe_1.0.0.5"

; 替换显示磁盘空间信息的文字

SpaceTexts "所需空间:5.9GB " "可用空间:"

InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""

ShowInstDetails show

ShowUnInstDetails show

SilentInstall normal

Section "MainSection" SEC01

SetOverwrite try

DetailPrint "安装文件准备中..."

SetOutPath "$INSTDIR"

SetDetailsPrint both

DetailPrint "由于资源包较大,解压等待时间稍长,请勿关闭安装界面!!!"

GetFunctionAddress $R9 Callback

Nsis7z::ExtractWithCallback "$EXEDIR\myexe_1.0.0.5.7z" $R9

DetailPrint "加载游戏资源需要几分钟,请勿关闭安装界面!!!"

CreateDirectory "$SMPROGRAMS\myexe"

CreateShortCut "$SMPROGRAMS\myexe\myexe.lnk" "$INSTDIR\myexeLauncher.exe"

CreateShortCut "$DESKTOP\myexe.lnk" "$INSTDIR\myexeLauncher.exe"

SectionEnd

Function Callback

Pop $R8

Pop $R9

SetDetailsPrint textonly

DetailPrint "解压资源包中 $R8 / $R9..."

FunctionEnd

Section -AdditionalIcons

CreateShortCut "$SMPROGRAMS\myexe\Uninstall.lnk" "$INSTDIR\uninst.exe"

SectionEnd

Section -Post

WriteUninstaller "$INSTDIR\uninst.exe"

WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\myexeLauncher.exe"

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\myexeLauncher.exe"

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"

SectionEnd

Function un.onUninstSuccess

HideWindow

MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"

FunctionEnd

Function un.onInit

MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2

Abort

FunctionEnd

Section Uninstall

RMDir /r "$SMPROGRAMS\myexe"

;RMDir /r "$INSTDIR"

Delete "$INSTDIR\avcodec-53.dll"

RMDir /r "$INSTDIR\GameEtc"

RMDir /r "$INSTDIR\GameGuard"

RMDir /r "$INSTDIR\datas"

RMDir /r "$INSTDIR\Bmp"

Delete "$DESKTOP\myexe.lnk"

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

SetAutoClose true

SectionEnd


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部