Fix AutoInstaller GUI issues and improve progress tracking

- Fix AttributeError: 'network_label' -> 'interface_label' in set_defaults()
- Remove incorrect PyInstaller hidden imports (QShortcut, QKeySequence)
- Add 10-second progress re-estimation with real-time ETA display
- Update build.sh to properly handle AutoInstallerGUI binary naming
- Update README files with recent fixes and improvements
parent 42416d0f
......@@ -10,6 +10,7 @@ This project creates a custom Debian live ISO with advanced autologin, automatic
-**USB boot compatible** - Works from CD/DVD or USB drives
-**Offline installation** - No internet connection required
-**Maximum WiFi support** - Comprehensive firmware packages included
-**Graphical AutoInstaller GUI** - PyQt6-based installer with full network configuration
### **Installed System**
-**Auto-login as root** with proper password authentication
......@@ -24,8 +25,23 @@ This project creates a custom Debian live ISO with advanced autologin, automatic
-**Standalone executables** - No Python installation required for end users
-**Safe USB detection** - Only shows removable devices
### **AutoInstaller GUI**
-**PyQt6 fullscreen GUI** - Modern graphical installer interface
-**Automatic disk detection** - Smart USB boot device detection and target disk selection
-**Full network configuration** - Ethernet and WiFi with SSID scanning and security options
-**Timezone selection** - Graphical continent/city picker
-**Real-time progress** - Live rsync output and progress tracking
-**Command line options** - `--no-fullscreen` for testing in windowed mode
-**PyInstaller integration** - Single executable binary for live system
## 📦 What's New in This Version
### **🔧 Recent Fixes & Improvements**
- **Fixed AutoInstaller GUI AttributeError** - Corrected `network_label` reference to `interface_label`
- **Fixed PyInstaller hidden imports** - Removed incorrect `QShortcut` and `QKeySequence` imports
- **Enhanced progress estimation** - Re-estimates copy progress every 10 seconds with real-time ETA
- **Improved build integration** - Updated build.sh to properly handle AutoInstaller GUI binary naming
### **🔧 Autologin Fixes**
- **Fixed missing autologin infrastructure** - Created required groups and PAM configurations
- **Complete LightDM setup** - Proper authentication for both live and installed systems
......@@ -165,12 +181,18 @@ pyinstaller usb_creator.spec
- [`config/includes.chroot/root/.config/openbox/autostart`](config/includes.chroot/root/.config/openbox/autostart) - Auto-start configuration
### **USB Creator Tools:**
- [`usb_creator_gui.py`](usb_creator_gui.py) - PyQt6 GUI application
- [`usb_creator_gui.py`](usb_creator_gui.py) - PyQt6 GUI application
- [`build_usb_creator.py`](build_usb_creator.py) - PyInstaller build script
- [`setup_usb_creator.py`](setup_usb_creator.py) - One-click setup
- [`requirements.txt`](requirements.txt) - Python dependencies
- [`USB_CREATOR_README.md`](USB_CREATOR_README.md) - Detailed USB creator documentation
### **AutoInstaller GUI:**
- [`autoinstaller_gui/`](autoinstaller_gui/) - Complete GUI installer directory
- [`autoinstaller_gui/autoinstallergui.py`](autoinstaller_gui/autoinstallergui.py) - Main PyQt6 GUI application
- [`autoinstaller_gui/build_autoinstaller_gui.py`](autoinstaller_gui/build_autoinstaller_gui.py) - PyInstaller build script
- [`autoinstaller_gui/README.md`](autoinstaller_gui/README.md) - GUI-specific documentation
### **Legacy Tools:**
- [`create_usb.sh`](create_usb.sh) / [`create_usb.bat`](create_usb.bat) - Command-line USB creation
- [`customize_iso.sh`](customize_iso.sh) - Post-build ISO customization
......
......@@ -3,6 +3,18 @@
The AutoInstaller GUI is a PyQt6-based fullscreen application that provides a graphical interface to the command-line `auto-installer.sh` script. It handles all interactive parts (timezone, network) in a user-friendly way while running the installation in the background.
## 🆕 Recent Updates
### **Bug Fixes**
- **Fixed AttributeError**: Corrected `self.network_label` reference to `self.interface_label` in `set_defaults()` method
- **Fixed PyInstaller Build**: Removed incorrect hidden imports (`QShortcut`, `QKeySequence`) that were causing build errors
- **Fixed Binary Naming**: Updated build.sh to properly detect and copy the `AutoInstallerGUI` binary
### **Performance Improvements**
- **Enhanced Progress Tracking**: Re-estimates copy progress every 10 seconds based on actual transfer rate
- **Real-time ETA Display**: Shows current speed, remaining data, and estimated completion time
- **Better Progress Accuracy**: Uses dynamic rate calculation instead of static time-based estimation
## 📋 Prerequisites
### For Development/Running the GUI
......@@ -30,7 +42,7 @@ Build first, then run the binary:
```bash
cd /working/mlivecd
python3 autoinstaller_gui/build_autoinstaller_gui.py
./dist/AutoInstallerGUI
./autoinstaller_gui/dist/AutoInstallerGUI
```
### GUI Interface
......@@ -82,7 +94,7 @@ python3 autoinstaller_gui/build_autoinstaller_gui.py
- `--upx=True`: Compresses the binary for smaller size
2. **Runs PyInstaller**: Executes `pyinstaller autoinstaller_gui.spec`
3. **Cleans up**: Removes the temporary .spec file
4. **Output**: Creates `dist/AutoInstallerGUI` (single Linux binary)
4. **Output**: Creates `autoinstaller_gui/dist/AutoInstallerGUI` (single Linux binary)
### Binary Features
- **Size**: ~50-100MB (compressed with UPX)
......@@ -123,7 +135,7 @@ The `InstallerWorker` class has placeholder methods (`detect_usb_device`, `detec
### Testing the GUI
1. **Development**: `python3 autoinstaller_gui/autoinstallergui.py` (test without sudo first)
2. **With sudo**: `sudo python3 autoinstaller_gui/autoinstallergui.py` (full functionality)
3. **Standalone**: Build binary and test `./dist/AutoInstallerGUI` (requires sudo for real installation)
3. **Standalone**: Build binary and test `./autoinstaller_gui/dist/AutoInstallerGUI` (requires sudo for real installation)
### Error Logging
- GUI shows real-time output from all subprocess calls
......
This diff is collapsed.
......@@ -23,7 +23,7 @@ a = Analysis(
pathex=['.'],
binaries=[],
datas=[],
hiddenimports=['PyQt6.QtCore', 'PyQt6.QtGui', 'PyQt6.QtWidgets', 'PyQt6.QtGui.QShortcut', 'PyQt6.QtGui.QKeySequence', 'subprocess', 'threading', 'select', 'fcntl'],
hiddenimports=['PyQt6.QtCore', 'PyQt6.QtGui', 'PyQt6.QtWidgets', 'subprocess', 'threading', 'select', 'fcntl'],
hookspath=[],
hooksconfig={{}},
runtime_hooks=[],
......
......@@ -133,11 +133,11 @@ if [ $BUILD_EXIT_CODE -eq 0 ]; then
if [ -d "autoinstaller_gui" ] && [ -f "autoinstaller_gui/build_autoinstaller_gui.py" ]; then
cd autoinstaller_gui
python3 build_autoinstaller_gui.py
if [ -f "dist/autoinstallergui" ]; then
if [ -f "dist/AutoInstallerGUI" ]; then
echo "AutoInstaller GUI binary built successfully"
# Copy binary to live system
mkdir -p ../config/includes.chroot/usr/local/bin
cp dist/autoinstallergui ../config/includes.chroot/usr/local/bin/autoinstallergui
cp dist/AutoInstallerGUI ../config/includes.chroot/usr/local/bin/autoinstallergui
chmod +x ../config/includes.chroot/usr/local/bin/autoinstallergui
echo "AutoInstaller GUI binary copied to live system"
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment