From d7c73fb40e0c9f9001dee3cc1678e03d61e3524f Mon Sep 17 00:00:00 2001 From: mintty Date: Fri, 19 May 2017 22:19:20 +0200 Subject: [PATCH] revise installation; change config location, flexible install target --- config-context-menu.bat | 4 +- install.bat | 93 +++++++++++++++++++++++++++-------------- makewinx.cfg | 2 + mkshortcut.vbs | 52 +++++++++++++++++++++++ uninstall.bat | 7 ++-- wsl-l.bat | 5 ++- wsl.bat | 5 ++- wsl~.bat | 5 ++- 8 files changed, 133 insertions(+), 40 deletions(-) create mode 100755 mkshortcut.vbs diff --git a/config-context-menu.bat b/config-context-menu.bat index b324908..4c4b078 100755 --- a/config-context-menu.bat +++ b/config-context-menu.bat @@ -1,7 +1,7 @@ @echo off -rem See comments in install.bat about changing the installation directory. -set installdir=%LOCALAPPDATA%\wsltty +if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty +if "%configdir%" == "" set configdir=%APPDATA%\wsltty if "%1"=="/U" goto remove diff --git a/install.bat b/install.bat index 1cb9077..754e8b6 100755 --- a/install.bat +++ b/install.bat @@ -1,11 +1,14 @@ @echo off -rem If you change the installation directory, -rem it also needs to be adapted in -rem - the Shortcut links *.lnk -rem - the cmd invocation scripts wsl*.bat - +set refinstalldir=%%LOCALAPPDATA%%\wsltty set installdir=%LOCALAPPDATA%\wsltty +set refconfigdir=%%APPDATA%%\wsltty +set configdir=%APPDATA%\wsltty +set oldroot=%installdir% +set oldhomedir=%installdir%\home\%USERNAME% +set oldconfigdir=%oldhomedir%\.config\mintty +if not "%1" == "" set refinstalldir=%1 && set installdir=%1 +if not "%2" == "" set refconfigdir=%2 && set configdir=%2 :deploy @@ -13,18 +16,20 @@ set installdir=%LOCALAPPDATA%\wsltty mkdir "%installdir%" copy LICENSE.mintty "%installdir%" copy LICENSE.wslbridge "%installdir%" -copy uninstall.bat "%installdir%" -copy wsl.bat "%installdir%" -copy wsl~.bat "%installdir%" -copy wsl-l.bat "%installdir%" -copy "config-context-menu.bat" "%installdir%" +echo @echo off> setdirs.bat +echo set refinstalldir=%refinstalldir%>> setdirs.bat +echo set installdir=%installdir%>> setdirs.bat +echo set refconfigdir=%refconfigdir%>> setdirs.bat +echo set configdir=%configdir%>> setdirs.bat +copy setdirs.bat + wsl.bat "%installdir%\wsl.bat" +copy setdirs.bat + wsl~.bat "%installdir%\wsl~.bat" +copy setdirs.bat + wsl-l.bat "%installdir%\wsl-l.bat" +copy setdirs.bat + uninstall.bat "%installdir%\uninstall.bat" +copy setdirs.bat + config-context-menu.bat "%installdir%\config-context-menu.bat" + copy "add to context menu.lnk" "%installdir%" copy "remove from context menu.lnk" "%installdir%" -rem does not work without admin rights: -rem copy wsl.bat "%SYSTEMROOT%\System32" -rem copy wsl~.bat "%SYSTEMROOT%\System32" -rem copy wsl-l.bat "%SYSTEMROOT%\System32" mkdir "%installdir%\bin" copy cygwin1.dll "%installdir%\bin" @@ -35,26 +40,28 @@ copy zoo.exe "%installdir%\bin" copy wslbridge.exe "%installdir%\bin" copy wslbridge-backend "%installdir%\bin" -rem create "home directory" to enable storage of config file -mkdir "%installdir%\home -mkdir "%installdir%\home\%USERNAME%" - -rem create "config directory" and copy config archive -mkdir "%installdir%\home\%USERNAME%\.config" -mkdir "%installdir%\home\%USERNAME%\.config\mintty" -mkdir "%installdir%\home\%USERNAME%\.config\mintty\lang" -copy po.zoo "%installdir%\home\%USERNAME%\.config\mintty\lang" - -rem create "temp directory" for version checking -mkdir "%installdir%\tmp +rem create system config directory and copy config archive +mkdir "%installdir%\usr\share\mintty\lang" +copy po.zoo "%installdir%\usr\share\mintty\lang" :shortcuts +rem generate shortcuts + +set icon=%%LOCALAPPDATA%%\lxss\bash.ico +set target=%refinstalldir%\bin\mintty.exe +set minttyargs=--wsl --configdir="%refconfigdir%" -o Locale=C -o Charset=UTF-8 /bin/wslbridge +set bridgeargs=-t /bin/bash +cscript mkshortcut.vbs "/name:WSL Bash %% in Mintty" +set bridgeargs=-C~ -t /bin/bash +cscript mkshortcut.vbs "/name:WSL Bash ~ in Mintty" +set bridgeargs=-t /bin/bash -l +cscript mkshortcut.vbs "/name:WSL Bash -l in Mintty" + rem create Start Menu Folder set smf=%APPDATA%\Microsoft\Windows\Start Menu\Programs\WSLtty mkdir "%smf%" -echo on copy "wsltty home & help.url" "%smf%" copy "WSL Bash %% in Mintty.lnk" "%smf%" copy "WSL Bash ~ in Mintty.lnk" "%smf%" @@ -68,11 +75,35 @@ copy "WSL Bash %% in Mintty.lnk" "%USERPROFILE%\Desktop" copy "WSL Bash ~ in Mintty.lnk" "%USERPROFILE%\Desktop" -:config +:sysconfig -rem unpack config files -cd /D "%installdir%\home\%USERNAME%\.config\mintty\lang" -"%installdir%\bin\zoo" x po +rem unpack config files in system config directory +cd /D "%installdir%\usr\share\mintty\lang" +"%installdir%\bin\zoo" xO po + + +:migrate configuration + +rem migrate old config resource files to new config dir +if exist "%configdir%" goto configfile +if not exist "%oldconfigdir%" goto configfile +if exist "%oldhomedir%\.minttyrc" copy "%oldhomedir%\.minttyrc" "%oldconfigdir%\config" && del "%oldhomedir%\.minttyrc" +xcopy /E /I /Y "%oldconfigdir%" "%configdir%" && rmdir /S /Q "%oldconfigdir%" +rmdir "%oldhomedir%\.config" +:configfile +if exist "%configdir%\config" goto deloldhome +if exist "%oldhomedir%\.minttyrc" copy "%oldhomedir%\.minttyrc" "%configdir%\config" && del "%oldhomedir%\.minttyrc" +:deloldhome +rmdir "%oldhomedir%" +rmdir "%oldroot%\home" + + +:userconfig + +rem create user config directory and subfolders +mkdir "%configdir%\lang" +mkdir "%configdir%\sounds" +mkdir "%configdir%\themes" :end diff --git a/makewinx.cfg b/makewinx.cfg index 5040d4f..f47ceae 100644 --- a/makewinx.cfg +++ b/makewinx.cfg @@ -53,6 +53,7 @@ FILE17="remove from context menu.lnk" FILE18="wsltty home & help.url" FILE19="zoo.exe" FILE20="po.zoo" +FILE21=mkshortcut.vbs [SourceFiles] SourceFiles0=. @@ -79,4 +80,5 @@ SourceFiles0=. %FILE18%= %FILE19%= %FILE20%= +%FILE21%= diff --git a/mkshortcut.vbs b/mkshortcut.vbs new file mode 100755 index 0000000..56d56b5 --- /dev/null +++ b/mkshortcut.vbs @@ -0,0 +1,52 @@ +rem cscript mkshortcut.vbs [/param:arg] /target:link + +rem % +rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash +rem ~ +rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -C~ -t /bin/bash +rem -l +rem /arguments:--wsl -o Locale=C -o Charset=UTF-8 /bin/wslbridge -t /bin/bash -l +rem /target:%LOCALAPPDATA%\wsltty\bin\mintty.exe +rem /workingdir:%USERPROFILE% +rem /icon:%LOCALAPPDATA%\lxss\bash.ico + +rem General - Name: +name = Wscript.Arguments.Named("name") & ".lnk" +set wshell = WScript.CreateObject("WScript.Shell") +set lnk = wshell.CreateShortcut(name) + +rem Target: +rem lnk.TargetPath = Wscript.Arguments.Named("target") +rem lnk.Arguments = Wscript.Arguments.Named("arguments") + +lnk.TargetPath = wshell.ExpandEnvironmentStrings("%target%") +minttyargs = wshell.ExpandEnvironmentStrings("%minttyargs%") +bridgeargs = wshell.ExpandEnvironmentStrings("%bridgeargs%") +lnk.Arguments = minttyargs & bridgeargs +wscript.echo "minttyargs: " & minttyargs +wscript.echo lnk.Arguments + +rem Start in: +rem lnk.WorkingDirectory = Wscript.Arguments.Named("workingdir") +lnk.WorkingDirectory = "%USERPROFILE%" + +rem Icon: +rem icon = Wscript.Arguments.Named("icon") +rem rem iconoffset = Wscript.Arguments.Named("iconoffset") +rem rem icon = icon & ", " & iconoffset +icon = wshell.ExpandEnvironmentStrings("%icon%") +wscript.echo "icon: " & icon +lnk.IconLocation = icon +rem lnk.IconLocation = "%LOCALAPPDATA%\lxss\bash.ico" + +rem Shorcut key: +rem lnk.HotKey = "ALT+CTRL+W" + +rem Run: +rem lnk.WindowStyle = 1 + +rem Comment: +rem lnk.IconLocation = Wscript.Arguments.Named("desc") +rem lnk.Description = "WSLtty" + +lnk.Save diff --git a/uninstall.bat b/uninstall.bat index 64cc3c3..87497c9 100755 --- a/uninstall.bat +++ b/uninstall.bat @@ -1,8 +1,6 @@ @echo off -rem See comments in install.bat about changing the installation directory. - -set installdir=%LOCALAPPDATA%\wsltty +if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty :shortcuts @@ -23,8 +21,9 @@ call "%installdir%\config-context-menu.bat" /U :undeploy +cd %installdir% + rem currently not removing software -rem in any case, at least the config file (home\...) should not be removed :end diff --git a/wsl-l.bat b/wsl-l.bat index a284789..87701f1 100755 --- a/wsl-l.bat +++ b/wsl-l.bat @@ -2,11 +2,14 @@ rem Start mintty terminal for WSL in home directory +if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty +if "%configdir%" == "" set configdir=%APPDATA%\wsltty + rem To enable invocation of this script from WIN+R or from cmd.exe, rem you may want to copy this script into "%SYSTEMROOT%\System32" rem You may want a variant of this script without trailing "-l" rem to start in the current directory from cmd.exe -"%LOCALAPPDATA%\wsltty\bin\mintty.exe" --wsl -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash -l +"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash -l diff --git a/wsl.bat b/wsl.bat index 27415bb..84e761a 100755 --- a/wsl.bat +++ b/wsl.bat @@ -2,11 +2,14 @@ rem Start mintty terminal for WSL in home directory +if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty +if "%configdir%" == "" set configdir=%APPDATA%\wsltty + rem To enable invocation of this script from WIN+R or from cmd.exe, rem you may want to copy this script into "%SYSTEMROOT%\System32" rem You may want a variant of this script without trailing "-l" rem to start in the current directory from cmd.exe -"%LOCALAPPDATA%\wsltty\bin\mintty.exe" --wsl -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash +"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -t /bin/bash diff --git a/wsl~.bat b/wsl~.bat index 878027b..486d80e 100755 --- a/wsl~.bat +++ b/wsl~.bat @@ -2,11 +2,14 @@ rem Start mintty terminal for WSL in home directory +if "%installdir%" == "" set installdir=%LOCALAPPDATA%\wsltty +if "%configdir%" == "" set configdir=%APPDATA%\wsltty + rem To enable invocation of this script from WIN+R or from cmd.exe, rem you may want to copy this script into "%SYSTEMROOT%\System32" rem You may want a variant of this script without trailing "-l" rem to start in the current directory from cmd.exe -"%LOCALAPPDATA%\wsltty\bin\mintty.exe" --wsl -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -C~ -t /bin/bash +"%installdir%\bin\mintty.exe" --wsl "--configdir=%configdir%" -o Locale=C -o Charset=UTF-8 -i "%LOCALAPPDATA%\lxss\bash.ico" /bin/wslbridge -C~ -t /bin/bash