Installer Imprimante Canon Lbp 3010 -

# Step 1: Download driver if not download_driver(): sys.exit(1)

""" Canon LBP 3010 Printer Installer (Windows) Automates driver download, silent installation, and printer addition. """ import os import sys import subprocess import platform import urllib.request import zipfile import tempfile import shutil DRIVER_URL = "https://gdlp01.c-wss.com/gds/8/0100005918/01/LBP3010_LBP3018_LBP3050_Driver_V200_W32_en.exe" DRIVER_FILENAME = "LBP3010_Driver.exe" PRINTER_NAME = "Canon LBP3010" PORT_NAME = "USB001" # Most common USB port for this printer

def is_admin(): """Check if script runs with admin rights (required for printer installation).""" try: return os.getuid() == 0 # Linux/Mac (not used here but safe) except AttributeError: import ctypes return ctypes.windll.shell32.IsUserAnAdmin() != 0 installer imprimante canon lbp 3010

def run_as_admin(): """Restart script with admin privileges.""" if not is_admin(): print("Requesting administrator privileges...") cwd = os.getcwd() script = os.path.abspath(sys.argv[0]) ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, f'"{script}"', cwd, 1) sys.exit()

# Step 3: Install driver if not install_driver(): print("Driver installation failed. Try installing manually.") sys.exit(1) # Step 1: Download driver if not download_driver(): sys

# Admin check if not is_admin(): run_as_admin() sys.exit(0) # Restarting as admin

print(f"Downloading driver from {DRIVER_URL}...") try: urllib.request.urlretrieve(DRIVER_URL, DRIVER_FILENAME) print("Download complete.") return True except Exception as e: print(f"Download failed: {e}") print("Please download manually from Canon support and place it in the same folder as this script.") return False def extract_driver_if_needed(): """Some Canon .exe files are self-extracting ZIPs. Extract if needed.""" # For simplicity, if it's an exe, we'll run it silently later. # But we check if it's a known self-extractor by magic bytes. with open(DRIVER_FILENAME, "rb") as f: header = f.read(4) if header == b'PK\x03\x04': # ZIP file print("Detected ZIP archive. Extracting...") with zipfile.ZipFile(DRIVER_FILENAME, 'r') as zip_ref: extract_path = tempfile.mkdtemp() zip_ref.extractall(extract_path) # Look for an installer (.exe or .msi) for root, dirs, files in os.walk(extract_path): for file in files: if file.lower().endswith(('.exe', '.msi')): new_path = os.path.join(os.getcwd(), "extracted_driver") shutil.copytree(extract_path, new_path, dirs_exist_ok=True) print(f"Extracted to {new_path}") return new_path return None Extract if needed

# Step 2: Extract if needed (optional) extracted_path = extract_driver_if_needed() if extracted_path: print(f"Driver extracted to {extracted_path}")