프로그램을 go embed로 묶어서 배포해보려고 해요

* 왜 그런짓을? 그냥 원래있는 installer나 packaging 이용하면 안 되나요? zip 파일로 압축하거나..

1. 사용하시는 분들이 컴퓨터를 잘 모르실 경우 아주 유용합니다.. 보통 윗 어르신들...ㅠㅠ

(예: install 어찌 뭐 어쩌라는거야? zip 파일 실행해도 아무것도 안 되는데? 등등)

2. 여러 프로그램 또는 에셋들을 한 번에 배포하는 경우에도 행복합니다

런타임에 다운로드 받아서 처리하는 것도 방법이겠으나 버전관리 등의 구찮음이 없습니다

3. 배포 방식을 하나로 가져갈 수 있어서,  관리 포인트가 적어지는 이점도 있습니다

4. 물론 위와 같은 상황이 아니라면 과한 선택입니다

nodejs 만 이용한다면

- https://github.com/vercel/pkg 를 이용하거나

- https://github.com/vercel/ncc 또는 https://github.com/rollup/rollup 같은걸로 번들링 후 + node.exe 파일 같이 배포

python은 뭐 워낙 유명한 pyinstaller 같은 것을 이용하시는 게 더 좋습니다

- https://github.com/pyinstaller/pyinstaller 

* 그래서 어떻게 하나요?

//go:embed myProgram.zip
var appZip []byte

끝!!!

1. 모든 에셋들을 zip으로 묶음

    -- zip으로 묶는 건 파일 크기를 줄이고, 관리 편의를 위함이지 필수는 아님

2. go embed로 포함

3. go 프로그램 실행 시 압축 해제 또는 파일 쓰기

4. 실제 메인 프로그램 실행

(대략 go 바이너리로 인해, 2MB 정도의 용량이 추가됩니다)

 

 

참고 사이트

https://pkg.go.dev/embed

 

 

 

 

 

 

'go' 카테고리의 다른 글

golang GUI 간단 검토/비교  (0) 2021.08.12

+ Recent posts