makensiscode.bat 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 
  2. chcp 65001
  3. @set DestPath=%cd%\AppFile\laser\
  4. @echo off& setlocal EnableDelayedExpansion
  5. @set DestFiles=%cd%\SetupScripts\app.nsh
  6. @set DestFiles2=%cd%\SetupScripts\app-1.nsh
  7. del ".\SetupScripts\app.nsh"
  8. del ".\SetupScripts\app-1.nsh"
  9. @set total=1
  10. @echo off
  11. @rem 统计文件总数
  12. for /f "tokens=*" %%a in ('dir /s/b/a-d %DestPath%') do (
  13. @set /a total+=1
  14. )
  15. @set curr=0
  16. @set tmpValue=1
  17. @rem 做首级目录处理
  18. for /f "delims=*" %%d in ('dir /a-d/b %DestPath%') do (
  19. set /a curr+=1
  20. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  21. @echo Push !curr! >> %DestFiles%
  22. @echo Call ExtractCallback >> %DestFiles%
  23. @echo File "%DestPath%%%d" >> %DestFiles%
  24. @rem @echo "%%d"
  25. )
  26. @rem 循环遍历各个子目录,进行处理,生成NSIS指令
  27. @set dstString=
  28. for /f "delims=*" %%a in ('dir /s/ad/b %DestPath%') do (
  29. @set foldername=%%a
  30. @set "foldername=!foldername:%DestPath%=%dstString%!"
  31. @rem @echo !foldername!
  32. @rem 截取出来相关的目录 设置OutputPath
  33. @echo SetOutPath "$INSTDIR\!foldername!" >> %DestFiles%
  34. @rem 循环其下的文件
  35. for /f "delims=*" %%c in ('dir /a-d/b %%a') do (
  36. @set /a curr+=1
  37. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  38. @echo Push !curr! >> %DestFiles%
  39. @echo Call ExtractCallback >> %DestFiles%
  40. @echo File "%%a\%%c" >> %DestFiles%
  41. @rem @echo "%%c"
  42. )
  43. )
  44. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  45. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  46. @echo Call ExtractCallback >> %DestFiles%
  47. set /a i=0
  48. for /f "delims=" %%i in ('findstr /n .* %DestFiles%' ) do (
  49. set "a=%%i"
  50. set "a=!a:*:=!"
  51. set "b=!a:%DestPath%=${APP_FILE_DIR}\!"
  52. echo.!b!>> %DestFiles2%
  53. )
  54. del %DestFiles%
  55. ren %DestFiles2% app_%total%.nsh
  56. echo 总计:%total%
  57. chcp 936