2017-02-25 5 views
0

電子ボイラープレートを使用してWindows用の.exeを作成するには、.batファイルを実行する必要があります。しかし、NPM使用すると、それが動作を開始、それがNPMの実行リリースとともにパッケージ取得すると、これはすでに子プロセス電子ボイラープレートを使用してWindows用の.exeを作成する。 .batファイルを実行する必要があります。パッケージ化されても実行されない

のチェック機能

const spawn = require('child_process').spawn; 
const bat = spawn('cmd.exe', ['/c', 'Install.bat']); 

bat.stdout.on('data', (data) => { 
    var str = String.fromCharCode.apply(null, data); 
    addLog(data); 
    console.info(str); 
}); 

bat.stderr.on('data', (data) => { 
    var str = String.fromCharCode.apply(null, data); 
    addLog(data,"error"); 
    console.error(str); 
}); 

bat.on('exit', (code) => { 
    console.log(`Exit ${code}`); 
}); 

ための私のコードでの.bat

を実行しません。

+0

は 'あなたの電子アプリと同じディレクトリにcmd.exe'ですか?それは経路の問題かもしれません。 –

+0

これは、Windows SYSTEM 32パスにelectron-boilerplateフォルダをインストールする必要があることを意味しますか?私のフォルダはC言語になっています –

+0

既にcmd.exeをelectron-boilerplateフォルダに追加してもまだ動作していません –

答えて

0

電子をnpm start経由で実行すると、通常、現在の作業ディレクトリがアプリケーションのフォルダ(package.jsonを含む)に設定されます。したがって、そのフォルダにはcmd.exeがあります。

アプリケーションをビルドして実行すると、現在の作業ディレクトリは他の場所にある可能性があります。たとえば、C:\\(Windowsの場合)です。現在の作業ディレクトリはprocess.cwd()です。

アプリの実行方法に関係なく、アプリフォルダを見つけるには、Electronはelectron.app.getAppPath()を提供します。

だから、このようにそれを使用することができます:

const path = require('path'); 
const cmdPath = path.join(electron.app.getAppPath(),'cmd.exe'); 
const bat = spawn(cmdPath, ['/c', 'Install.bat']); 
+0

私のコードを編集しましたので、 "npm run release"を実行すると、ファイルが動作せず、.batが実行されません。 –

+0

const path = require( 'path'); const cmdPath = path.join(app.getAppPath()、 'cmd.exe');const spawn = require( 'child_process')。スポーン; const bat =スポーン(cmdPath、['/c','Install.bat']); –

関連する問題