How to package and distribute your apps - composite/nw.js GitHub Wiki
๊ทธ๋ฅ nw ์คํ ํ์ผ๊ณผ .nw ํ์ฅ์๋ฅผ ๊ฐ์ง ์์ถ ํ์ผ์ ๊ฐ์ ํด๋ ๋ด์ ๋ฐฐ์นํ ๋ค์ ๋ฐฐํฌํ๋ฉด ๋ฉ๋๋ค.
๋จ, ๋งฅ์ ํ๋ฆฝ๋๋ค. ๋ฐฐํฌํ .nw ์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฃ๊ณ ์ด๋ฐ ๊ฒฝ๋ก๋ก ๋ฐฐ์นํ๋ฉด ๋ฉ๋๋ค.
nwjs.app/Contents/Resources/app.nw
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํจํค์ง๋ฅผ ๋ง๋ค๋ ค๋ฉด ์๋๋ฅผ ์ฝ์ผ์ธ์.
The following sub-directories can be put in application's root directory: ๋ค์ ํ์ ํด๋๋ฅผ ์ฑ ๋๋ ํฐ๋ฆฌ์ ์ฒจ๋ถํ ์ ์์ต๋๋ค.
- node_modules - ๋น์ ์ ์ฑ์ ์ฌ์ฉํ node.js ๋ชจ๋ ํด๋
- plugins - NPAPI ํ๋ฌ๊ทธ์ธ๋ค
nwjc ๋ ๋ฐ๋ก ๋ฐฐํฌํ ํ์ ์์ต๋๋ค.
์ฃผ์์ฌํญ: node_module ์ ๋ค์ด๊ฐ node.js ๋ชจ๋์ด ์ง์ํ๋ ํ๋ซํผ์ ๋ฐ๋์ ์ฒดํฌํ์ธ์. ์๋ฅผ ๋ค๋ฉด, node-email-templates ๋ฅผ ์๋์ฐ๋ ๋งฅ์์ npm install ์ ํตํด ์ค์นํ๋ค๋ฉด, ํ์ด์ฌ์ด ํด๋น ํ๋ซํผ์ ์ค์น๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ํ์ด์ฌ์ ์๋์ฐ์ ๊ธฐ๋ณธ ์ค์น๋์ด ์์ง ์์ต๋๋ค. ํนํ ๋ค์ดํฐ๋ธ ๋ชจ๋์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ (์:socket.io)๋ ๊ฐ ํ๋ซํผ๋ณ๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค.
npm install ์ ํตํด ์ค์นํ๊ณ ์ ์ํ package.json ํ์ผ์์ ์ ํด์ง ํ๋ซํผ์ ํ์ธํ๊ณ ์ ํํ๊ฒ ๋์๊ฐ๋ ์ง ํ์ธํ ํ์๊ฐ ์์ต๋๋ค.
ํจํค์ง ์์คํ ์ LรVE ์ ๋น์ทํ ๋ฐฉ๋ฒ์ ๋ฐ๋ฆ ๋๋ค. ํด๋น Wiki ์ ์๋ ๋ฐฉ๋ฒ์ ์ด ์ฑ์ ๋ง์ถฐ ๊ฐ์ด๋๋ฅผ ์ ์ํฉ๋๋ค.
์ฑ์ ํจํค์งํ๊ธฐ ์ํด .nw ํ์ผ๋ก zip ์์ถ ์ ๋ค์ 3๊ฐ์ง ์ฌํญ์ด ์ง์ผ์ ธ์ผ ํฉ๋๋ค.
- ๋ฐ๋์
package.jsonํ์ผ์ด ์๊ณ ์ ์๋์ด์ผ ํฉ๋๋ค. ๋งค๋ํ์คํธ ํ์์ ์ฐธ๊ณ ํ์ธ์. -
package.jsonํ์ผ์ ๋ฐ๋์ ์ฑ ์ต์์ ํด๋์ ์์น๋์ด์ผ ํฉ๋๋ค. - ํ์ผ ์ ๋ชจ๋ ํ์ผ ๋ฐ ํด๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ์๋์ฐ ์ด์ฉ์์๊ฒ๋ ํด๋น์ฌํญ์ด ์์ผ๋, ๋งฅ ๋๋ ๋ฆฌ๋ ์ค๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ ์ฑ ์์์ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์ ํํ๊ฒ ์์นํ๊ณ ๊ฐ๋ฆฌํค๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ด์ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง .nw ํ์ผ์ ์คํ ํ์ผ๋ก ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
- zip ํ์ผ์ ๋ง๋ญ๋๋ค. (์๋์ฐ XP ์ด์์ ๋ด์ฅ๋์ด ์์ต๋๋ค.)
- ์ฑ์ ํ์ํ ๋ชจ๋ ํ์ผ์ zip ํ์ผ ์์ ๋ฃ๊ณ , ํนํ
package.jsonํ์ผ์ ์ฑ์ ์ต์์ ํด๋์ ์์นํ๋์ง ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ ์ง ์์๊ฒฝ์ฐ ์ฑ์ด ๋์ํ์ง ์์ต๋๋ค. - zip ํ์ผ์
.nwํ์ฅ์๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ปดํจํฐ์ ๋ฐ๋ผ zip ํ์ผ ํ์ฅ์๊ฐ ์จ๊ฒจ์ง ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ํด๋ ์ต์ ์ "๋ณด๊ธฐ" ํญ์ "์๋ ค์ง ํ์ผ ํ์์ ํ์ฅ์ ์จ๊ธฐ๊ธฐ" ๋ฅผ ์ฒดํฌ ํด์ ํ์๊ธฐ ๋ฐ๋๋๋ค.
ํฐ๋ฏธ๋์ ํ์ฉํฉ๋๋ค.
- ์ฑ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
cd ~/Projects/my_app - ์์ถ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
zip -r ../${PWD##*/}.nw * - ์์ถํ
.nwํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ๋ณ๋์ ํด๋๋ก ๋์ง์ด ๋ ๋๋ค. - ์ฐธ ์ฝ์ฃ ?
-
package.nwํ์ผ๋ก ๋ณ๊ฒฝํ ๋ค์nw์คํ ํ์ผ๊ณผ ๊ฐ์ ๊ณณ์ ์ฎ๊ธธ ์ ์์ต๋๋ค. - ์๋๋ฉด ์คํ ํ์ผ์ด ์๋ ํด๋์ ๊ทธ๋ฅ
package.jsonํ์ผ์ ๋ฃ๊ณ ๊ทธ ๊ธฐ์ค์ผ๋ก ์ฑ์ ํต์งธ๋ก ์์น์ํฌ ์๋ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋กnw์คํ ํ์ผ์ ๊ทธ๋ฅ ์คํ ์ ๊ฐ์ ํด๋ ๋ด์ ์๋package.json์ ๋จผ์ ์ฐพ์ต๋๋ค.(๋งฅ์์๋node-webkit.appํจํค์ง ์์ ์๋ ์ต์์ ํด๋ ๋ฃ์ด๋ ๊ฐ์ ํจ๊ณผ์ ๋๋ค.) ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฑ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํด ๋ ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. - nodebob ์ ํตํด ์๋์ฐ ํ๊ฒฝ์์ nw.js ์ฑ ๋น๋๋ฅผ ์๋ํํ ์ ์์ต๋๋ค. ํ์ฌ ๋ฒ์ ์ 0.1 ์ด๋ฉฐ, ์๋์ฐ ๋ฐฐ์น ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ๋๋ค.
-
node-webkit-builder & grunt-node-webkit-builder ๊ฐ์ nw.js ๋น๋ ๋ชจ๋์ ์ฌ์ฉํ์ฌ
grunt๋ฅผ ํตํด ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก ์ฑ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์๋ํํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋์ ์๋์ผ๋ก ๋น๋๋ nw.js ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋จผ์ ๋ฐ์ ํ, ์์ถ์ ํ์ด ๋ฐฐํฌํ ํด๋์ ์์ถ์ ํผ ํ, ์ฑ ํด๋๋ฅผapp.nw์ผ๋ก ์๋ ์์ถ์ ๊ฑธ์ด ๋ฐฐํฌํ ํด๋์ ์คํ ํ์ผ๊ณผ ๊ฐ์ด ๋ฐฐ์นํ๊ฒ ๋ ๊ฒ์ ๋๋ค. - Nuwk! Nuwk! ๋ชจ๋์ ๋งฅ์์ nw.js ์ฑ์ ๋น๋ํ๋ nw.js ๊ธฐ๋ฐ์ ์์ฌ์ด ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ํ ์คํธ์ ๋น๋ ๊ณผ์ ์ ๋จ์ํํ๊ณ , ์คํ ํจํค์ง๋ฅผ ๋ง๋ค๊ณ , ์์ด์ฝ์ ์ฒจ๋ถํ์ฌ ์ฑ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๋์์ค ๊ฒ๋๋ค. (์์ง ์ํ ๋จ๊ณ์ ๋๋ค.)
-
generator-node-webkit ๋ชจ๋์
yeoman์ ์ด์ฉํ์ฌ ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก ํจํค์ง์ ๋์์ฃผ๋ ๋ชจ๋์ ๋๋ค. -
lein-node-webkit-builder ๋ชจ๋์
grunt-node-webkit-builder๋ชจ๋๊ณผ ๋น์ทํ์ง๋ง, nw.js ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ฐ๊ณ , ๋ฉํฐ ํ๋ซํผ์ผ๋ก ๋น๋ํ๋ ๊ณผ์ ์ ๋์์ค ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด๋ Leiningen ํ๋ฌ๊ทธ์ธ์ด ํ์ํ๋ฉฐ, ClojureScript ๋ฅผ ์ด์ฉํ ์คํฌ๋ฆฝํ ์ ์ต์ ํ๋์ด ์์ต๋๋ค. - Web2Executable ํ๋ก๊ทธ๋จ์ ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก ์ ๊ณตํ๋ ์คํ์์ค GUI ์ฑ ํจํค์ง ๋งค๋์ ์ ๋๋ค. ์น ์ฑ์ ๋จ์ผ ํ์ผ๋ก ๋ง๋ค์ด ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ฃผ๊ณ , ๋จ์ํํ ์ ์์ต๋๋ค. ๋งฅ๊ณผ ๋ฆฌ๋ ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ํ์ง๋ง ์๋์ฐ๋ Pyside๊ฐ ํ์ํฉ๋๋ค. ์์ง์ ๋ฒ ํ์ด๊ธฐ ๋๋ฌธ์ ์ฐธ์ฌ์ ํผ๋๋ฐฑ์ ์ด๋ ฌํ ํ์ํ๊ณ ์์ต๋๋ค.
- nwjs-shell-builder - nwjs ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ๋น๋ ํด์ ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋น๋ ๊ณผ์ ์ ์์ฑํ๊ณ , ๊ฐ ํ๋ซํผ๋ณ nw.js ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ค ํด๋์ ๋ค์ด๋ฐ์ ํฌ๋ก์ค ํ๋ซํผ ๋ฐฐํฌ๋ฅผ ๋์์ค๋๋ค.
๋ง์ ์ฌ๋๋ค์ด ์ต์ข
์ฌ์ฉ์์๊ฒ ์ฑ์ ์ฝ๊ฒ ์คํํ๋ ๋ฐ ์ง์คํ๊ณ ์์ ๊ฒ๋๋ค. ์ดํดํฉ๋๋ค. ์ฌ์ฉ์์๊ฒ .nw ํ์ผ๋ง ๋ธ๋ ๋์ง๋ฉด ์๋ฌด๋๋ ์ฌ์ฉ์์๊ฒ nw.js ๋ฐํ์์ด ์์ถ ํผ ์ํ๋ก ํ์ํ๊ฒ ์ฃ . ํ์ง๋ง nw.js ํ์ผ์ ์ฑ .nw ํ์ผ์ ํฉ์ณ์ ์คํ ํ์ผ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก .nw ํ์ผ์ ์ ๊ณตํ๊ณ , ์ ํ์ฌํญ์ผ๋ก ํฉ์ณ์ง ์คํ ํ์ผ์ ๊ฐ ํ๋ซํผ์ ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐํธํฉ๋๋ค.
์๋ ๋๊ฐ์ง ์ฌํญ์ ๋ฐ๋์ ์ฒดํฌํ์ธ์.
- ์ต์ข ์คํ ํ์ผ์ ๋จ์ผ ์คํ ํ์ผ์ด ๋ ์ ์์ต๋๋ค. ๋ฐ๋์ ํจ๊ป ์๋ DLL ํ์ผ์ ๊ฐ์ด ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
- ํฉ์ณ์ง๋ค ํด๋ ์ฌ์ ํ ์ฑ ๋ด์ฉ์
WinZip๊ฐ์ ์์ถ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
์๋์ฐ ๋ช ๋ น ํ๋กฌํํธ์์ ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค:
copy /b nw.exe+app.nw app.exe
๊ทธ๋ฆฌ๊ณ app.exe ๊ณผ ํ์ํ DLL ํ์ผ์ ์์ถํ์ฌ ๋ฐฐํฌํ๋ฉด ๋ฉ๋๋ค. ์. ์ด๋ ๊ฒ ํ๋ฉด nw.js ์ ๋
์์ ๋ฐฐํฌ๊ฐ ๋๊ฒ ์ฃ . ํ์ง๋ง ๊ทธ๊ฑด ์๊ดํ์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ค๋ ๊ฒ์ ๊ฐ ํ๋ซํผ์ ํ๋์ ํจํค์ง๋ฅผ ๋ฐฐํฌํ๊ฑฐ๋, ๊ฐ๋จํ๊ฒ .nw ํ์ผ๋ง ๋ธ๋ ๋ฐฐํฌํ ์ ์์ผ๋๊น์.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋์ nw.pak ํ์ผ์ด app.exe ํ์ผ๊ณผ ๊ฐ์ด ๋ฐฐํฌ๋์ด์ผ ํฉ๋๋ค.
์ค์ ์ฌํญ: ๋ง์ฝ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ฉด ๋ฐฐํฌํ .exe ํ์ผ์ด ๋ฐ๋์ nw.exe ํ์ผ์ด์ด์ผ ํฉ๋๋ค. ์ด๋ node.js ๋ชจ๋ ์ฌ์ฉ์ ๊ธฐ์ฌ๋์ด ์์ต๋๋ค. ์์ธํ ์ฌํญ์ ์ด์ #199 ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ๋ ์ค๋ ๋น์ทํฉ๋๋ค.
cat /usr/bin/nw app.nw > app && chmod +x app
์ด๋ ๊ฒ ํ์ผ๋ฉด ์ด์ ์ข ์์ฑ์ ํฌํจํ์ฌ ํจํค์ง์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. .deb ํจํค์ง๋ฅผ ๋ง๋ ๋ค๋ฉด ์ฌ์ฉ์๋ค์ ๊ตณ์ด nw.js ๋ฅผ ๋ฐ๋ก ์ค์นํ ํ์๊ฐ ์๊ฒ ์ฃ .
ํ๊ฐ์ง ์์ง ๋ง์์ผ ํ ์ฌ์ค์ nw.pak ํ์ผ์ด ์ฑ ํด๋ ์ต์์์ ์์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ์๊ทธ๋ฌ๋ฉด ์ผ๋ถ ๋น ํ์ด์ง๊ฐ ์ฌ์ฉ์๋ค์ ๋ฐ๊ฒจ์ค ๊ฒ๋๋ค.
๊ฒฐ๊ตญ ํจํค์ง ๋ง๋ค๊ธฐ๋ฅผ ์๋ํํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํด์ผ ๊ฒ ๊ตฐ์. ์ด๋ ์ง์ ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ์ ๋๋ค.
์ด ๊ฐ์ด๋๋ node-webkit 0.2.4 ์ด์ ๊ธฐ์ค์ ๋๋ค.
๋งฅ์์๋ node-webkit.app ์ด ํด๋๋ผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์์ต๋๋ค. nw.js ๊ฐ ์๋์ผ๋ก ๋น์ ์ ์ฑ์ ์คํ์ํค๋ ค๋ฉด ์ฑ ์์ถ ํ์ผ์ Contents/Resources ์ ๋ฃ๊ณ ํ์ผ๋ช
์ app.nw ๋ผ๊ณ ๋ช
๋ช
ํ๋ฉด ๋ฉ๋๋ค. ๋ง์ฝ ์์ ์๋๋ฅผ ๊ฐ์ ํ๊ณ ์ ํ๋ค๋ฉด ๊ตณ์ด ์์ถํ์ง ์๊ณ ๋ฃ์ด๋ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ์ค์ ๋ฐฐํฌ๋ณธ์ ๋ง๋ค๊ธฐ ์ํ ์๋ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
-
Contents/Resources/nw.icns: ์ฑ ์์ด์ฝ ์ ์ -
Contents/Info.plist: ์ ํ ํจํค์ง ์ ์ ํ์ผ
Info.plist ํ์ผ์ ๋ํด์๋ ํจ๋์ ๋ํ Cocoa ํ์ค ๊ตฌํ on how ๋งํฌ๋ฅผ ์ฐธ์กฐํ๋ฉด ์ด๋ป๊ฒ ์ฑ ์ ๋ณด๋ฅผ ์ ์ํ๊ธฐ ์ํด ์์ ํด์ผ ํ๋์ง ๊ธฐ์ฌ๋์ด ์์ต๋๋ค.
(์ฃผ: ๋งฅ์ ๋ชฐ๋ผ ๋ฒ์ญ์ด ์ด์ํ ์๋ ์์ต๋๋ค. ํ๊ธ ์ค๋ช
์์ผ๋ฉด ๋งํฌ ์์ ํด์ฃผ์ธ์.)
v0.10.0 ๋ถํฐ๋, icudtl.dat ํ์ผ์ด ๋ชจ๋ ํ๋ซํผ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๋์ icudt.dll ํ์ผ์ ํ์์๊ฒ ๋์ต๋๋ค.
๊ทธ ์ธ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ค์ ์ ํ์ ์ผ๋ก ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ๊ฐ์ด ํฌํจ์ํค๋ฉด ๋ฉ๋๋ค. ๊ฐ ํ๋ซํผ๋ง๋ค ํ์ํ ํ์ผ๋ค์ ์ง๊ธ๋ถํฐ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
ํฌ๋ก๋ฏธ์ ์์ง ๊ธฐ๋ฐ์ด๋ค ๋ณด๋ ๋ค์ค ์คํ ์์ค ๋ผ์ด์ ์ค ๋๋ฌธ์ (MIT/LGPL/BSD/Ms-PL ๋ฑ๋ฑ...) ํ์ผ์ ๋ฐ๋ก ๋์ด์ผ ํฉ๋๋ค. (๊ทธ๋ ๋ค๊ณ ๋น์ ์ด ๋ง๋ ์ฑ์ ์์ค ์ฝ๋๊น์ง๋ ์ํฅ๋ฐ์ง ์์ต๋๋ค.)
nw.pak ํ์ผ๊ณผ icudt.dll ํ์ผ์ด nw.exe ํ์ผ๊ณผ ๊ฐ์ ํด๋ ๋ด์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ์ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ๋ค์ด๋ฉฐ, ๋คํธ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌํจ๋ฉ๋๋ค.
ffmpegsumo.dll ํ์ผ์ ๋ฏธ๋์ด๋ฅผ ๋ค๋ฃจ๋ ํ์ผ์
๋๋ค. <video> ํ๊ทธ์ <audio> ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ์ด ํ์ผ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
libEGL.dll ํ์ผ๊ณผ libGLESv2.dll ํ์ผ์ WebGL ๊ณผ GPU ๊ฐ์์ ์ํด ํ์ํ ํ์ผ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ D3DCompiler_43.dll ํ์ผ๊ณผ d3dx9_43.dll ํ์ผ์ WebGL์ ๋ค์ํ ํ๋์จ์ด์ ๋๋ฆฌ๊ธฐ ์ํด ๋ฐ๋์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ DirectX ์ฌ๋ฐฐํฌ ๋๊ตฌ(redistributable) ์ ํฌํจ๋์ด ์์ต๋๋ค.
nw.pak ํ์ผ์ ๋น์ฐํ nw ์คํ ํ์ผ๊ณผ ๊ฐ์ ํด๋์ ์์ด์ผ ํฉ๋๋ค. ๋น๋์ค์ ์ค๋์ค๊ฐ ํ์ํ๋ค๋ฉด libffmpeg.so ํ์ผ์ด ํ์ํฉ๋๋ค.
๊ทธ๋ฅ node-webkit.app ํจํค์ง ์์ ํ์ํ ํ์ผ์ด ๋ชจ๋ ๋ค์ด ์์ผ๋ ๊ตณ์ด ์ ๊ฒฝ ์ ์จ๋ ๋ฉ๋๋ค.
์ ๋ฐฉ์๋๋ก nw.exe ํ์ผ๊ณผ app.nw ํ์ผ์ด ํฉ์ณ์ง๋ค ํด๋, ์ฌ์ ํ nw.pak ํ์ผ๊ณผ *.dll ํ์ผ์ ๋ณ๋๋ก ๊ฐ์ด ์์ด์ผ ์ต์ข
์ฌ์ฉ์์๊ฒ ๊ฐ๋์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
Enigma Virtual Box ๋ผ๋ ์ํํธ์จ์ด๋ ํ์ผ๊ณผ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํฉํ ๋จ์ผ ํ์ผ๋ก ํจํค์งํ ์ ์๋๋ก ๋์์ค๋๋ค. ๊ฒ๋ค๊ฐ ๊ฐ์ธ ๋๋ ์์ ์ ๋ชฉ์ ์ผ๋ก ๋ฌด๋ฃ ๋ก ์ธ ์ ์์ต๋๋ค.
์ฃผ์! "Enigma Virtual Box" ์ํํธ์จ์ด๋ ๋น์ ์ ์ฑ์ ๋ํ ์ด๋ ํ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ๋ณด์ฆํ์ง ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ธ ๊ฒฝ์ฐ์ ๋ํ ์ฑ ์์ ์ ์์ ์์ ์๊ฒ ์์ต๋๋ค!
- ์ํํธ์จ์ด๋ฅผ ๋ด๋ ค๋ฐ๊ณ ์ค์นํฉ๋๋ค.
- ์์ ๋ฉ๋ด, ํ๋ก๊ทธ๋จ ํด๋์ ์๋ 'Enigma Virtual Box' ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค..
- ๋ฐฐํฌ์ฉ์ผ๋ก ๋ง๋
app.exeํ์ผ์ ์คํ ํ์ผ๋ก ์ง์ ํ๊ณ ๋ฉ์ธ ํ๋ก๊ทธ๋จ์ ๊ณต๋์ผ๋ก ๋จ๊ฒจ๋ก๋๋ค. - ์คํ ํ์ผ๊ณผ ํจ๊ป ์๋
*.dllํ์ผ๊ณผnw.pakํ์ผ์ ๋๋๊ทธ ํ๊ฑฐ๋ ์ถ๊ฐํฉ๋๋ค. 'Select Folder' ๋๋ฅผ ์ ํด๋ ์ ํ์ฐฝ์ด ๋์ค๋ฉด '%DEFAULT FOLDER' ๋ฅผ ์ ํ ํ 'OK' ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. - ์์ถ ๊ธฐ๋ฅ ์ด์ฉ ์ 'File Options' ๋ฒํผ์ ํด๋ฆญ ํ, 'Compress Files'๋ฅผ ์ ํํ ๋ค์, and 'OK' ๋ฒํผ์ ๋๋ฆ ๋๋ค.
- ๋๋จธ์ง ๊ธฐ๋ฅ ๋ฐ ์ค์ ์ ์์ ์ ๋ง๊ฒ ๊ตฌ์ฑํฉ๋๋ค..
- ๋ฉ์ธ ํ๋ฉด์ ์๋ ์ปค๋ค๋ 'Process' ๋ฒํผ์ ๋๋ฌ ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค.
- ๋ชจ๋ ์์ ์ด ๋๋ ํ 'Close' ๋ฒํผ์ ๋๋ฅธ ํ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํฉ๋๋ค.
-
app_boxed.exeํ์ผ์ด ์ ํํ ์ฑ ํด๋์ ๋ํ๋ ๊ฒ๋๋ค.
์ด์ nw.pak ํ์ผ๊ณผ *.dll ํ์ผ๊น์ง ํฌํจ๋ ๋จ์ผ ์คํํ app_boxed.exe ํ์ผ์ ๋ฐฐํฌํ๋ฉด ๋ฉ๋๋ค.
ํจํค์ง๋ฅผ ์๋ํํ๊ณ ์ ํ๋ค๋ฉด ์์ node.js ๋ชจ๋์ธ enigmavirtualbox ๋ชจ๋์ด ์์ต๋๋ค. Enigma Virtual Box ๋ฐฐํฌ๋ณธ์ ์๋์ผ๋ก ๋ค์ด๋ฐ๊ณ ์์ถ์ ํผ ๋ค์ ํจํค์งํ๋ ๋ฐฉ๋ฒ์ ์๋์ ์ค๋ช ํฉ๋๋ค.
npm install -g enigmavirtualbox-
enigmavirtualbox gen app.evp app_boxed.exe app.exe nw.pak icudtl.dat ffmpegsumo.dll libEGL.dll libGLESv2.dll(์ค์ ํ์ผ ์์ฑ) -
enigmavirtualbox gui app.evp(์ฌํ ์ค์ ํธ์ง์ ์ํ ๋ช ๋ น) -
enigmavirtualbox cli app.evp(๋จ์ผ ์คํ ํ์ผ ์์ฑ)
3๋ฒ๊น์ง ๊ณผ์ ์ผ๋ก app.evp ์ค์ ํ์ผ์ด ์๊ธด ์ดํ ์ฌ๋ฐฐํฌ ์ 4๋ฒ ๊ณผ์ ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
์์ ๊ฐ์ ๋จ์ผ ํจํค์ง ๋ฐฐํฌ ๋์ ์ฌ์ฉ์์๊ฒ ์ฝ๊ฒ ์ค์นํ๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฌด๋ฃ ์ค์น ํจํค์ง ์ ์ ํ๋ก๊ทธ๋จ์ธ Inno Setup์ด ์ฝ๊ฒ ์ค์น ํจํค์ง๋ฅผ ๋ง๋ค๋๋ก ๋์์ค ๊ฒ์ ๋๋ค.
์์ ์ค์น ํจํค์ง ์ค์ ํ์ผ์ ๋ค์ ๋งํฌ์ ์์ต๋๋ค: https://github.com/SSilence/sum/blob/master/setup.iss