Bleeding edge

Electron에 dll파일(다른 기타파일) 포함시키기 본문

Javascript/Electron

Electron에 dll파일(다른 기타파일) 포함시키기

codevil 2024. 1. 13. 18:27

파일을 빌드한 후 -> 빌드한 파일의 위치 이동시 에러 발생

이전까지 사용하였던 electron 프로젝트에서는 ts의 컴파일러에서 사용하는 파일들만 사용하는 경우에는 생기지 않기 않는다 파일을 빌드한 위치에서 똑같이 사용하면 문제가 없지만 파일의 위치를 옮기는 경우나 폴더 이름을 바꾸는 경우에 dll 과 같은 파일들의 경로를 찾지 못하는 문제가 생긴다.

리소스 파일 추가하는 방법

엑스트라 리소스 파일 추가하기

우선 electron에서는 extra resources를 이용하여 패키지에 패키지를 할 때 특정 폴더나 파일을 포함시켜야 한다. 우선 리소스 추가에 앞서, 필자는 electron-packager를 이용하여 파일을 빌드할 예정이다.

package.json

{
  scripts:{
    "package-win": "electron-packager . ProjectName --extra-resource=\"resources/dll\"",
  }
}

위의 package.json의 package-win에서는 추가해야할 flag를 쉽게 보기 하기 위해서 아키텍쳐 플레그나 플렛폼들은 모두 지우고 올렸다. extra-resource flag를 사용하고 프로젝트를 올리면 다음과 같이 패키지에 dll 파일이 추가된다.


ProjectName/
├─ resources/
│  ├─ dll/
│  │  ├─ someDLL.dll
├─ ProjectFile.exe

--extra-rsource flag는 다음과 같은 기능을 가지고 있다. flag뒤에 붙는 파일이나 폴더를 패키지가 빌드되었을 때 복사되어 resources폴더에 복사되어 붙여진다.

또 다른 문제점

파일을 패키지했을 때는 문제 없이 맞게 작동하지만, development 상태에서는 이 파일의 위치를 잡을 수 없다.

해결책

현재 필자는 타입스크립트 out에 대한 설정을 dist폴더로 잡았기 때문에 타입스크립트가 컴파일을 할 때, dll 파일만 추가해주면 된다.

before

{
  "scripts": {
    "build": "tsc",
    ...
    }
}

after

{
  "scripts": {
    "build": "tsc && cp -r -f resources dist",
    ...
    }
}