electron 어떻게 임의의 자원 을 포장 하 는 방법 절차
그래 픽 작은 도 구 를 쓰 고 싶 습 니 다.본질 적 으로 작성 한 자바 프로그램 을 호출 하 는 것 이 좋 습 니 다.명령 행 에서 디 렉 터 리 를 자 르 고 경 로 를 복사 하 는 등 작업 이 너무 번 거 롭 기 때 문 입 니 다.
그러면 저 는 지금 electron 의 js 사건 에서 파일 경 로 를 어떻게 얻 는 지 해 결 했 습 니 다.저도 electron 의 main.js 에서 새로운 프로 세 스 실행 명령 을 만 드 는 방법 을 해 결 했 습 니 다.그러면 포 장 된 jar 가방 이나 다른 자원 을 어떻게 사용 합 니까?
패키지 제 이 슨 안 을 직접 보 세 요.
{
"name": "....",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "export FAVOR=debug && electron .",
"pack": "electron-packager ./ yourAppName --platform=darwin --arch=x64 --app-version=0.0.1 --app-bundle-id=com.xxxx.yourAppName --out=build --overwrite --extra-resource='./extraResources'"
},
"build": {
"extraResources": [
"./extraResources/**"
]
},
}
주의해 야 할 것 은 build 에 extraResources 를 추가 한 것 입 니 다.또한,electron-packager 를 통 해 포 장 된 매개 변수 에 도--extra-resource='./extraResources'를 추가 합 니 다.그리고 포장 할 때 원 하 는 모든 파일 을 포장 할 수 있 습 니 다.jar 도 좋 고 python 스 크 립 트 도 좋 습 니 다.
자원 인용 방법
주의해 야 할 것 은 debug 운행 과 release 운행 이 다르다 는 것 입 니 다.여기 서 우 리 는 실행 할 때 내 가 지금 debug 인지 release 인지 구분 할 물건 이 필요 합 니 다.
위의 json 스 크 립 트 에 export FAVOR=debug 가 있 습 니 다.이것 은 debug 가 실 행 될 때 환경 변 수 를 추가 한 것 과 같 습 니 다.
환경 변 수 를 어떻게 읽 습 니까?main.js 에서 이렇게 읽 기:
console.log("favor: " + process.env.FAVOR)
다음은 실행 할 때 자원 경 로 를 구분 하 는 것 입 니 다.
function getResPath() {
if (isDebug) {
return "./extraResources"
} else {
return process.resourcesPath + "/extraResources"
}
}
이것 만 기록 해서 필요 한 사람 에 게 주세요.electron 포장 구덩이
우 리 는 electron 포장 을 사용 할 때 asar 를 true 로 설정 하 는 것 을 알 고 있 습 니 다.electron-builder 는 일부 native 프로그램 을 app.asar 에 포장 하지 않 습 니 다.그러나 저 는 이상 한 문제 에 부 딪 혔 습 니 다.금요일 에 음성 형식 으로 전환 해 야 합 니 다.amrToMp 3 와 ffmpeg-static 두 개의 라 이브 러 리 를 사 용 했 습 니 다.그 중에서 amrToMp 3 의 주요 코드 는:
const exec = require('child_process').exec
const path = require('path')
const ffmpeg = require('ffmpeg-static')
const ffmpegPath = ffmpeg.path
function amrToMp3(filepath, outputDir = './src/mp3') {
return new Promise((resolve, reject) => {
const basename = path.basename(filepath)
const filename = basename.split('.')[0]
const etc = basename.split('.')[1]
if (etc != 'amr') {
console.log('please input a amr file')
return
}
const cmdStr = `${ffmpegPath} -y -i ${filepath} ${outputDir}/${filename}.mp3`
exec(cmdStr, (err, stdout, stderr) => {
if (err) {
console.log('error:' + stderr)
reject('error:' + stderr)
} else {
resolve(`${outputDir}/${filename}.mp3`)
console.log(`transform to mp3 success! ${filepath}->${outputDir}/${filename}.mp3`)
}
})
})
}
그 중에서 exec 라 는 명령 을 사 용 했 습 니 다.ffmpeg Path 를 포장 한 후 기본적으로***/app.asar/src/node 입 니 다.modules/ffmpeg-static/bin/darwin/x64/ffmpeg,하지만 포장 후 실행 알림 can not found***/app.asar/src/nodemodules/ffmpeg-static/bin/darwin/x64/ffmpeg 는 매우 난처 하 다.그러나 나 는 압력 을 풀 러 갔다.분명히 존재 하 는 것 이 었 다.나중에 나 는 비슷 한 라 이브 러 리 node-notifier 를 보 러 갔 는데 exec File 이라는 명령 을 사용 한 것 을 발견 하고 수정 했다.결 과 는...됐다 니.이곳 에서 누가 원인 을 알 고 해답 을 구 하 겠 는가...수 정 된 프로그램 코드:
var ffmpegPath = path.join(
__dirname,
'bin',
platform,
arch,
platform === 'win32' ? 'ffmpeg.exe' : 'ffmpeg'
)
execFile(ffmpegPath, ['-y', '-i', inputPath, cmdStr], function (err, stdout, stderr) {
if (err) {
console.log('error:' + stderr);
reject('error:' + stderr);
} else {
resolve(outputDir + '/' + filename + '.mp3');
console.log('transform to mp3 success! ' + filepath + '->' + outputDir + '/' + filename + '.mp3');
}
});
여기 서 electron 이 임의의 자원 을 어떻게 포장 하 는 방법 과 절차 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 electron 의 임 의 자원 포장 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fedora에서 Electron 앱 만들기Fedora에서 Electron으로 데스크톱 앱을 만들어보고 싶었습니다. Electron이 win.loadFile를 win.loadURL로 변경하여 을 따라 기존 웹 앱을 로드합니다. 코드는 입니다. 여기 내 mai...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.