2017-01-09 1 views
1

私はこの壁の壁に頭を向けています。私はデモ電子アプリの名前を無効にして、Electronの代わりにカスタム名を付けようとしています。 Mac OSの電子メニューでアプリ名を上書きできません

const {app, Menu} = require('electron') 

const template = [ 
    { 
     label: 'New Name', 
     submenu:[ 
      { 
       label: 'Test', 
       click: (menuItem, browserWindow, event) => { 
        console.log('menu item clicked') 
       } 
      }, 
      {role: 'quit'} 
     ] 
    }, 
    { 
     label: 'test test', 
     submenu:[ 
      { 
       label: 'Test', 
       click: (menuItem, browserWindow, event) => { 
        console.log('menu item clicked') 
       } 
      }, 
      {role: 'quit'} 
     ] 
    } 
] 

installApplicationMenu = function(){ 
    const menu = Menu.buildFromTemplate(template) 
    let result = Menu.setApplicationMenu(menu) 
} 


module.exports = { 
    installApplicationMenu 
} 

そして私は私の窓を作成した後に、このモジュールを呼び出しています:私はこれを行うためのモジュールを作成し

const {app, BrowserWindow} = require('electron') 
const path = require('path') 
const url = require('url') 

const {installApplicationMenu} = require('./MenuInstaller') 


require('electron-reload')(__dirname,{ 
    electron: path.join(__dirname, 'node_modules', '.bin', 'electron') 
}) 

let win 


function createWindow(){ 
    win = new BrowserWindow({ 
     width: 800, 
     height: 600 
    }) 

    win.loadURL(
     url.format({ 
      pathname: path.join(__dirname, 'index.html'), 
      protocol: 'file:', 
      slashes: true 
     }) 
    ) 

    win.on('closed',() => { 
     win = null 
    }) 

} 

app.on('ready', function(){ 
    createWindow() 
    installApplicationMenu() 
}) 


app.on('activate',() => { 
    if(win === null) createWindow() 
}) 

私はこれを行うと2番目のメニューセットは、それがtest testのカスタム名です取得しますが、メインメニュー名はまだElectronです:

screenshot of menus not set

私は別のアプリケーションのI cにコードを比較してきました私はデフォルトの名前を上書きすることができましたが、このケースではオーバーライドが機能していないことに気付くことはできません。

アイデア?

答えて

2

開発環境でアプリケーションを実行すると、

./node_modules/.bin/electron main.js 

または

electron main.js 

あなたが実際にあなたが指定したファイルを実行します構築済みelectron実行可能ファイルを実行しています。この場合、OSには、アプリケーションがビルドされ、パッケージ化された名前が表示されます。

変更する場合は、パッケージ化する必要があります。独自の配布可能なパッケージを構築する。そして、これを行うには、素晴らしいパッケージがありますelectron-builder

それをインストールします。

npm install --save-dev electron-builder 

パッケージを作成します。

./node_modules/.bin/build -m 

package.jsonproductNameを設定することを忘れないでください。たとえば、macOSのメニューに表示されます。

-mはmacOS用です。

/distにパッケージが表示されます。ただし、カスタムアプリケーションフォーマットを使用している場合、アプリケーション構造の詳細については、READMEまたはwikiを参照してください。

0

BrowserWindowの作成時に渡すオプションにtitleを追加するか、インスタンスメソッドwin.setTitle("My App")を使用して名前を設定できます。そのため、デフォルト値はElectronSource

function createWindow(){ 
    win = new BrowserWindow({ 
     width: 800, 
     height: 600, 
     title: 'My App' 
    }) 

    // ... 
} 
3

である私は、ほぼ2年のためにそれを使用していないの後に戻っ電子に取得しています。私が覚えていることから、あなたがアプリをパッケージ化しない限り、あなたはアプリ名を変更することはできません。この電子パッケージャのようなものを試してください:https://github.com/electron-userland/electron-packager

関連する問題