使用Electron

时间:2017-05-15 21:55:31

标签: javascript electron squirrel.windows

我有一个Electron应用程序,我正在Mac上为它制作Windows安装程序。

现在我有一个/ installers目录和一个处理所有Squirrel事件的setupEvents.js文件。其中大部分来自Windows installer documentation

import { app } from 'electron';
module.exports = {
  handleSquirrelEvent: function() {
    if (process.argv.length === 1) {
      return false;
    }

    const ChildProcess = require('child_process');
    const path = require('path');

    const appFolder = path.resolve(process.execPath, '..');
    const rootAtomFolder = path.resolve(appFolder, '..');
    const updateDotExe = path.resolve(path.join(rootAtomFolder, 'Update.exe'));
    const exeName = path.basename(process.execPath);
    const spawn = function(command, args) {
      let spawnedProcess, error;

      try {
        spawnedProcess = ChildProcess.spawn(command, args, {detached: true});
      } catch (error) {}

      return spawnedProcess;
    };

    const spawnUpdate = function(args) {
      return spawn(updateDotExe, args);
    };

    const squirrelEvent = process.argv[1];
    switch (squirrelEvent) {
      case '--squirrel-install':
        case '--squirrel-updated':
        // Optionally do things such as:
        // - Add your .exe to the PATH
        // - Write to the registry for things like file associations and
        // explorer context menus

        // Install desktop and start menu shortcuts
        spawnUpdate(['--createShortcut', exeName]);

      setTimeout(app.quit, 1000);
      return true;

      case '--squirrel-uninstall':
        // Undo anything you did in the --squirrel-install and
        // --squirrel-updated handlers

        // Remove desktop and start menu shortcuts
        spawnUpdate(['--removeShortcut', exeName]);

      setTimeout(app.quit, 1000);
      return true;

      case '--squirrel-obsolete':
        // This is called on the outgoing version of your app before
        // we update to the new version - it's the opposite of
        // --squirrel-updated

        app.quit();
      return true;
    }
  }
}

到目前为止,这是按预期工作的,除了添加到桌面的快捷图标标题为" Electron",我不知道如何更改它。我的package.json中有一个名称和productName:

{
  "name": "my app",
  "description": "my app description",
  "productName": "my app",
  "appCopyright": "me",
  "appCategoryType": "Productivity",
...

我的安装程序配置如下所示:

{
    appDirectory: path.join(outPath, 'myapp-win32-ia32/'),
    authors: 'me',
    noMsi: true,
    outputDirectory: path.join(outPath, 'windows-installer'),
    exe: 'myapp.exe',
    setupExe: 'myappInstaller.exe',
    setupIcon: path.join(rootPath, 'assets', 'win', 'icon.ico'),
    skipUpdateIcon: true
  }

我不知道在哪里告诉安装人员快捷方式图标应该有我的应用程序的名称,而不仅仅是" Electron"。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我终于明白了。

project.json文件中,用于构建应用程序的命令是代码的用途。

您正在寻找的部分是--version-string.ProductName=\"My App Name\",位于"scripts": { "build": "YOUR CODE HERE"}

旁注...我正在使用电子包装工具。

以下是使用我的代码的示例:
"pack:win64": "electron-packager ./ --overwrite --asar=true --platform=win32 --arch=x64 --ignore=assets --ignore=build --ignore=installers --icon=./images/icons/icon.ico --prune=true --out=build/win --version-string.ProductName=\"My App Name\""