aboutsummaryrefslogtreecommitdiff
path: root/install.bat
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2013-12-26 05:46:17 -0800
committerHisham Muhammad <hisham@gobolinux.org>2013-12-26 05:46:17 -0800
commit1ab1f451a67196c081382b9a47c51de2ad16042b (patch)
treeed67f90fe99114394b32208e227e3748946d58ff /install.bat
parentcd2b8957b519ee01f15c481e13e21ff7f6fa22a0 (diff)
parent57c4c60f352c0bbecdb28b0f5c27831b48f653a2 (diff)
downloadluarocks-1ab1f451a67196c081382b9a47c51de2ad16042b.tar.gz
luarocks-1ab1f451a67196c081382b9a47c51de2ad16042b.tar.bz2
luarocks-1ab1f451a67196c081382b9a47c51de2ad16042b.zip
Merge pull request #211 from Tieske/exitcodes
Win defaults, /SELFCONTAINED option
Diffstat (limited to 'install.bat')
-rw-r--r--install.bat120
1 files changed, 103 insertions, 17 deletions
diff --git a/install.bat b/install.bat
index f6d6f842..03ec7c94 100644
--- a/install.bat
+++ b/install.bat
@@ -5,10 +5,10 @@ rem=rem --[[
5local vars = {} 5local vars = {}
6 6
7 7
8vars.PREFIX = os.getenv("PROGRAMFILES")..[[\LuaRocks]] 8vars.PREFIX = nil
9vars.VERSION = "2.1" 9vars.VERSION = "2.1"
10vars.SYSCONFDIR = (os.getenv("PROGRAMDATA") or (os.getenv("ALLUSERSPROFILE")..[[\Application Data]])) .. [[\LuaRocks]] -- ALLUSERS for WinXP compat 10vars.SYSCONFDIR = nil
11vars.ROCKS_TREE = vars.SYSCONFDIR 11vars.ROCKS_TREE = nil
12vars.SCRIPTS_DIR = nil 12vars.SCRIPTS_DIR = nil
13vars.LUA_INTERPRETER = nil 13vars.LUA_INTERPRETER = nil
14vars.LUA_PREFIX = nil 14vars.LUA_PREFIX = nil
@@ -26,9 +26,10 @@ local FORCE = false
26local FORCE_CONFIG = false 26local FORCE_CONFIG = false
27local INSTALL_LUA = false 27local INSTALL_LUA = false
28local USE_MINGW = false 28local USE_MINGW = false
29local REGISTRY = false 29local REGISTRY = true
30local NOADMIN = false 30local NOADMIN = false
31local PROMPT = true 31local PROMPT = true
32local SELFCONTAINED = false
32 33
33--- 34---
34-- Some helpers 35-- Some helpers
@@ -120,10 +121,19 @@ Installs LuaRocks.
120 121
121Configuring the destinations: 122Configuring the destinations:
122/TREE [dir] Root of the local tree of installed rocks. 123/TREE [dir] Root of the local tree of installed rocks.
123 Default is %PROGRAMDATA%\LuaRocks 124 Default is %PROGRAMFILES%\LuaRocks\systree
124/SCRIPTS [dir] Where to install commandline scripts installed by 125/SCRIPTS [dir] Where to install commandline scripts installed by
125 rocks. Default is {TREE}/bin. 126 rocks. Default is {TREE}/bin.
126 127/CONFIG [dir] Location where the config file should be installed.
128 Default is %PROGRAMFILES%\LuaRocks
129/SELFCONTAINED Creates a self contained installation in a single
130 directory given by /P.
131 Sets the /TREE and /CONFIG options to the same
132 location as /P. And does not load registry info
133 with option /NOREG. The only option NOT self
134 contained is the user rock tree, so don't use that
135 if you create a self contained installation.
136
127Configuring the Lua interpreter: 137Configuring the Lua interpreter:
128/LV [version] Lua version to use; either 5.1 or 5.2. 138/LV [version] Lua version to use; either 5.1 or 5.2.
129 Default is 5.1 139 Default is 5.1
@@ -149,14 +159,12 @@ Compiler configuration:
149/MW Use mingw as build system instead of MSVC 159/MW Use mingw as build system instead of MSVC
150 160
151Other options: 161Other options:
152/CONFIG [dir] Location where the config file should be installed.
153 Default is %PROGRAMDATA%\LuaRocks
154/FORCECONFIG Use a single config location. Do not use the 162/FORCECONFIG Use a single config location. Do not use the
155 LUAROCKS_CONFIG variable or the user's home directory. 163 LUAROCKS_CONFIG variable or the user's home directory.
156 Useful to avoid conflicts when LuaRocks 164 Useful to avoid conflicts when LuaRocks
157 is embedded within an application. 165 is embedded within an application.
158/F Remove installation directory if it already exists. 166/F Remove installation directory if it already exists.
159/R Load registry information to register '.rockspec' 167/NOREG Do not load registry info to register '.rockspec'
160 extension with LuaRocks commands (right-click). 168 extension with LuaRocks commands (right-click).
161/NOADMIN The installer requires admin priviledges. If not 169/NOADMIN The installer requires admin priviledges. If not
162 available it will elevate a new process. Use this 170 available it will elevate a new process. Use this
@@ -165,10 +173,6 @@ Other options:
165 user. 173 user.
166/Q Do not prompt for confirmation of settings 174/Q Do not prompt for confirmation of settings
167 175
168Example:
169To create a self contained install use (assuming Lua is in your PATH):
170INSTALL /P c:\LuaRocks /TREE c:\LuaRocks /CONFIG c:\LuaRocks
171
172]]) 176]])
173end 177end
174 178
@@ -207,8 +211,10 @@ local function parse_options(args)
207 FORCE_CONFIG = true 211 FORCE_CONFIG = true
208 elseif name == "/F" then 212 elseif name == "/F" then
209 FORCE = true 213 FORCE = true
210 elseif name == "/R" then 214 elseif name == "/SELFCONTAINED" then
211 REGISTRY = true 215 SELFCONTAINED = true
216 elseif name == "/NOREG" then
217 REGISTRY = false
212 elseif name == "/NOADMIN" then 218 elseif name == "/NOADMIN" then
213 NOADMIN = true 219 NOADMIN = true
214 elseif name == "/Q" then 220 elseif name == "/Q" then
@@ -221,6 +227,14 @@ end
221 227
222-- check for combination/required flags 228-- check for combination/required flags
223local function check_flags() 229local function check_flags()
230 if SELFCONTAINED then
231 if not vars.PREFIX then
232 die("Option /P is required when using /SELFCONTAINED")
233 end
234 if vars.SYSCONFDIR or vars.ROCKS_TREE or vars.SCRIPTS_DIR then
235 die("Cannot combine /TREE, /SCRIPTS or /CONFIG with /SELFCONTAINED")
236 end
237 end
224 if INSTALL_LUA then 238 if INSTALL_LUA then
225 if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then 239 if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then
226 die("Cannot combine option /L with any of /LUA /BIN /LIB /INC") 240 die("Cannot combine option /L with any of /LUA /BIN /LIB /INC")
@@ -505,6 +519,14 @@ end
505 519
506print(S"LuaRocks $VERSION.x installer.\n") 520print(S"LuaRocks $VERSION.x installer.\n")
507 521
522print([[
523
524========================
525== Checking system... ==
526========================
527
528]])
529
508parse_options(config) 530parse_options(config)
509check_flags() 531check_flags()
510 532
@@ -536,6 +558,7 @@ else
536 print("Admin priviledges available for installing") 558 print("Admin priviledges available for installing")
537end 559end
538 560
561vars.PREFIX = vars.PREFIX or os.getenv("PROGRAMFILES")..[[\LuaRocks]]
539vars.FULL_PREFIX = S"$PREFIX\\$VERSION" 562vars.FULL_PREFIX = S"$PREFIX\\$VERSION"
540vars.BINDIR = vars.FULL_PREFIX 563vars.BINDIR = vars.FULL_PREFIX
541vars.LIBDIR = vars.FULL_PREFIX 564vars.LIBDIR = vars.FULL_PREFIX
@@ -561,15 +584,38 @@ else
561 vars.UNAME_M = get_architecture() -- can only do when installation was found 584 vars.UNAME_M = get_architecture() -- can only do when installation was found
562end 585end
563 586
587local datapath
588if vars.UNAME_M == "x86" then
589 datapath = os.getenv("PROGRAMFILES") .. [[\LuaRocks]]
590else
591 -- our target interpreter is 64bit, so the tree (with binaries) should go into 64bit program files
592 datapath = os.getenv("ProgramW6432") .. [[\LuaRocks]]
593end
594vars.SYSCONFDIR = vars.SYSCONDFIR or datapath
595vars.ROCKS_TREE = vars.ROCKS_TREE or datapath..[[\systree]]
596if SELFCONTAINED then
597 vars.SYSCONFDIR = vars.PREFIX
598 vars.ROCKS_TREE = vars.PREFIX..[[\systree]]
599 REGISTRY = false
600end
601
564print(S[[ 602print(S[[
565 603
604==========================
605== System check results ==
606==========================
607
566Will configure LuaRocks with the following paths: 608Will configure LuaRocks with the following paths:
567LuaRocks : $FULL_PREFIX 609LuaRocks : $FULL_PREFIX
610Config file : $SYSCONFDIR\config.lua
611Rocktree : $ROCKS_TREE
612
568Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER 613Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER
569 binaries : $LUA_BINDIR 614 binaries : $LUA_BINDIR
570 libraries : $LUA_LIBDIR 615 libraries : $LUA_LIBDIR
571 includes : $LUA_INCDIR 616 includes : $LUA_INCDIR
572Binaries will be linked against: $LUA_LIBNAME with runtime $LUA_RUNTIME 617
618Binaries will be linked against: $LUA_LIBNAME with runtime $LUA_RUNTIME.dll
573System architecture detected as: $UNAME_M 619System architecture detected as: $UNAME_M
574 620
575]]) 621]])
@@ -579,6 +625,14 @@ if PROMPT then
579 io.read() 625 io.read()
580end 626end
581 627
628print([[
629
630============================
631== Installing LuaRocks... ==
632============================
633
634]])
635
582-- *********************************************************** 636-- ***********************************************************
583-- Install LuaRocks files 637-- Install LuaRocks files
584-- *********************************************************** 638-- ***********************************************************
@@ -646,6 +700,35 @@ IF NOT "%LUA_PATH_5_2%"=="" (
646) 700)
647SET "PATH=$BINDIR;%PATH%" 701SET "PATH=$BINDIR;%PATH%"
648"$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* 702"$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %*
703IF NOT "%ERRORLEVEL%"=="2" GOTO EXITLR
704
705REM Permission denied error, try and auto elevate...
706REM already an admin? (checking to prevent loops)
707NET SESSION >NUL 2>&1
708IF "%ERRORLEVEL%"=="0" GOTO EXITLR
709
710REM Do we have PowerShell available?
711PowerShell /? >NUL 2>&1
712IF NOT "%ERRORLEVEL%"=="0" GOTO EXITLR
713
714:GETTEMPNAME
715SET TMPFILE=%TEMP%\LuaRocks-Elevator-%RANDOM%.bat
716IF EXIST "%TMPFILE%" GOTO :GETTEMPNAME
717
718ECHO @ECHO OFF > "%TMPFILE%"
719ECHO CHDIR /D %CD% >> "%TMPFILE%"
720ECHO ECHO %0 %* >> "%TMPFILE%"
721ECHO ECHO. >> "%TMPFILE%"
722ECHO CALL %0 %* >> "%TMPFILE%"
723ECHO ECHO. >> "%TMPFILE%"
724ECHO ECHO Press any key to close this window... >> "%TMPFILE%"
725ECHO PAUSE ^> NUL >> "%TMPFILE%"
726ECHO DEL "%TMPFILE%" >> "%TMPFILE%"
727
728ECHO Now trying to run again elevated...
729PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%TMPFILE%', '', '', 'runas')
730
731:EXITLR
649ENDLOCAL 732ENDLOCAL
650]]) 733]])
651 f:close() 734 f:close()
@@ -799,7 +882,10 @@ exec( S[[del "$FULL_PREFIX\pe-parser.lua" >NUL]] )
799 882
800print(S[[ 883print(S[[
801 884
802*** LuaRocks is installed! *** 885============================
886== LuaRocks is installed! ==
887============================
888
803 889
804You may want to add the following elements to your paths; 890You may want to add the following elements to your paths;
805Lua interpreter; 891Lua interpreter;