makensiscode.bat 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 SetOverwrite ifnewer >> %DestFiles%
  41. @echo File "%%a\%%c" >> %DestFiles%
  42. @rem @echo "%%c"
  43. )
  44. )
  45. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  46. @echo Push ${APP_FILE_COUNT} >> %DestFiles%
  47. @echo Call ExtractCallback >> %DestFiles%
  48. set /a i=0
  49. for /f "delims=" %%i in ('findstr /n .* %DestFiles%' ) do (
  50. set "a=%%i"
  51. set "a=!a:*:=!"
  52. set "b=!a:%DestPath%=${APP_FILE_DIR}\!"
  53. echo.!b!>> %DestFiles2%
  54. )
  55. del %DestFiles%
  56. ren %DestFiles2% app.nsh
  57. echo %DestFiles%
  58. xcopy %DestFiles% I:\prox\laser_pc\AppCode\laser\ /y
  59. @echo "总计:%total%"
  60. chcp 65001 %total%