質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

1966閲覧

electron-builder は main.js がルート直下にあるファイル構成しかビルドできないのでしょうか?

noc

総合スコア73

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2022/02/24 09:36

編集2022/02/24 09:39

環境 Windows10, Electoron8.5.5, electorn-builder 22.14.13

src ディレクトリ以下に書いたソースを webpack で dist ディレクトリ以下に出力する設定で Electron アプリケーションを作成していました。

app ├─dist ├─node_modules └─src ├─main ├─preload └─renderer

dist ディレクトリ直下に index.html main.js preload.js renderer.js があります。
問題は、electron-builder は main.js が app ディレクトリ直下にないと main.js だと認識してくれないことです。

dist 以下にmain.js を置いて electoron-builder を起動すると以下のエラーが発生します。
main.js を app 直下に移動させるとこのエラーは発生しません。

D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:7 return new Error(`${messagePrefix} "${relativeFile}" in the "${asarFile}" ${text}`) ^ Error: Application entry file "main.js" in the "D:\my\mirror\electron\gakb-jra\__build\win-ia32-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. at error (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:7:12) at Object.checkFileInArchive (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:31:11) at WinPackager.checkFileInPackage (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\platformPackager.ts:501:7) at WinPackager.sanityCheckPackage (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\platformPackager.ts:549:5) at WinPackager.doPack (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\platformPackager.ts:310:5) at WinPackager.pack (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\platformPackager.ts:136:5) at Packager.doBuild (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\packager.ts:441:9) at Object.executeFinally (D:\my\mirror\electron\gakb-jra\node_modules\builder-util\src\promise.ts:12:14) at Packager._build (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\packager.ts:376:31) at Packager.build (D:\my\mirror\electron\gakb-jra\node_modules\app-builder-lib\src\packager.ts:337:12) at Object.executeFinally (D:\my\mirror\electron\gakb-jra\node_modules\builder-util\src\promise.ts:12:14)

これの回避策はございますか?
なお、electoron-builder に使った build スクリプトは以下になります。
$ node build-win.js で使用します。

javascript:build

1const { build } = require('electron-builder'); 2 3build({ 4 config: { 5 appId: 'jp.electron.myapp', 6 productName: 'myapp', 7 directories: { 8 output: "__build" // webpack が dist ディレクトリを使っているので変更 9 }, 10 extends: null, 11 files: [ 12 "./main.js", // ルート直下の main.js をビルドさせるときにのみ必要 13 "./dist/**/*.js", 14 "./dist/index.html", 15 ], 16 win: { 17 target: { 18 target: 'zip', 19 arch: [ 20 //'x64', 21 'ia32', 22 ], 23 }, 24 }, 25 }, 26});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

dist ディレクトリを . にすることでディレクトリの中身を全て外側に出して resources/app 直下に出させることに成功しました。

javascript

1//... 2 files: [ 3 {from: "dist", to: "."}, 4 ], 5//...

ちなみに、main.js だけなら package.json の "main" を dist/main.js にするかビルドファイルの設定の extraMetadata を設定することで変更することができます。

extraMetadata: { main: ['./dist/main.js',] },

electron-builderのエントリーポイントを変える方法

しかし、main.js の読み取り場所を変えても他のファイル(preload.js、index.html など)を結局 app 直下から読み込もうとするため解決になりませんでした。

投稿2022/02/24 16:01

noc

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問