This commit completes the unified Windows deployment console with automatic detection of first-time install vs update, eliminating the need for separate Install-*.ps1 scripts.
## Changes
### Added Detection Functions
- `Test-BackendInstalled`: Checks if backend is installed (venv + service + requirements.txt)
- `Test-TelegramBotInstalled`: Checks if telegram bot is installed (venv + service + app files)
### Added Prerequisite Installation Functions
- `Install-Chocolatey`: Automated Chocolatey package manager installation
- `Install-Python`: Python 3.11 installation via Chocolatey
- `Install-NSSM`: NSSM (Windows service manager) installation via Chocolatey
- `Install-IISModules`: IIS and required modules (URL Rewrite, Application Initialization)
### Added First-Time Installation Functions
- `Install-BackendFirstTime`: Complete backend first-time installation (~240 lines)
- Directory structure creation
- Backend, frontend, shared files copying with exclusions
- .env.example template copying
- Virtual environment creation with proper pip installation
- Windows Service creation via NSSM
- IIS Application Pool and Web Application configuration
- `Install-TelegramBotFirstTime`: Complete telegram bot first-time installation (~155 lines)
- Directory structure (app, data, logs, temp, backups)
- App files and requirements.txt copying
- Virtual environment creation
- Windows Service creation via NSSM
### Updated Deployment Functions with Auto-Routing
- `Deploy-Backend`: Now calls `Test-BackendInstalled` first
- If NOT installed → routes to `Install-BackendFirstTime`
- If installed → proceeds with existing UPDATE logic (backup, stop, update, start)
- `Deploy-TelegramBot`: Now calls `Test-TelegramBotInstalled` first
- If NOT installed → routes to `Install-TelegramBotFirstTime`
- If installed → proceeds with existing UPDATE logic (backup, stop, update, start)
## Benefits
1. **Single Entry Point**: Users can run the same deploy command for both first-time install and updates
2. **No Separate Install Scripts**: Eliminates confusion between Install-*.ps1 and Deploy-*.ps1
3. **Automatic Detection**: Intelligently detects what needs to be done
4. **Safer Updates**: Always checks if components exist before attempting updates
5. **Better UX**: Clear warnings about first-time installation vs updates
## Usage
```powershell
# Interactive (auto-detects install vs update)
.\ROA2WEB-Console.ps1
# Select: Deploy Components > Backend + Frontend
# Command line (auto-detects install vs update)
.\ROA2WEB-Console.ps1 -NonInteractive -Action DeployBackend
.\ROA2WEB-Console.ps1 -NonInteractive -Action DeployTelegramBot
.\ROA2WEB-Console.ps1 -NonInteractive -Action DeployAll
```
The console will automatically:
- Detect if backend/telegram-bot are installed
- Perform first-time installation if needed (including prerequisites)
- Perform updates if already installed (with automatic backups)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>