Skip to content
This repository has been archived by the owner on Mar 3, 2023. It is now read-only.

Upgrade to Electron Packager 11 #15431

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
82 changes: 33 additions & 49 deletions script/lib/package-application.js
Expand Up @@ -4,37 +4,41 @@ const assert = require('assert')
const childProcess = require('child_process')
const electronPackager = require('electron-packager')
const fs = require('fs-extra')
const hostArch = require('electron-packager/targets').hostArch
const includePathInPackagedApp = require('./include-path-in-packaged-app')
const getLicenseText = require('./get-license-text')
const path = require('path')
const spawnSync = require('./spawn-sync')

const CONFIG = require('../config')
const HOST_ARCH = hostArch()

module.exports = function () {
const appName = getAppName()
console.log(`Running electron-packager on ${CONFIG.intermediateAppPath} with app name "${appName}"`)
return runPackager({
'app-bundle-id': 'com.github.atom',
'app-copyright': `Copyright © 2014-${(new Date()).getFullYear()} GitHub, Inc. All rights reserved.`,
'app-version': CONFIG.appMetadata.version,
'arch': process.platform === 'darwin' ? 'x64' : process.arch, // OS X is 64-bit only
'asar': {unpack: buildAsarUnpackGlobExpression()},
'build-version': CONFIG.appMetadata.version,
'download': {cache: CONFIG.electronDownloadPath},
'dir': CONFIG.intermediateAppPath,
'extend-info': path.join(CONFIG.repositoryRootPath, 'resources', 'mac', 'atom-Info.plist'),
'helper-bundle-id': 'com.github.atom.helper',
'icon': getIcon(),
'name': appName,
'out': CONFIG.buildOutputPath,
'overwrite': true,
'platform': process.platform,
'version': CONFIG.appMetadata.electronVersion,
'version-string': {
'CompanyName': 'GitHub, Inc.',
'FileDescription': 'Atom',
'ProductName': 'Atom'
appBundleId: 'com.github.atom',
appCopyright: `Copyright © 2014-${(new Date()).getFullYear()} GitHub, Inc. All rights reserved.`,
appVersion: CONFIG.appMetadata.version,
arch: process.platform === 'darwin' ? 'x64' : HOST_ARCH, // OS X is 64-bit only
asar: {unpack: buildAsarUnpackGlobExpression()},
buildVersion: CONFIG.appMetadata.version,
download: {cache: CONFIG.electronDownloadPath},
dir: CONFIG.intermediateAppPath,
electronVersion: CONFIG.appMetadata.electronVersion,
extendInfo: path.join(CONFIG.repositoryRootPath, 'resources', 'mac', 'atom-Info.plist'),
helperBundleId: 'com.github.atom.helper',
icon: path.join(CONFIG.repositoryRootPath, 'resources', 'app-icons', CONFIG.channel, 'atom'),
name: appName,
out: CONFIG.buildOutputPath,
overwrite: true,
platform: process.platform,
// Atom doesn't have devDependencies, but if prune is true, it will delete the non-standard packageDependencies.
prune: false,
win32metadata: {
CompanyName: 'GitHub, Inc.',
FileDescription: 'Atom',
ProductName: 'Atom'
}
}).then((packagedAppPath) => {
let bundledResourcesPath
Expand Down Expand Up @@ -120,32 +124,12 @@ function getAppName () {
}
}

function getIcon () {
switch (process.platform) {
case 'darwin':
return path.join(CONFIG.repositoryRootPath, 'resources', 'app-icons', CONFIG.channel, 'atom.icns')
case 'linux':
// Don't pass an icon, as the dock/window list icon is set via the icon
// option in the BrowserWindow constructor in atom-window.coffee.
return null
default:
return path.join(CONFIG.repositoryRootPath, 'resources', 'app-icons', CONFIG.channel, 'atom.ico')
}
}

function runPackager (options) {
return new Promise((resolve, reject) => {
electronPackager(options, (err, packageOutputDirPaths) => {
if (err) {
reject(err)
throw new Error(err)
} else {
assert(packageOutputDirPaths.length === 1, 'Generated more than one electron application!')
const packagedAppPath = renamePackagedAppDir(packageOutputDirPaths[0])
resolve(packagedAppPath)
}
return electronPackager(options)
.then(packageOutputDirPaths => {
assert(packageOutputDirPaths.length === 1, 'Generated more than one electron application!')
return renamePackagedAppDir(packageOutputDirPaths[0])
})
})
}

function renamePackagedAppDir (packageOutputDirPath) {
Expand All @@ -158,21 +142,21 @@ function renamePackagedAppDir (packageOutputDirPath) {
} else if (process.platform === 'linux') {
const appName = CONFIG.channel === 'beta' ? 'atom-beta' : 'atom'
let architecture
if (process.arch === 'ia32') {
if (HOST_ARCH === 'ia32') {
architecture = 'i386'
} else if (process.arch === 'x64') {
} else if (HOST_ARCH === 'x64') {
architecture = 'amd64'
} else {
architecture = process.arch
architecture = HOST_ARCH
}
packagedAppPath = path.join(CONFIG.buildOutputPath, `${appName}-${CONFIG.appMetadata.version}-${architecture}`)
if (fs.existsSync(packagedAppPath)) fs.removeSync(packagedAppPath)
fs.renameSync(packageOutputDirPath, packagedAppPath)
} else {
const appName = CONFIG.channel === 'beta' ? 'Atom Beta' : 'Atom'
packagedAppPath = path.join(CONFIG.buildOutputPath, appName)
if (process.platform === 'win32' && process.arch !== 'ia32') {
packagedAppPath += ` ${process.arch}`
if (process.platform === 'win32' && HOST_ARCH !== 'ia32') {
packagedAppPath += ` ${HOST_ARCH}`
}
if (fs.existsSync(packagedAppPath)) fs.removeSync(packagedAppPath)
fs.renameSync(packageOutputDirPath, packagedAppPath)
Expand Down
2 changes: 1 addition & 1 deletion script/package.json
Expand Up @@ -11,7 +11,7 @@
"electron-chromedriver": "~1.7",
"electron-link": "0.1.2",
"electron-mksnapshot": "~1.7",
"electron-packager": "7.3.0",
"electron-packager": "11.0.0",
"electron-winstaller": "2.6.4",
"fs-admin": "^0.1.5",
"fs-extra": "0.30.0",
Expand Down