Merge pull request #931 from feross/detect-arch
Add 64-bit Windows build
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# WebTorrent Desktop Version History
|
# WebTorrent Desktop Version History
|
||||||
|
|
||||||
|
## v0.16.0 - 2016-09-18
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- **Windows 64-bit support!**
|
||||||
|
- Existing 32-bit users will update to 64-bit automatically in next release
|
||||||
|
- 64-bit reduces likelihood of out-of-memory errors by increasing the address space
|
||||||
|
|
||||||
## v0.15.0 - 2016-09-16
|
## v0.15.0 - 2016-09-16
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
109
bin/package.js
109
bin/package.js
@@ -112,7 +112,7 @@ var darwin = {
|
|||||||
// Build for Mac
|
// Build for Mac
|
||||||
platform: 'darwin',
|
platform: 'darwin',
|
||||||
|
|
||||||
// Build 64 bit binaries only.
|
// Build x64 binaries only.
|
||||||
arch: 'x64',
|
arch: 'x64',
|
||||||
|
|
||||||
// The bundle identifier to use in the application's plist (Mac only).
|
// The bundle identifier to use in the application's plist (Mac only).
|
||||||
@@ -133,8 +133,8 @@ var win32 = {
|
|||||||
// Build for Windows.
|
// Build for Windows.
|
||||||
platform: 'win32',
|
platform: 'win32',
|
||||||
|
|
||||||
// Build 32 bit binaries only.
|
// Build ia32 and x64 binaries.
|
||||||
arch: 'ia32',
|
arch: 'all',
|
||||||
|
|
||||||
// Object hash of application metadata to embed into the executable (Windows only)
|
// Object hash of application metadata to embed into the executable (Windows only)
|
||||||
'version-string': {
|
'version-string': {
|
||||||
@@ -167,7 +167,7 @@ var linux = {
|
|||||||
// Build for Linux.
|
// Build for Linux.
|
||||||
platform: 'linux',
|
platform: 'linux',
|
||||||
|
|
||||||
// Build 32 and 64 bit binaries.
|
// Build ia32 and x64 binaries.
|
||||||
arch: 'all'
|
arch: 'all'
|
||||||
|
|
||||||
// Note: Application icon for Linux is specified via the BrowserWindow `icon` option.
|
// Note: Application icon for Linux is specified via the BrowserWindow `icon` option.
|
||||||
@@ -388,19 +388,25 @@ function buildWin32 (cb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var tasks = []
|
var tasks = []
|
||||||
if (argv.package === 'exe' || argv.package === 'all') {
|
buildPath.forEach(function (filesPath) {
|
||||||
tasks.push((cb) => packageInstaller(cb))
|
var destArch = filesPath.split('-').pop()
|
||||||
}
|
|
||||||
if (argv.package === 'portable' || argv.package === 'all') {
|
if (argv.package === 'exe' || argv.package === 'all') {
|
||||||
tasks.push((cb) => packagePortable(cb))
|
tasks.push((cb) => packageInstaller(filesPath, destArch, cb))
|
||||||
}
|
}
|
||||||
|
if (argv.package === 'portable' || argv.package === 'all') {
|
||||||
|
tasks.push((cb) => packagePortable(filesPath, destArch, cb))
|
||||||
|
}
|
||||||
|
})
|
||||||
series(tasks, cb)
|
series(tasks, cb)
|
||||||
|
|
||||||
function packageInstaller (cb) {
|
function packageInstaller (filesPath, destArch, cb) {
|
||||||
console.log('Windows: Creating installer...')
|
console.log(`Windows: Creating ${destArch} installer...`)
|
||||||
|
|
||||||
|
var archStr = destArch === 'ia32' ? '-ia32' : ''
|
||||||
|
|
||||||
installer.createWindowsInstaller({
|
installer.createWindowsInstaller({
|
||||||
appDirectory: buildPath[0],
|
appDirectory: filesPath,
|
||||||
authors: config.APP_TEAM,
|
authors: config.APP_TEAM,
|
||||||
description: config.APP_NAME,
|
description: config.APP_NAME,
|
||||||
exe: config.APP_NAME + '.exe',
|
exe: config.APP_NAME + '.exe',
|
||||||
@@ -410,8 +416,21 @@ function buildWin32 (cb) {
|
|||||||
noMsi: true,
|
noMsi: true,
|
||||||
outputDirectory: DIST_PATH,
|
outputDirectory: DIST_PATH,
|
||||||
productName: config.APP_NAME,
|
productName: config.APP_NAME,
|
||||||
remoteReleases: config.GITHUB_URL,
|
/**
|
||||||
setupExe: config.APP_NAME + 'Setup-v' + config.APP_VERSION + '.exe',
|
* Only create delta updates for the Windows x64 build because 90% of our
|
||||||
|
* users have Windows x64 and the delta files take a *very* long time to
|
||||||
|
* generate. Also, the ia32 files on GitHub have non-standard Squirrel
|
||||||
|
* names (i.e. RELEASES-ia32 instead of RELEASES) and so Squirrel won't
|
||||||
|
* find them unless we proxy the requests.
|
||||||
|
*/
|
||||||
|
remoteReleases: destArch === 'x64'
|
||||||
|
? config.GITHUB_URL
|
||||||
|
: undefined,
|
||||||
|
/**
|
||||||
|
* If you hit a "GitHub API rate limit exceeded" error, set this token!
|
||||||
|
*/
|
||||||
|
remoteToken: process.env.WEBTORRENT_GITHUB_API_TOKEN,
|
||||||
|
setupExe: config.APP_NAME + 'Setup-v' + config.APP_VERSION + archStr + '.exe',
|
||||||
setupIcon: config.APP_ICON + '.ico',
|
setupIcon: config.APP_ICON + '.ico',
|
||||||
signWithParams: signWithParams,
|
signWithParams: signWithParams,
|
||||||
title: config.APP_NAME,
|
title: config.APP_NAME,
|
||||||
@@ -419,23 +438,65 @@ function buildWin32 (cb) {
|
|||||||
version: pkg.version
|
version: pkg.version
|
||||||
})
|
})
|
||||||
.then(function () {
|
.then(function () {
|
||||||
console.log('Windows: Created installer.')
|
console.log(`Windows: Created ${destArch} installer.`)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete extraneous Squirrel files (i.e. *.nupkg delta files for older
|
||||||
|
* versions of the app)
|
||||||
|
*/
|
||||||
|
fs.readdirSync(DIST_PATH)
|
||||||
|
.filter((name) => name.endsWith('.nupkg') && !name.includes(pkg.version))
|
||||||
|
.forEach((filename) => {
|
||||||
|
fs.unlinkSync(path.join(DIST_PATH, filename))
|
||||||
|
})
|
||||||
|
|
||||||
|
if (destArch === 'ia32') {
|
||||||
|
console.log('Windows: Renaming ia32 installer files...')
|
||||||
|
|
||||||
|
// RELEASES -> RELEASES-ia32
|
||||||
|
var relPath = path.join(DIST_PATH, 'RELEASES-ia32')
|
||||||
|
fs.renameSync(
|
||||||
|
path.join(DIST_PATH, 'RELEASES'),
|
||||||
|
relPath
|
||||||
|
)
|
||||||
|
|
||||||
|
// WebTorrent-vX.X.X-full.nupkg -> WebTorrent-vX.X.X-ia32-full.nupkg
|
||||||
|
fs.renameSync(
|
||||||
|
path.join(DIST_PATH, `${BUILD_NAME}-full.nupkg`),
|
||||||
|
path.join(DIST_PATH, `${BUILD_NAME}-ia32-full.nupkg`)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Change file name inside RELEASES-ia32 to match renamed file
|
||||||
|
var relContent = fs.readFileSync(relPath, 'utf8')
|
||||||
|
var relContent32 = relContent.replace(/full\.nupkg$/, '-ia32-full.nupkg')
|
||||||
|
fs.writeFileSync(relPath, relContent32)
|
||||||
|
|
||||||
|
if (relContent === relContent32) {
|
||||||
|
// Sanity check
|
||||||
|
throw new Error('Fixing RELEASE-ia32 failed. Replacement did not modify the file.')
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Windows: Renamed ia32 installer files.')
|
||||||
|
}
|
||||||
|
|
||||||
cb(null)
|
cb(null)
|
||||||
})
|
})
|
||||||
.catch(cb)
|
.catch(cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
function packagePortable (cb) {
|
function packagePortable (filesPath, destArch, cb) {
|
||||||
console.log('Windows: Creating portable app...')
|
console.log(`Windows: Creating ${destArch} portable app...`)
|
||||||
|
|
||||||
var portablePath = path.join(buildPath[0], 'Portable Settings')
|
var portablePath = path.join(filesPath, 'Portable Settings')
|
||||||
mkdirp.sync(portablePath)
|
mkdirp.sync(portablePath)
|
||||||
|
|
||||||
var inPath = path.join(DIST_PATH, path.basename(buildPath[0]))
|
var archStr = destArch === 'ia32' ? '-ia32' : ''
|
||||||
var outPath = path.join(DIST_PATH, BUILD_NAME + '-win.zip')
|
|
||||||
|
var inPath = path.join(DIST_PATH, path.basename(filesPath))
|
||||||
|
var outPath = path.join(DIST_PATH, BUILD_NAME + '-win' + archStr + '.zip')
|
||||||
zip.zipSync(inPath, outPath)
|
zip.zipSync(inPath, outPath)
|
||||||
|
|
||||||
console.log('Windows: Created portable app.')
|
console.log(`Windows: Created ${destArch} portable app.`)
|
||||||
cb(null)
|
cb(null)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -500,8 +561,10 @@ function buildLinux (cb) {
|
|||||||
// Create .zip file for Linux
|
// Create .zip file for Linux
|
||||||
console.log(`Linux: Creating ${destArch} zip...`)
|
console.log(`Linux: Creating ${destArch} zip...`)
|
||||||
|
|
||||||
|
var archStr = destArch === 'ia32' ? '-ia32' : ''
|
||||||
|
|
||||||
var inPath = path.join(DIST_PATH, path.basename(filesPath))
|
var inPath = path.join(DIST_PATH, path.basename(filesPath))
|
||||||
var outPath = path.join(DIST_PATH, BUILD_NAME + '-linux-' + destArch + '.zip')
|
var outPath = path.join(DIST_PATH, BUILD_NAME + '-linux' + archStr + '.zip')
|
||||||
zip.zipSync(inPath, outPath)
|
zip.zipSync(inPath, outPath)
|
||||||
|
|
||||||
console.log(`Linux: Created ${destArch} zip.`)
|
console.log(`Linux: Created ${destArch} zip.`)
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
<p>
|
<p>
|
||||||
Version <script>document.write(require('../package.json').version)</script>
|
Version <script>document.write(require('../package.json').version)</script>
|
||||||
(<script>document.write(require('webtorrent/package.json').version)</script>)
|
(<script>document.write(require('webtorrent/package.json').version)</script>)
|
||||||
|
(<script>document.write(process.arch === 'x64' ? '64-bit' : '32-bit')</script>)
|
||||||
</p>
|
</p>
|
||||||
<p><script>document.write(require('../config').APP_COPYRIGHT)</script></p>
|
<p><script>document.write(require('../config').APP_COPYRIGHT)</script></p>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user