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 의 임 의 자원 포장 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기