Merge pull request #928 from feross/detect-arch
Detect system architecture; send in update/telemetry
This commit is contained in:
@@ -81,6 +81,8 @@ module.exports = {
|
||||
IS_PRODUCTION: IS_PRODUCTION,
|
||||
IS_TEST: IS_TEST,
|
||||
|
||||
OS_SYSARCH: is64BitOperatingSystem() ? 'x64' : 'ia32',
|
||||
|
||||
POSTER_PATH: path.join(getConfigPath(), 'Posters'),
|
||||
ROOT_PATH: path.join(__dirname, '..'),
|
||||
STATIC_PATH: path.join(__dirname, '..', 'static'),
|
||||
@@ -149,3 +151,32 @@ function isProduction () {
|
||||
return !/\/electron$/.test(process.execPath)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the operating system's CPU architecture. This is different than
|
||||
* `process.arch` which returns the architecture the binary was compiled for.
|
||||
*
|
||||
* On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit
|
||||
* app is based on the presence of a WOW64 file: %SystemRoot%\SysNative.
|
||||
*
|
||||
* Background: https://twitter.com/feross/status/776949077208510464
|
||||
*/
|
||||
function is64BitOperatingSystem () {
|
||||
// This is a 64-bit binary, so the OS clearly supports 64-bit apps
|
||||
if (process.arch === 'x64') return true
|
||||
|
||||
let useEnv = false
|
||||
try {
|
||||
useEnv = !!(process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT))
|
||||
} catch (err) {}
|
||||
|
||||
let sysRoot = useEnv ? process.env.SYSTEMROOT : 'C:\\Windows'
|
||||
|
||||
// If %SystemRoot%\SysNative exists, we are in a WOW64 FS Redirected application.
|
||||
let isWOW64 = false
|
||||
try {
|
||||
isWOW64 = !!fs.statSync(path.join(sysRoot, 'sysnative'))
|
||||
} catch (err) {}
|
||||
|
||||
return isWOW64
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@ const windows = require('./windows')
|
||||
|
||||
const AUTO_UPDATE_URL = config.AUTO_UPDATE_URL +
|
||||
'?version=' + config.APP_VERSION +
|
||||
'&platform=' + process.platform
|
||||
'&platform=' + process.platform +
|
||||
'&sysarch=' + config.OS_SYSARCH
|
||||
|
||||
function init () {
|
||||
if (process.platform === 'linux') {
|
||||
|
||||
@@ -105,6 +105,7 @@ function getSystemInfo () {
|
||||
osPlatform: process.platform,
|
||||
osRelease: os.type() + ' ' + os.release(),
|
||||
architecture: os.arch(),
|
||||
systemArchitecture: config.OS_SYSARCH,
|
||||
totalMemoryMB: roundPow2(os.totalmem() / (1 << 20)),
|
||||
numCores: os.cpus().length
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user