我们暂时还是介绍工具来制作增量包,首先需要将应用目录打包成app.asar,同时将忽略的文件和文件夹制作成app.asar.unpacked文件夹,我们将所在的resources文件夹全部进行打包成exe安装包。

    在增量包制作过程的脚本中有如下功能点:

    1. DetailPrint "OS版本为: windows 7+"
    2. ${Else}
    3. MessageBox MB_OK "本程序只能安装在 Windows 7 版本以上的操作系统!"
    4. Abort
    5. ${EndIf}

    要判断是否存在应用程序,如果没有该exe应用程序,说明从来没有安装过完整包,需要首先安装完整包,才会有增量更新包的安装。

    由于增量更新包用于自动更新,所以采用静默安装的方式来打包。

    1. SetSilent silent

    更新包打包脚本示例:

    1. ; Titan_app.nsi
    2. !define EXE_NAME "Titan"
    3. !define PRODUCT_VERSION "1.5.1"
    4. !define APP_DIR "electron\resources"
    5. ; MUI 1.67 compatible ------
    6. !include "MUI.nsh"
    7. !include "nsProcess.nsh"
    8. ; MUI Settings
    9. !define MUI_ABORTWARNING
    10. !insertmacro MUI_PAGE_INSTFILES
    11. !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe"
    12. ; MUI end ------
    13. OutFile "${EXE_NAME}_${PRODUCT_VERSION}_app.exe"
    14. Function .onInit
    15. SetSilent silent
    16. ${nsProcess::KillProcess} "${EXE_NAME}.exe" $R2
    17. Sleep 2000
    18. ${If} ${AtLeastWin7}
    19. DetailPrint "OS版本为: windows 7+"
    20. MessageBox MB_OK "本程序只能安装在 Windows 7 版本以上的操作系统!"
    21. ${EndIf}
    22. ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe" "Path"
    23. Strcmp $R0 "" 0 NoAbort
    24. MessageBox MB_ICONEXCLAMATION|MB_OK "未找到程序安装目录,请运行完整安装程序后再运行本更新程序!"
    25. Abort
    26. NoAbort:
    27. DetailPrint "程序已经安装"
    28. FunctionEnd
    29. Section "MainSection" SEC01
    30. SetOverwrite on
    31. ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\${EXE_NAME}.exe" "Path"
    32. SetOutPath "$R0\resources\"
    33. File /r "${APP_DIR}\*.*"
    34. SectionEnd
    35. Function .onInstSuccess
    36. FunctionEnd

    最后用命令行来打包,下面是一条打包的测试命令: