Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

to stable #5

Merged
merged 11 commits into from
Sep 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 53 additions & 58 deletions ConCygSys-installer.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,25 @@
:: Licensed under the Apache License 2.0: http://www.apache.org/licenses/LICENSE-2.0
:: Independent fork of cygwin-portable-installer: https://github.com/vegardit/cygwin-portable-installer

set CONCYGSYS_VERSION=190913
set CONCYGSYS_VERSION=190915


::======================= begin SCRIPT SETTINGS =======================
:: If you want to use a Windows %variable% in setting, surround it by % - %%variable%%
:: Not required if you edit settings in update.cmd after Cygwin installation

::+++++++++++++ Cygwin settings

:: Custom home folder path (!) without quotes ' "
:: Custom home folder: https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch-home
:: Applicable for new installations only. For existing ones home folder can be modified in /etc/nsswitch.conf
:: Examples:
:: /home/cygwinhome
:: C:\cygwinhome
:: C:\Users\yourusername\Documents\cygwinhome
:: %%USERPROFILE%%\Documents\cygwinhome
:: /cygdrive/c/Users/YOURUSERNAME/cygwinhome
:: /%%H/cygwinhome (% sign should be escaped)
:: Leave empty to use default one - /home/concygsys
set CYGWIN_HOME=

:: specify default launcher for Cygwin
:: if specified launcher is not available, defaults to next available one in the following order: conemu mintty cmd
set LAUNCHER_CYGWIN=conemu
:: Specify default launcher for Cygwin: conemu mintty cmd
:: If specified launcher is not available, defaults to next available one in the following order: conemu mintty cmd
set LAUNCHER_CYGWIN=

:: Comma-separated list of the packages to be installed automatically: https://cygwin.com/packages/package_list.html
:: You will be able to install other packages later with apt-cyg if INSTALL_APT_CYG is set to yes below
Expand All @@ -35,7 +33,7 @@ set CYGWIN_PACKAGES=bind-utils,inetutils,openssh,vim,whois
set CYGWIN_MIRROR=

:: Set proxy, if required, in the following format: proxyip:port
:: Applies to installation process and to setting of installed cygwin instance
:: Applicable to installation process only
set PROXY_HOST=

:: Override OS architecture, if required: "32" bit or "64" bit system. Leave empty for autodetect
Expand All @@ -47,8 +45,8 @@ set CYGWIN_ARCH=
:: Why not using https://github.com/kou1okada/apt-cyg : https://github.com/kou1okada/apt-cyg#requirements https://github.com/kou1okada/apt-cyg/issues/24
set INSTALL_APT_CYG=yes

:: Install and configure ssh-pageant: https://github.com/cuviper/ssh-pageant
set INSTALL_SSH_PAGEANT=yes
:: Configure ssh-agent: https://github.com/zhubanRuban/cygwin-extras#ssh-agent-tweak
set INSTALL_SSH_AGENT_TWEAK=yes

:: Space-separated list of additional scripts URL to execute after Cygwin installation
:: They will be downloaded with wget and passed to bash. Commands available by default to custom scripts: cygwin base + wget + apt-cyg
Expand All @@ -66,16 +64,16 @@ set INSTALL_CONEMU=yes
:: Mintty : will be launched via mintty
:: Connector : will be launched via ConEmu connector https://conemu.github.io/en/CygwinMsysConnector.html
:: Cmd : will be launched via standard Windown console
set CONEMUTASK_DEFAULT=Mintty
set CONEMUTASK_DEFAULT=

::+++++++++++++ Settings for WSL

:: Install WSLbridge allowing to access WSL via Mintty https://github.com/rprichard/wslbridge (WSLtty emulation https://github.com/mintty/wsltty)
set INSTALL_WSLBRIDGE=no

:: Specify default launcher for WSL
:: Specify default launcher for WSL: conemu mintty cmd
:: If specified launcher is not available, defaults to next available one in the following order: conemu mintty cmd
set LAUNCHER_WSLBRIDGE=conemu
set LAUNCHER_WSLBRIDGE=

