Add complete installation scripts for easy deployment
- install_rdp_client_complete.sh: Full-featured installer with auto-detection - install_rdp_client_https.sh: Simple HTTPS-based installer - INSTALL_INSTRUCTIONS.md: One-line installation commands and documentation Features: - Auto-detects Linux distribution (apt, dnf, yum, zypper, pacman) - Installs all system dependencies automatically - Sets up Python virtual environment - Creates desktop entry and launcher - Supports both SSH and HTTPS repository access - Includes uninstall option - Comprehensive error handling and user feedback
This commit is contained in:
60
INSTALL_INSTRUCTIONS.md
Normal file
60
INSTALL_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# RDP Client - One-Line Installation Commands
|
||||
|
||||
## For users with SSH access to the repository:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://gitea.egonetix.de/root/rdp_client/raw/branch/main/install_rdp_client_complete.sh | bash
|
||||
```
|
||||
|
||||
## For users without SSH access (HTTPS version):
|
||||
|
||||
```bash
|
||||
curl -fsSL https://gitea.egonetix.de/root/rdp_client/raw/branch/main/install_rdp_client_https.sh | bash
|
||||
```
|
||||
|
||||
## Manual download and install:
|
||||
|
||||
```bash
|
||||
# Download the complete installer
|
||||
wget https://gitea.egonetix.de/root/rdp_client/raw/branch/main/install_rdp_client_complete.sh
|
||||
chmod +x install_rdp_client_complete.sh
|
||||
./install_rdp_client_complete.sh
|
||||
```
|
||||
|
||||
## What the installer does:
|
||||
|
||||
1. **Detects your Linux distribution** and installs required packages:
|
||||
- freerdp2-x11 (RDP client)
|
||||
- python3, python3-pip, python3-tk
|
||||
- git
|
||||
- xrandr
|
||||
|
||||
2. **Clones the repository** to `~/rdp-client`
|
||||
|
||||
3. **Sets up Python virtual environment** with dependencies:
|
||||
- cryptography (for credential encryption)
|
||||
|
||||
4. **Creates desktop entry** and launcher script
|
||||
|
||||
5. **Tests the installation** to ensure everything works
|
||||
|
||||
## After installation:
|
||||
|
||||
- Run from command line: `rdp-client`
|
||||
- Find in applications menu: "RDP Client"
|
||||
- Configuration stored in: `~/.config/rdp-client/`
|
||||
|
||||
## Uninstall:
|
||||
|
||||
```bash
|
||||
./install_rdp_client_complete.sh --uninstall
|
||||
```
|
||||
|
||||
## Features included:
|
||||
|
||||
✅ Multi-monitor support with intelligent selection
|
||||
✅ Encrypted credential storage
|
||||
✅ Professional GUI interface
|
||||
✅ Connection profiles
|
||||
✅ Advanced RDP options
|
||||
✅ Automatic dependency management
|
||||
266
install_rdp_client_complete.sh
Executable file
266
install_rdp_client_complete.sh
Executable file
@@ -0,0 +1,266 @@
|
||||
#!/bin/bash
|
||||
|
||||
# RDP Client Complete Installation Script
|
||||
# This script clones the repository and installs all dependencies
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
REPO_URL="ssh://git@gitea.egonetix.de:222/root/rdp_client.git"
|
||||
INSTALL_DIR="$HOME/rdp-client"
|
||||
DESKTOP_FILE="$HOME/.local/share/applications/rdp-client.desktop"
|
||||
BIN_LINK="$HOME/.local/bin/rdp-client"
|
||||
|
||||
echo -e "${BLUE}=== RDP Client Complete Installation ===${NC}"
|
||||
echo "This script will:"
|
||||
echo "1. Install system dependencies (freerdp, python3, git)"
|
||||
echo "2. Clone the RDP client repository"
|
||||
echo "3. Install Python dependencies"
|
||||
echo "4. Create desktop entry and launcher"
|
||||
echo "5. Set up the application for easy access"
|
||||
echo
|
||||
|
||||
# Function to check if command exists
|
||||
command_exists() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Function to detect package manager and install packages
|
||||
install_system_deps() {
|
||||
echo -e "${YELLOW}Installing system dependencies...${NC}"
|
||||
|
||||
if command_exists apt-get; then
|
||||
# Debian/Ubuntu
|
||||
echo "Detected apt package manager (Debian/Ubuntu)"
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y freerdp2-x11 python3 python3-pip python3-venv git python3-tk xrandr
|
||||
elif command_exists dnf; then
|
||||
# Fedora
|
||||
echo "Detected dnf package manager (Fedora)"
|
||||
sudo dnf install -y freerdp python3 python3-pip git python3-tkinter xrandr
|
||||
elif command_exists yum; then
|
||||
# RHEL/CentOS
|
||||
echo "Detected yum package manager (RHEL/CentOS)"
|
||||
sudo yum install -y freerdp python3 python3-pip git tkinter xrandr
|
||||
elif command_exists zypper; then
|
||||
# openSUSE
|
||||
echo "Detected zypper package manager (openSUSE)"
|
||||
sudo zypper install -y freerdp python3 python3-pip git python3-tk xrandr
|
||||
elif command_exists pacman; then
|
||||
# Arch Linux
|
||||
echo "Detected pacman package manager (Arch Linux)"
|
||||
sudo pacman -S --noconfirm freerdp python python-pip git tk xorg-xrandr
|
||||
else
|
||||
echo -e "${RED}Error: Could not detect package manager. Please install manually:${NC}"
|
||||
echo "- freerdp2-x11 (or freerdp)"
|
||||
echo "- python3"
|
||||
echo "- python3-pip"
|
||||
echo "- python3-tk (or python3-tkinter)"
|
||||
echo "- git"
|
||||
echo "- xrandr"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup SSH key if needed
|
||||
setup_ssh_key() {
|
||||
if [[ "$REPO_URL" == ssh://* ]] || [[ "$REPO_URL" == git@* ]]; then
|
||||
if [ ! -f "$HOME/.ssh/id_rsa" ] && [ ! -f "$HOME/.ssh/id_ed25519" ]; then
|
||||
echo -e "${YELLOW}No SSH key found. You may need to set up SSH access to the repository.${NC}"
|
||||
echo "You can:"
|
||||
echo "1. Generate an SSH key: ssh-keygen -t ed25519 -C \"your_email@example.com\""
|
||||
echo "2. Add it to your Gitea account"
|
||||
echo "3. Or change the repository URL to HTTPS"
|
||||
echo
|
||||
read -p "Continue anyway? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to clone or update repository
|
||||
clone_or_update_repo() {
|
||||
echo -e "${YELLOW}Setting up repository...${NC}"
|
||||
|
||||
if [ -d "$INSTALL_DIR" ]; then
|
||||
echo "Directory $INSTALL_DIR already exists. Updating..."
|
||||
cd "$INSTALL_DIR"
|
||||
git pull origin main
|
||||
else
|
||||
echo "Cloning repository to $INSTALL_DIR..."
|
||||
git clone "$REPO_URL" "$INSTALL_DIR"
|
||||
cd "$INSTALL_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup Python environment
|
||||
setup_python_env() {
|
||||
echo -e "${YELLOW}Setting up Python environment...${NC}"
|
||||
|
||||
cd "$INSTALL_DIR"
|
||||
|
||||
# Create virtual environment if it doesn't exist
|
||||
if [ ! -d ".venv" ]; then
|
||||
python3 -m venv .venv
|
||||
fi
|
||||
|
||||
# Activate virtual environment
|
||||
source .venv/bin/activate
|
||||
|
||||
# Upgrade pip
|
||||
pip install --upgrade pip
|
||||
|
||||
# Install Python dependencies
|
||||
echo "Installing Python dependencies..."
|
||||
pip install cryptography
|
||||
|
||||
# Create requirements.txt for future reference
|
||||
cat > requirements.txt << EOF
|
||||
cryptography>=3.4.8
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}Python environment setup complete${NC}"
|
||||
}
|
||||
|
||||
# Function to create desktop entry
|
||||
create_desktop_entry() {
|
||||
echo -e "${YELLOW}Creating desktop entry...${NC}"
|
||||
|
||||
# Ensure directories exist
|
||||
mkdir -p "$(dirname "$DESKTOP_FILE")"
|
||||
mkdir -p "$(dirname "$BIN_LINK")"
|
||||
|
||||
# Create desktop file
|
||||
cat > "$DESKTOP_FILE" << EOF
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=RDP Client
|
||||
Comment=Professional RDP Client with Multi-Monitor Support
|
||||
Exec=$INSTALL_DIR/.venv/bin/python $INSTALL_DIR/rdp_client.py
|
||||
Icon=preferences-desktop-remote-desktop
|
||||
Terminal=false
|
||||
Categories=Network;RemoteAccess;
|
||||
Keywords=rdp;remote;desktop;connection;
|
||||
StartupNotify=true
|
||||
EOF
|
||||
|
||||
# Create launcher script in PATH
|
||||
cat > "$BIN_LINK" << EOF
|
||||
#!/bin/bash
|
||||
cd "$INSTALL_DIR"
|
||||
source .venv/bin/activate
|
||||
python rdp_client.py "\$@"
|
||||
EOF
|
||||
|
||||
chmod +x "$BIN_LINK"
|
||||
|
||||
echo -e "${GREEN}Desktop entry created${NC}"
|
||||
}
|
||||
|
||||
# Function to test installation
|
||||
test_installation() {
|
||||
echo -e "${YELLOW}Testing installation...${NC}"
|
||||
|
||||
cd "$INSTALL_DIR"
|
||||
source .venv/bin/activate
|
||||
|
||||
# Test Python imports
|
||||
python -c "import tkinter; import cryptography; print('All Python dependencies OK')"
|
||||
|
||||
# Test xfreerdp
|
||||
if command_exists xfreerdp; then
|
||||
echo "xfreerdp found: $(which xfreerdp)"
|
||||
else
|
||||
echo -e "${RED}Warning: xfreerdp not found in PATH${NC}"
|
||||
fi
|
||||
|
||||
# Test xrandr
|
||||
if command_exists xrandr; then
|
||||
echo "xrandr found: $(which xrandr)"
|
||||
else
|
||||
echo -e "${RED}Warning: xrandr not found in PATH${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main installation process
|
||||
main() {
|
||||
echo -e "${BLUE}Starting installation process...${NC}"
|
||||
|
||||
# Check if running as root
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo -e "${RED}Error: Don't run this script as root!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Install system dependencies
|
||||
install_system_deps
|
||||
|
||||
# Setup SSH if needed
|
||||
setup_ssh_key
|
||||
|
||||
# Clone or update repository
|
||||
clone_or_update_repo
|
||||
|
||||
# Setup Python environment
|
||||
setup_python_env
|
||||
|
||||
# Create desktop entry
|
||||
create_desktop_entry
|
||||
|
||||
# Test installation
|
||||
test_installation
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}=== Installation Complete! ===${NC}"
|
||||
echo
|
||||
echo "The RDP Client has been installed to: $INSTALL_DIR"
|
||||
echo
|
||||
echo "You can now run it in several ways:"
|
||||
echo "1. From command line: rdp-client"
|
||||
echo "2. From applications menu: Search for 'RDP Client'"
|
||||
echo "3. Directly: $INSTALL_DIR/.venv/bin/python $INSTALL_DIR/rdp_client.py"
|
||||
echo
|
||||
echo "Configuration files will be stored in: ~/.config/rdp-client/"
|
||||
echo
|
||||
echo -e "${YELLOW}Note: You may need to log out and back in for the desktop entry to appear.${NC}"
|
||||
echo
|
||||
echo "Enjoy your new RDP client! 🚀"
|
||||
}
|
||||
|
||||
# Handle script arguments
|
||||
case "${1:-}" in
|
||||
--help|-h)
|
||||
echo "RDP Client Complete Installation Script"
|
||||
echo
|
||||
echo "Usage: $0 [options]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " --help, -h Show this help message"
|
||||
echo " --uninstall Remove the RDP client installation"
|
||||
echo
|
||||
echo "This script will install all dependencies and set up the RDP client."
|
||||
exit 0
|
||||
;;
|
||||
--uninstall)
|
||||
echo -e "${YELLOW}Uninstalling RDP Client...${NC}"
|
||||
rm -rf "$INSTALL_DIR"
|
||||
rm -f "$DESKTOP_FILE"
|
||||
rm -f "$BIN_LINK"
|
||||
echo -e "${GREEN}RDP Client uninstalled successfully${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
main
|
||||
;;
|
||||
esac
|
||||
72
install_rdp_client_https.sh
Executable file
72
install_rdp_client_https.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
# RDP Client Simple Installation Script (HTTPS version)
|
||||
# This script clones the repository via HTTPS and installs all dependencies
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://gitea.egonetix.de/root/rdp_client.git"
|
||||
INSTALL_DIR="$HOME/rdp-client"
|
||||
|
||||
echo -e "${BLUE}=== RDP Client Simple Installation (HTTPS) ===${NC}"
|
||||
echo "This script will download and install the RDP client using HTTPS."
|
||||
echo
|
||||
|
||||
# Function to check if command exists
|
||||
command_exists() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Install system dependencies
|
||||
echo -e "${YELLOW}Installing system dependencies...${NC}"
|
||||
if command_exists apt-get; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y freerdp2-x11 python3 python3-pip python3-venv git python3-tk
|
||||
elif command_exists dnf; then
|
||||
sudo dnf install -y freerdp python3 python3-pip git python3-tkinter
|
||||
elif command_exists pacman; then
|
||||
sudo pacman -S --noconfirm freerdp python python-pip git tk
|
||||
else
|
||||
echo -e "${RED}Please install manually: freerdp, python3, python3-pip, python3-tk, git${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clone repository
|
||||
echo -e "${YELLOW}Downloading RDP client...${NC}"
|
||||
if [ -d "$INSTALL_DIR" ]; then
|
||||
echo "Updating existing installation..."
|
||||
cd "$INSTALL_DIR" && git pull
|
||||
else
|
||||
git clone "$REPO_URL" "$INSTALL_DIR"
|
||||
fi
|
||||
|
||||
# Setup Python environment
|
||||
echo -e "${YELLOW}Setting up Python environment...${NC}"
|
||||
cd "$INSTALL_DIR"
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install --upgrade pip
|
||||
pip install cryptography
|
||||
|
||||
# Create launcher
|
||||
echo -e "${YELLOW}Creating launcher...${NC}"
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
cat > "$HOME/.local/bin/rdp-client" << EOF
|
||||
#!/bin/bash
|
||||
cd "$INSTALL_DIR"
|
||||
source .venv/bin/activate
|
||||
python rdp_client.py "\$@"
|
||||
EOF
|
||||
chmod +x "$HOME/.local/bin/rdp-client"
|
||||
|
||||
echo -e "${GREEN}=== Installation Complete! ===${NC}"
|
||||
echo "Run with: rdp-client"
|
||||
echo "Or directly: $INSTALL_DIR/.venv/bin/python $INSTALL_DIR/rdp_client.py"
|
||||
Reference in New Issue
Block a user