mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Merge pull request #11761 from atom/dg-improve-install-task-windows
Windows build - handle admin elevation when required for install
This commit is contained in:
@@ -17,20 +17,24 @@ module.exports = (grunt) ->
|
||||
|
||||
if process.platform is 'win32'
|
||||
done = @async()
|
||||
fs.access(installDir, fs.W_OK, (err) ->
|
||||
adminRequired = true if err
|
||||
if adminRequired
|
||||
grunt.log.ok("User does not have write access to #{installDir}, elevating to admin")
|
||||
runas ?= require 'runas'
|
||||
copyFolder = path.resolve 'script', 'copy-folder.cmd'
|
||||
grunt.log.ok("Installing into \"#{installDir}\" from \"#{shellAppDir}\"")
|
||||
parentInstallDir = path.resolve(installDir, '..')
|
||||
adminRequired = false
|
||||
try
|
||||
rm installDir
|
||||
mkdir installDir
|
||||
catch err
|
||||
grunt.log.ok("Admin elevation required for write access to \"#{installDir}\"")
|
||||
adminRequired = true
|
||||
|
||||
if runas('cmd', ['/c', copyFolder, shellAppDir, installDir], admin: adminRequired) isnt 0
|
||||
grunt.log.error("Failed to copy #{shellAppDir} to #{installDir}")
|
||||
else
|
||||
grunt.log.ok("Installed into #{installDir}")
|
||||
runas ?= require 'runas'
|
||||
copyFolder = path.resolve 'script', 'copy-folder.cmd'
|
||||
if runas('cmd', ['/c', copyFolder, shellAppDir, installDir], admin: adminRequired) isnt 0
|
||||
grunt.fail.fatal("Unable to copy files.")
|
||||
else
|
||||
grunt.log.ok("Completed successfully.")
|
||||
|
||||
done()
|
||||
)
|
||||
done()
|
||||
|
||||
else if process.platform is 'darwin'
|
||||
rm installDir
|
||||
|
||||
Reference in New Issue
Block a user