::======================= end SCRIPT SETTINGS =======================

Expand All @@ -86,11 +84,11 @@ set CONCYGSYS_INFO=ConCygSys v.%CONCYGSYS_VERSION% %CONCYGSYS_LINK%
echo %CONCYGSYS_INFO%
echo.

set INSTALL_ROOT=%~dp0
set CYGWIN_DIR=cygwin
set CYGWIN_ROOT=%~dp0%CYGWIN_DIR%
set Concygsys_settings=update.cmd
set Concygsys_settings_temp=ConCygSys-%Concygsys_settings%
set "PATH=%CYGWIN_ROOT%\bin;PATH=%CYGWIN_ROOT%\usr\local\bin;%PATH%"
set CONCYGSYS_SETTINGS=update.cmd
set "PATH=%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\local\bin;%PATH%"
set BASH=bash --noprofile --norc -c

::==========================================================
Expand All @@ -100,31 +98,25 @@ setlocal EnableDelayedExpansion
if exist %CYGWIN_DIR% (
echo Existing Cygwin folder detected, switching to update mode...
set UPDATEMODE=yes
%SystemRoot%\System32\wbem\WMIC.exe process get ExecutablePath | findstr "%CYGWIN_ROOT%" >NUL 2>&1
%SystemRoot%\System32\wbem\WMIC.exe process get ExecutablePath | findstr "%INSTALL_ROOT%" >NUL 2>&1
:: multiple :: in if loop cause"system cannot find disk" warning, using rem further
rem why not using "%ERRORLEVEL%"=="0": https://social.technet.microsoft.com/Forums/en-US/e72cb532-3da0-4c7f-a61e-9ffbf8050b55/batch-errorlevel-always-reports-back-level-0?forum=ITCG
if not ErrorLevel 1 (
echo.
echo ^^!^^!^^! Active Cygwin processes detected ^^!^^!^^!
echo ==========================================
%SystemRoot%\System32\wbem\WMIC.exe process where "ExecutablePath like '%%%CYGWIN_ROOT:\=\\%%%'" get ExecutablePath, ProcessId
%SystemRoot%\System32\wbem\WMIC.exe process where "ExecutablePath like '%%%INSTALL_ROOT:\=\\%%%'" get ExecutablePath, ProcessId
echo.
echo They will be terminated during update, please make sure you saved everything before proceeding
pause
for /f "usebackq" %%p in (`%SystemRoot%\System32\wbem\WMIC.exe process where "ExecutablePath like '%%%CYGWIN_ROOT:\=\\%%%'" get ProcessId`) do taskkill /f /pid %%p >NUL 2>&1
for /f "usebackq" %%p in (`%SystemRoot%\System32\wbem\WMIC.exe process where "ExecutablePath like '%%%INSTALL_ROOT:\=\\%%%'" get ProcessId`) do taskkill /f /pid %%p >NUL 2>&1
goto :retryupdate
) else (
if exist "%Concygsys_settings%" (
copy /y "%Concygsys_settings%" "%Concygsys_settings_temp%" >NUL 2>&1
:: escaping % in existing config
sed -i '/^^set/ s/%%/%%%%/g' "%Concygsys_settings_temp%"
echo Reading existing settings from %Concygsys_settings_temp% ...
call "%Concygsys_settings_temp%" cygwinsettings
call "%Concygsys_settings_temp%" installoptions
del /f /q "%Concygsys_settings_temp%" >NUL 2>&1
if exist "%CONCYGSYS_SETTINGS%" (
call "%CONCYGSYS_SETTINGS%" cygwinsettings
call "%CONCYGSYS_SETTINGS%" installoptions
:: making sure settings from previous versions are transferred properly
if not "!PROXY_PORT!" == "" (if not "!PROXY_HOST!" == "" (set PROXY_HOST=!PROXY_HOST!:!PROXY_PORT!))
if not "!HOME_FOLDER!" == "" (set CYGWIN_HOME=!HOME_FOLDER!)
)
echo.
set /p UPDATECYGWINONLY= [1] then [Enter] : update Cygwin only [Enter] : update everything
Expand All @@ -136,7 +128,7 @@ if exist %CYGWIN_DIR% (
echo.
echo To customize update process:
echo - close this window
echo - modify :installoptions section of %Concygsys_settings% file
echo - modify :installoptions section of %CONCYGSYS_SETTINGS% file
echo - re-run update
echo.
echo If you are good with existing setup, just hit [Enter] to start update
Expand Down Expand Up @@ -198,14 +190,14 @@ set CYGWIN_SETUP_PATH=%CYGWIN_DIR%\%CYGWIN_SETUP%
cscript //Nologo %DOWNLOADER% https://cygwin.org/%CYGWIN_SETUP% %CYGWIN_SETUP_PATH% || goto :fail

:: https://cygwin.com/faq/faq.html#faq.setup.cli
if "%CYGWIN_MIRROR%" == "" (set CYGWIN_MIRROR=ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/sources.redhat.com/cygwin/)
if "%CYGWIN_MIRROR%" == "" (set CYGWIN_MIRROR=http://mirror.checkdomain.de/cygwin/)
if "%PROXY_HOST%" == "" (set CYGWIN_PROXY=) else (set CYGWIN_PROXY=--proxy "%PROXY_HOST%")

:: adding required packages for special software
if "%INSTALL_CONEMU%" == "yes" (set CYGWIN_PACKAGES=bsdtar,wget,%CYGWIN_PACKAGES%)
if "%INSTALL_WSLBRIDGE%" == "yes" (set CYGWIN_PACKAGES=bsdtar,wget,%CYGWIN_PACKAGES%)
if "%INSTALL_APT_CYG%" == "yes" (set CYGWIN_PACKAGES=wget,%CYGWIN_PACKAGES%)
if "%INSTALL_SSH_PAGEANT%" == "yes" (set CYGWIN_PACKAGES=ssh-pageant,%CYGWIN_PACKAGES%)
if "%INSTALL_SSH_AGENT_TWEAK%" == "yes" (set CYGWIN_PACKAGES=openssh,wget,%CYGWIN_PACKAGES%)
if not "%INSTALL_ADDONS%" == "" (set CYGWIN_PACKAGES=wget,%CYGWIN_PACKAGES%& set INSTALL_APT_CYG=yes)

:: https://www.cygwin.com/faq/faq.html#faq.setup.cli
Expand Down Expand Up @@ -243,6 +235,10 @@ set FSTAB=%FSTAB: =\040%
echo # %CONCYGSYS_INFO%
) > %CYGWIN_DIR%\etc\fstab & dos2unix -q %CYGWIN_DIR%\etc\fstab

:: adjusting home folder if not set
if "%CYGWIN_HOME%" == "" (set CYGWIN_HOME=/home/concygsys)
sed -i 's/^^#.*db_home:.*/db_home: %CYGWIN_HOME:/=\/%/' /etc/nsswitch.conf

:: inputrc fix for ctrl+left and ctrl+right to work as expected: https://github.com/zhubanRuban/cygwin-extras#custom-inputrc
copy /y %CYGWIN_DIR%\etc\defaults\etc\skel\.inputrc %CYGWIN_DIR%\etc\skel\.inputrc >NUL 2>&1
(
Expand All @@ -251,7 +247,7 @@ copy /y %CYGWIN_DIR%\etc\defaults\etc\skel\.inputrc %CYGWIN_DIR%\etc\skel\.input
echo "\e[1;5C": forward-word # ctrl + right
echo "\e[1;5D": backward-word # ctrl + left
echo # %CONCYGSYS_INFO%
) > %CYGWIN_DIR%\etc\skel\.inputrc & dos2unix -q %CYGWIN_DIR%\etc\skel\.inputrc
) >> %CYGWIN_DIR%\etc\skel\.inputrc & dos2unix -q %CYGWIN_DIR%\etc\skel\.inputrc

if not "%UPDATECYGWINONLY%" == "" goto :aftercygwinupdate
::==========================================================
Expand All @@ -262,13 +258,12 @@ if "%INSTALL_APT_CYG%" == "yes" (
chmod +x /usr/local/bin/apt-cyg
)

if "%INSTALL_SSH_PAGEANT%" == "yes" (
echo. & echo Configuring ssh-pageant...
echo eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME"^) > %CYGWIN_DIR%\etc\profile.d\ssh-pageant.sh
dos2unix -q %CYGWIN_DIR%\etc\profile.d\ssh-pageant.sh
if "%INSTALL_SSH_AGENT_TWEAK%" == "yes" (
echo. & echo Configuring ssh-agent...
wget -nv --show-progress -O /etc/profile.d/ssh-agent-tweak.sh https://github.com/zhubanRuban/cygwin-extras/raw/master/ssh-agent-tweak
grep -q AddKeysToAgent %CYGWIN_DIR%\etc\ssh_config >NUL 2>&1 || echo AddKeysToAgent yes >> %CYGWIN_DIR%\etc\ssh_config & dos2unix -q %CYGWIN_DIR%\etc\ssh_config
:: removing previous possible ssh-agent implementations
rm -f /opt/ssh-agent-tweak
sed -i '/\/opt\/ssh-agent-tweak/d' ~/.bashrc >NUL 2>&1
rm -f /opt/ssh-agent-tweak & sed -i '/\/opt\/ssh-agent-tweak/d' ~/.bashrc >NUL 2>&1
)

set ADDONS_DIR=addons
Expand Down Expand Up @@ -432,11 +427,13 @@ if "%INSTALL_WSLBRIDGE%" == "yes" (
echo. & echo Generating the launchers...
:: files left by previous concygsys versions
del /f /q Cygwin-*.cmd Launch-*.cmd >NUL 2>&1
rm -f /etc/passwd /etc/group
echo Generating Cygwin launcher...
(
echo @echo off
echo :: %CONCYGSYS_INFO%
echo call %Concygsys_settings% launcherheader
echo cd /d "%%~dp0"
echo call %CONCYGSYS_SETTINGS% launcherheader
echo if not "%%LAUNCHER_CYGWIN%%" == "" (goto :%%LAUNCHER_CYGWIN%%^)
echo.
echo :conemu
Expand All @@ -462,7 +459,8 @@ if "%INSTALL_WSLBRIDGE%" == "yes" (
(
echo @echo off
echo :: %CONCYGSYS_INFO%
echo call %Concygsys_settings% launcherheader
echo cd /d "%%~dp0"
echo call %CONCYGSYS_SETTINGS% launcherheader
echo if not "%%LAUNCHER_WSLBRIDGE%%" == "" (goto :%%LAUNCHER_WSLBRIDGE%%^)
echo.
echo :conemu
Expand Down Expand Up @@ -499,18 +497,17 @@ echo Generating one-file settings and updater file...
echo.
echo :cygwinsettings
echo :: these settings will be applied on next launcher run
echo set CYGWIN_HOME=%CYGWIN_HOME%
echo set LAUNCHER_CYGWIN=%LAUNCHER_CYGWIN%
if "%INSTALL_WSLBRIDGE%" == "yes" (echo set LAUNCHER_WSLBRIDGE=%LAUNCHER_WSLBRIDGE%)
if "%INSTALL_CONEMU%" == "yes" (echo set CONEMUTASK_DEFAULT=%CONEMUTASK_DEFAULT%)
echo set PROXY_HOST=%PROXY_HOST%
echo exit /b
echo.
echo :installoptions
echo :: these settings will be applied after you run %Concygsys_settings%
echo :: these settings will be applied after you run %CONCYGSYS_SETTINGS%
echo :: specify CYGWIN_PACKAGES only if you need new packages not installed at the moment
echo set CYGWIN_PACKAGES=
echo set CYGWIN_MIRROR=%CYGWIN_MIRROR%
echo set PROXY_HOST=%PROXY_HOST%
echo set CYGWIN_ARCH=%CYGWIN_ARCH%
echo set INSTALL_APT_CYG=%INSTALL_APT_CYG%
echo set INSTALL_ADDONS=
Expand All @@ -520,16 +517,10 @@ echo Generating one-file settings and updater file...
echo ::====================================================
echo.
echo :launcherheader
echo set "PATH=%%~dp0%CYGWIN_DIR%\bin;%%~dp0%CYGWIN_DIR%\usr\local\bin;%%PATH%%"
echo.
echo call %%~nx0 cygwinsettings
echo.
echo set "PATH=%%~dp0%CYGWIN_DIR%\bin;%%PATH%%"
echo rm -f /etc/passwd
echo if "%%CYGWIN_HOME%%" == "" (set HOME=/home/concygsys^) else (set HOME=%%CYGWIN_HOME%%^)
echo if not "%%PROXY_HOST%%" == "" (
echo set http_proxy=http://%%PROXY_HOST%%
echo set https_proxy=https://%%PROXY_HOST%%
echo set ftp_proxy=ftp://%%PROXY_HOST%%
echo ^)
echo echo.
echo setlocal enableextensions
echo set TERM=
Expand All @@ -547,11 +538,12 @@ echo Generating one-file settings and updater file...
echo echo # %CONCYGSYS_INFO%
echo ^) ^> "%%CYGWIN_ROOT%%\etc\fstab" ^& dos2unix -q "%%CYGWIN_ROOT%%\etc\fstab"
echo.
echo sed -i '/^last-cache/!b;n;c\\\t%%TEMP:\=\\\%%\\\cygwin-local-package-dir' /etc/setup/setup.rc
echo sed -i '/^^^^last-cache/!b;n;c\\\t%%TEMP:\=\\\%%\\\cygwin-local-package-dir' /etc/setup/setup.rc
echo exit /b
echo.
echo :update
echo echo %CONCYGSYS_INFO%
echo cd /d "%%~dp0"
echo set DOWNLOADER=%DOWNLOADER%
echo call %%~nx0 cygwinsettings
echo if "%%PROXY_HOST%%" == "" (set DOWNLOADER_PROXY=.^) else (set DOWNLOADER_PROXY= req.SetProxy 2, "%%PROXY_HOST%%", ""^)
Expand Down Expand Up @@ -589,18 +581,21 @@ echo Generating one-file settings and updater file...
echo echo.
echo pause
echo exit /b 1
) > %Concygsys_settings% || goto :fail
) > %CONCYGSYS_SETTINGS% || goto :fail

::==========================================================

echo. & echo Generating README.txt
(
echo %CONCYGSYS_INFO%
echo Change settings : right click on %Concygsys_settings% ^> Edit
echo Update : launch %Concygsys_settings%
echo Change settings : right click on %CONCYGSYS_SETTINGS% ^> Edit
echo Update : launch %CONCYGSYS_SETTINGS%
echo More info : %CONCYGSYS_LINK%#customization
) > README.md & move /y README.md README.txt >NUL 2>&1

echo. & echo Cleaning up...
sed -i '/^^last-cache/!b;n;c\\\t' /etc/setup/setup.rc
rm -f /etc/fstab /var/log/setup*

:aftercygwinupdate
::==========================================================
Expand Down
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ConCygSys <a href="../.."><img height="30" src="https://camo.githubusercontent.com/7710b43d0476b6f6d4b4b2865e35c108f69991f3/68747470733a2f2f7777772e69636f6e66696e6465722e636f6d2f646174612f69636f6e732f6f637469636f6e732f313032342f6d61726b2d6769746875622d3235362e706e67"></a> <a href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank"><img align="right" height="40" src="https://wsldownload.azureedge.net/ubuntu.ico"></a> <a href="https://conemu.github.io/" target="_blank"><img align="right" height="40" src="https://upload.wikimedia.org/wikipedia/commons/d/dc/ConEmu_icon.png"></a> <a href="https://www.cygwin.com/" target="_blank"><img align="right" height="40" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Cygwin_logo.svg/128px-Cygwin_logo.svg.png"></a>
# ConCygSys <a href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank"><img align="right" height="40" src="https://wsldownload.azureedge.net/ubuntu.ico"></a> <a href="https://conemu.github.io/" target="_blank"><img align="right" height="40" src="https://upload.wikimedia.org/wikipedia/commons/d/dc/ConEmu_icon.png"></a> <a href="https://www.cygwin.com/" target="_blank"><img align="right" height="40" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Cygwin_logo.svg/128px-Cygwin_logo.svg.png"></a>

[![GitHub release (latest by date)](https://img.shields.io/github/v/release/zhubanRuban/cygwin-portable?style=flat-square)](../../releases)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/zhubanRuban/cygwin-portable?style=flat-square)
Expand Down Expand Up @@ -41,9 +41,9 @@

- Download the [latest ConCygSys release](../../releases), extract the archive and go to the extracted folder

> **Optional:** Edit **`ConCygSys-installer`** to [customize](#customization) the installation per your requirements
> **Optional:** Edit **`ConCygSys-installer.cmd`** to [customize](#customization) the installation per your requirements

- Launch **`ConCygSys-installer`**
- Launch **`ConCygSys-installer.cmd`**

> If Windows complains with a **Windows protected your PC** popup, you may need to click **Run anyway** to proceed with the installation.

Expand Down Expand Up @@ -71,13 +71,13 @@ You will be able either to update **Cygwin only** or to perform a **full update*

> If you cannot find **`update`** launcher or something goes wrong:
> - Download [**`ConCygSys-installer.cmd`**](../../raw/master/ConCygSys-installer.cmd) *(right click > save link as)* to existing ConCygSys directory
> - Launch **`ConCygSys-installer`**
> - Launch **`ConCygSys-installer.cmd`**

## Customization

Open **`ConCygSys-installer`** with text editor on your PC before installation to get a control over the installation process. Available options will be in **SCRIPT SETTINGS** section. All settings are accompanied with description.
Open **`ConCygSys-installer.cmd`** with text editor on your PC before installation to get a control over the installation process. Available options will be in **SCRIPT SETTINGS** section. All settings are accompanied with description.

[List of options](ConCygSys-installer.cmd#L11-L80)
[List of options](ConCygSys-installer.cmd#L11-L78)

After the installation, in order to change settings / add components, edit **:cygwinsettings** and **:installoptions** sections of **`update.cmd`** launcher (Right click > Edit).

Expand All @@ -87,7 +87,7 @@ After the installation, in order to change settings / add components, edit **:cy

### How much disk space does it take after installation?

If installed with default settings: 205M | zip: 70.3M | 7z: 40.3M
If installed with default settings: `205M` zip: `70.3M` 7z: `40.3M`

### What is the path to Windows drives when I'm in Cygwin console?

Expand Down Expand Up @@ -121,11 +121,13 @@ Pre-built packages:

### Can I use this installation for organisation?

- change `CYGWIN_HOME` to `/%%H/SOMEFOLDER` in **`ConCygSys-installer.cmd`** (% must be escaped)
- install with admin rights to shared location, like C:\Program Files\cygwin
- open **`update.cmd`** and edit CYGWIN_HOME to %USERPROFILE%\SOMEFOLDER

In this example every user who launched Cygwin will have own home folder in C:\Users\USER\SOMEFOLDER

For existing installation you can change home folder in [/etc/nsswitch.conf](https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch-home). % sign does not need to be escaped in this case.

### How to check ConCygSys version?

The version can be found at the beginning of:
Expand Down