batch_to_exe.cmd 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. : Copyright 2019-2024 Tauri Programme within The Commons Conservancy
  2. : SPDX-License-Identifier: Apache-2.0
  3. : SPDX-License-Identifier: MIT
  4. @ECHO OFF
  5. REM Copyright 2019-2024 Tauri Programme within The Commons Conservancy
  6. REM SPDX-License-Identifier: Apache-2.0
  7. REM SPDX-License-Identifier: MIT
  8. ECHO Make EXE From BAT
  9. ECHO.
  10. ECHO.
  11. REM Usage:
  12. REM MakeExeFromBat BatFileToConvert [IncludeFile1] [IncludeFile2] [...]
  13. REM
  14. REM Required Parameters:
  15. REM BatFileToConvert
  16. REM Source batch file to use to produce the output Exe file.
  17. REM
  18. REM Optional Parameters:
  19. REM IncludeFile
  20. REM Additional files to include in the Exe file.
  21. REM You can include external tools used by the batch file so they are available on the executing machine.
  22. SETLOCAL
  23. REM Configuration (no quotes needed):
  24. SET PathTo7Zip=
  25. REM ---- Do not modify anything below this line ----
  26. SET OutputFile="%~n1.exe"
  27. SET SourceFiles="%TEMP%MakeEXE_files.txt"
  28. SET Config="%TEMP%MakeEXE_config.txt"
  29. SET Source7ZFile="%Temp%MakeEXE.7z"
  30. REM Remove existing files
  31. IF EXIST %OutputFile% DEL %OutputFile%
  32. REM Build source archive
  33. ECHO "%~dpnx1" > %SourceFiles%
  34. :AddInclude
  35. IF {%2}=={} GOTO EndInclude
  36. ECHO "%~dpnx2" >> %SourceFiles%
  37. SHIFT /2
  38. GOTO AddInclude
  39. :EndInclude
  40. "%PathTo7Zip%7za.exe" a %Source7ZFile% @%SourceFiles%
  41. REM Build config file
  42. ECHO ;!@Install@!UTF-8! > %Config%
  43. ECHO RunProgram="%~nx1" >> %Config%
  44. ECHO ;!@InstallEnd@! >> %Config%
  45. REM Build EXE
  46. COPY /B "%PathTo7Zip%7zsd.sfx" + %Config% + %Source7ZFile% %OutputFile%
  47. REM Clean up
  48. IF EXIST %SourceFiles% DEL %SourceFiles%
  49. IF EXIST %Config% DEL %Config%
  50. IF EXIST %Source7ZFile% DEL %Source7ZFile%
  51. ENDLOCAL