|
1 | 1 | @echo off |
2 | 2 | setlocal enabledelayedexpansion |
3 | | -title CloudSync-CLI Setup |
| 3 | +title CloudSync-CLI Setup Wizard |
4 | 4 |
|
5 | | -set "VERSION=1.0.5" |
6 | 5 | set "DEFAULT_DIR=%LOCALAPPDATA%\CloudSync-CLI" |
| 6 | +set "REPO=Tech4File/cloudsync-cli" |
7 | 7 |
|
8 | 8 | echo. |
9 | | -echo ╔══════════════════════════════════════════════════════╗ |
10 | | -echo ║ CloudSync-CLI v%VERSION% Installer ║ |
11 | | -echo ║ Secure cloud-to-local file synchronization ║ |
12 | | -echo ╚══════════════════════════════════════════════════════╝ |
| 9 | +echo ============================================================== |
| 10 | +echo CloudSync-CLI Windows Setup Wizard |
| 11 | +echo Secure Cloud-to-Local Synchronization CLI Suite |
| 12 | +echo ============================================================== |
13 | 13 | echo. |
14 | | -echo This wizard will install CloudSync-CLI on your computer. |
| 14 | +echo This wizard will install CloudSync-CLI on your system. |
15 | 15 | echo. |
16 | | -echo It will: |
17 | | -echo * Copy the executable to your chosen location |
18 | | -echo * Register the cloudsync command globally |
19 | | -echo * Add the installation directory to your PATH |
| 16 | +echo It will automatically: |
| 17 | +echo 1. Install the standalone binary (cloudsync.exe) |
| 18 | +echo 2. Register cloudsync globally in your PATH environment variable |
| 19 | +echo 3. Verify functionality and command execution |
20 | 20 | echo. |
21 | | -echo ───────────────────────────────────────────────────── |
22 | | -echo Step 1 of 3: Installation Directory |
23 | | -echo ───────────────────────────────────────────────────── |
| 21 | +echo -------------------------------------------------------------- |
| 22 | +echo Step 1: Choose Installation Directory |
| 23 | +echo -------------------------------------------------------------- |
24 | 24 | echo. |
25 | | -echo Where should CloudSync-CLI be installed? |
| 25 | +echo [1] Default (Recommended): %DEFAULT_DIR% |
| 26 | +echo [2] Custom Directory |
| 27 | +echo [3] Exit Setup |
26 | 28 | echo. |
27 | | -echo [1] Default: %DEFAULT_DIR% |
28 | | -echo [2] Custom path |
29 | | -echo [3] Exit installer |
30 | | -echo. |
31 | | -set /p DIR_CHOICE=" Enter choice (1-3): " |
| 29 | +set /p DIR_CHOICE=" Enter selection (1-3): " |
32 | 30 |
|
33 | 31 | if "%DIR_CHOICE%"=="3" exit /b 0 |
34 | 32 | if "%DIR_CHOICE%"=="2" goto CUSTOM_DIR |
35 | 33 | set "INSTALL_DIR=%DEFAULT_DIR%" |
36 | | -goto CONFIRM_DIR |
| 34 | +goto PROCEED_INSTALL |
37 | 35 |
|
38 | 36 | :CUSTOM_DIR |
39 | 37 | echo. |
40 | | -set /p INSTALL_DIR=" Enter full installation path: " |
41 | | -if "%INSTALL_DIR%"=="" set "INSTALL_DIR=%DEFAULT_DIR%" |
| 38 | +set /p USER_DIR=" Enter full custom install path: " |
| 39 | +if "%USER_DIR%"=="" ( |
| 40 | + set "INSTALL_DIR=%DEFAULT_DIR%" |
| 41 | +) else ( |
| 42 | + set "INSTALL_DIR=%USER_DIR%" |
| 43 | +) |
42 | 44 |
|
43 | | -:CONFIRM_DIR |
| 45 | +:PROCEED_INSTALL |
44 | 46 | if not exist "%INSTALL_DIR%" mkdir "%INSTALL_DIR%" >nul 2>&1 |
45 | 47 | if errorlevel 1 ( |
46 | | - echo [ERROR] Could not create: %INSTALL_DIR% |
47 | | - echo Try running as Administrator. |
| 48 | + echo. |
| 49 | + echo [ERROR] Could not create directory: %INSTALL_DIR% |
| 50 | + echo Please run this installer as Administrator. |
48 | 51 | pause |
49 | 52 | exit /b 1 |
50 | 53 | ) |
51 | | -echo Installing to: %INSTALL_DIR% |
52 | 54 |
|
53 | 55 | echo. |
54 | | -echo ───────────────────────────────────────────────────── |
55 | | -echo Step 2 of 3: Installing Files |
56 | | -echo ───────────────────────────────────────────────────── |
| 56 | +echo -------------------------------------------------------------- |
| 57 | +echo Step 2: Installing Executable & Files |
| 58 | +echo -------------------------------------------------------------- |
| 59 | +echo Target: %INSTALL_DIR% |
57 | 60 | echo. |
58 | 61 |
|
59 | 62 | set "SETUP_DIR=%~dp0" |
60 | 63 | if exist "%SETUP_DIR%cloudsync.exe" ( |
61 | | - copy /Y "%SETUP_DIR%cloudsync.exe" "%INSTALL_DIR%\cloudsync.exe" >nul 2>&1 |
62 | | - echo [OK] cloudsync.exe |
| 64 | + copy /Y "%SETUP_DIR%cloudsync.exe" "%INSTALL_DIR%\cloudsync.exe" >nul |
| 65 | + echo [OK] Copied cloudsync.exe |
63 | 66 | ) else ( |
64 | | - echo [SKIP] cloudsync.exe not found in setup directory |
| 67 | + echo [INFO] Local binary not found, downloading from GitHub Releases... |
| 68 | + powershell -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri 'https://github.com/%REPO%/releases/latest/download/cloudsync.exe' -OutFile '%INSTALL_DIR%\cloudsync.exe'" |
| 69 | + if exist "%INSTALL_DIR%\cloudsync.exe" ( |
| 70 | + echo [OK] Downloaded and installed cloudsync.exe |
| 71 | + ) else ( |
| 72 | + echo [ERROR] Failed to download cloudsync.exe |
| 73 | + pause |
| 74 | + exit /b 1 |
| 75 | + ) |
65 | 76 | ) |
66 | 77 |
|
67 | | -if exist "%SETUP_DIR%cloudsync-portable.exe" ( |
68 | | - copy /Y "%SETUP_DIR%cloudsync-portable.exe" "%INSTALL_DIR%\cloudsync-portable.exe" >nul 2>&1 |
69 | | - echo [OK] cloudsync-portable.exe |
70 | | -) |
71 | | - |
72 | | -echo @echo off > "%INSTALL_DIR%\cloudsync.bat" |
73 | | -echo "%%INSTALL_DIR%%\cloudsync.exe" %%* >> "%INSTALL_DIR%\cloudsync.bat" |
74 | | -echo [OK] cloudsync command wrapper |
75 | | - |
76 | | -( |
77 | | -echo CloudSync-CLI v%VERSION% |
78 | | -echo Installed: %DATE% %TIME% |
79 | | -echo Path: %INSTALL_DIR% |
80 | | -echo Docs: https://github.com/Tech4File/cloudsync-cli |
81 | | -) > "%INSTALL_DIR%\VERSION.txt" |
82 | | -echo [OK] VERSION.txt |
83 | | - |
| 78 | +:: Create convenient uninstaller script |
84 | 79 | ( |
85 | 80 | echo @echo off |
86 | 81 | echo echo. |
87 | 82 | echo echo CloudSync-CLI Uninstaller |
88 | | -echo echo ──────────────────────── |
89 | | -echo choice /c YN /n /m " Uninstall? [Y/N] " |
90 | | -echo if errorlevel 2 exit /b 0 |
| 83 | +echo echo ---------------------------------------- |
| 84 | +echo set /p CONFIRM=" Are you sure you want to uninstall CloudSync-CLI? (Y/N): " |
| 85 | +echo if /i not "%%CONFIRM%%"=="Y" exit /b 0 |
| 86 | +echo powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('Path', 'User'); $np = ($p -split ';' | Where-Object { $_ -and $_ -ne '%INSTALL_DIR%' }) -join ';'; [Environment]::SetEnvironmentVariable('Path', $np, 'User')" |
91 | 87 | echo rmdir /S /Q "%INSTALL_DIR%" 2^>nul |
92 | | -echo echo CloudSync-CLI has been uninstalled. |
93 | | -echo echo Remove from PATH: %INSTALL_DIR% |
| 88 | +echo echo [OK] CloudSync-CLI has been uninstalled successfully. |
94 | 89 | echo pause |
95 | 90 | ) > "%INSTALL_DIR%\uninstall.bat" |
96 | | -echo [OK] Uninstaller |
| 91 | +echo [OK] Generated uninstaller: %INSTALL_DIR%\uninstall.bat |
97 | 92 |
|
98 | 93 | echo. |
99 | | -echo ───────────────────────────────────────────────────── |
100 | | -echo Step 3 of 3: System Integration |
101 | | -echo ───────────────────────────────────────────────────── |
102 | | -echo. |
| 94 | +echo -------------------------------------------------------------- |
| 95 | +echo Step 3: Registering Environment Variables (PATH) |
| 96 | +echo -------------------------------------------------------------- |
103 | 97 |
|
104 | | -setx PATH "%PATH%;%INSTALL_DIR%" >nul 2>&1 |
105 | | -if errorlevel 1 ( |
106 | | - echo [WARN] Could not update PATH automatically. |
107 | | - echo Add manually: %INSTALL_DIR% |
108 | | -) else ( |
109 | | - echo [OK] Added to user PATH |
110 | | -) |
| 98 | +:: Use PowerShell to safely update User PATH without setx 1024 char limit |
| 99 | +powershell -NoProfile -Command "$dir = '%INSTALL_DIR%'; $p = [Environment]::GetEnvironmentVariable('Path', 'User'); $parts = if ($p) { $p -split ';' } else { @() }; if ($parts -notcontains $dir) { $np = ($parts + $dir | Where-Object { $_ }) -join ';'; [Environment]::SetEnvironmentVariable('Path', $np, 'User'); Write-Host ' [OK] Successfully registered in User PATH' } else { Write-Host ' [INFO] Already registered in User PATH' }" |
111 | 100 |
|
112 | 101 | echo. |
113 | | -echo ╔══════════════════════════════════════════════════════╗ |
114 | | -echo ║ Installation Complete! ║ |
115 | | -echo ╚══════════════════════════════════════════════════════╝ |
| 102 | +echo ============================================================== |
| 103 | +echo Installation Complete! |
| 104 | +echo ============================================================== |
116 | 105 | echo. |
117 | | -echo Location: %INSTALL_DIR% |
118 | | -echo Uninstall: %INSTALL_DIR%\uninstall.bat |
| 106 | +echo Location: %INSTALL_DIR% |
| 107 | +echo Executable: %INSTALL_DIR%\cloudsync.exe |
| 108 | +echo Uninstaller: %INSTALL_DIR%\uninstall.bat |
119 | 109 | echo. |
120 | | -echo To get started: |
121 | | -echo 1. Open a NEW terminal window |
122 | | -echo 2. Run: cloudsync --version |
123 | | -echo 3. Run: cloudsync --help |
| 110 | +echo Verification: |
| 111 | +"%INSTALL_DIR%\cloudsync.exe" --version |
124 | 112 | echo. |
125 | | -echo Full documentation: |
126 | | -echo https://github.com/Tech4File/cloudsync-cli#readme |
| 113 | +echo Next steps: |
| 114 | +echo 1. Open a new terminal / Command Prompt / PowerShell |
| 115 | +echo 2. Type: cloudsync --help |
127 | 116 | echo. |
128 | | -echo ╔══════════════════════════════════════════════════════╗ |
129 | | -echo ║ Press any key to close... ║ |
130 | | -echo ╚══════════════════════════════════════════════════════╝ |
| 117 | +echo ============================================================== |
| 118 | +echo Press any key to exit wizard... |
131 | 119 | pause >nul |
0 commit comments