我们暂时还是介绍工具来制作增量包,首先需要将应用目录打包成app.asar,同时将忽略的文件和文件夹制作成app.asar.unpacked文件夹,我们将所在的resources文件夹全部进行打包成exe安装包。
在增量包制作过程的脚本中有如下功能点:
DetailPrint "OS版本为: windows 7+"
${Else}
MessageBox MB_OK "本程序只能安装在 Windows 7 版本以上的操作系统!"
Abort
${EndIf}
要判断是否存在应用程序,如果没有该exe应用程序,说明从来没有安装过完整包,需要首先安装完整包,才会有增量更新包的安装。
由于增量更新包用于自动更新,所以采用静默安装的方式来打包。
SetSilent silent
更新包打包脚本示例:
; Titan_app.nsi
!define EXE_NAME "Titan"
!define PRODUCT_VERSION "1.5.1"
!define APP_DIR "electron\resources"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "nsProcess.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_INSTFILES
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe"
; MUI end ------
OutFile "${EXE_NAME}_${PRODUCT_VERSION}_app.exe"
Function .onInit
SetSilent silent
${nsProcess::KillProcess} "${EXE_NAME}.exe" $R2
Sleep 2000
${If} ${AtLeastWin7}
DetailPrint "OS版本为: windows 7+"
MessageBox MB_OK "本程序只能安装在 Windows 7 版本以上的操作系统!"
${EndIf}
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe" "Path"
Strcmp $R0 "" 0 NoAbort
MessageBox MB_ICONEXCLAMATION|MB_OK "未找到程序安装目录,请运行完整安装程序后再运行本更新程序!"
Abort
NoAbort:
DetailPrint "程序已经安装"
FunctionEnd
Section "MainSection" SEC01
SetOverwrite on
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe" "Path"
SetOutPath "$R0\resources\"
File /r "${APP_DIR}\*.*"
SectionEnd
Function .onInstSuccess
FunctionEnd
最后用命令行来打包,下面是一条打包的测试命令: