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