2017-10-12 101 views
1

鑑於電子應用程序。該文件夾結構看起來是這樣的:電子構建Windows文件夾結構

App 
    - assets 
    -models 
     - exe files 
index.html 
main.js 

在執行編譯後的網站通過輸入以下命令的建議:

electron-packager . --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName="Electron Tutorial App" 

電子v.1.7.9正確地創建構建,但是它位於release-builds/resources文件夾中的app.asar文件中,因此模型文件夾內的所有內容都變得無法訪問。在這個文件夾裏面有應該​​按需運行的.exe文件。

然後,系統在以下URL中查找文件:parth_do_projeto/resources/app.asar/assets/models /,即它認爲app.assar是一個文件夾,但在app.asar構建之後是一個文件。

由於原始文件夾中存在.exe文件,因此app.asar無法吸收可執行文件。

保持這些.exe文件的方式是什麼?如果您構建的版本不帶--asar參數,程序將正常工作,請輸入,我的所有項目文件夾/源代碼都已公開。

我的問題是生成構建,保持代碼關閉並使用.exe文件的最佳方式是什麼?

回答

0

您的問題的簡短答案是使用unpackDir選項作爲電子包裝程序中的asar選項。這裏是一個這樣的樣子:

'use strict'; 
... ... 
var packager = require('electron-packager'); 
var electronPackage = require('electron/package.json'); 
var pkg = require('./package.json'); 
// pull the electron version from the package.json file 
var electronVersion = electronPackage.version; 
... ... 

var opts = { 
    name: pkg.name, 
    platform: 'win32', 
    arch: 'ia32',       // ia32, x64 or all 
    dir: './',      // source location of app 
    out: './edist/',    // destination location for app os/native binaries 
    ignore: config.electronignore,   // don't include these directories in the electron app build 
    icon: config.icon, 
    asar: {unpackDir: config.excludeFromASAR}, // compress project/modules into an asar blob excluding some things. 
    overwrite: true, 
    prune: true, 
    electronVersion: electronVersion ,  // Tell the packager what version of electron to build with 
    appCopyright: pkg.copyright,   // copyright info 
    appVersion: pkg.version,   // The version of the application we are building 
    win32metadata: {      // Windows Only config data 
     CompanyName: pkg.authors, 
     ProductName: pkg.name, 
     FileDescription: pkg.description, 
     OriginalFilename: pkg.name + '.exe' 
    } 
}; 


// Build the electron app 
gulp.task('build:electron', function (cb) { 

    console.log('Launching task to package binaries for ' + opts.name + ' v' + opts['appVersion']); 

    packager(opts, function (err, appPath) { 
     console.log(' <- packagerDone() ' + err + ' ' + appPath); 
     console.log(' all done!'); 
     cb(); 
    }); 
});