import os import zipfile import subprocess import time def install_novindesk(base_drive: str = r"D:\\") -> str: """ استخراج و نصب خودکار NovinDesk با پیمایش دقیق فرم نصب """ base_dir = os.path.join(base_drive, "NovinPardazOne") soft_dir = os.path.join(base_dir, "NovinSoft") zip_filename = "NovinDesk.zip" source_zip_path = os.path.join(soft_dir, zip_filename) extract_target_dir = os.path.join(soft_dir, "NovinDesk") if not os.path.exists(source_zip_path): raise FileNotFoundError(f"[-] فایل {zip_filename} در پوشه {soft_dir} پیدا نشد!") os.makedirs(extract_target_dir, exist_ok=True) print(f"[+] در حال آنزیپ کردن {zip_filename} ...") with zipfile.ZipFile(source_zip_path, 'r') as zip_ref: zip_ref.extractall(extract_target_dir) print(" [✓] آنزیپ با موفقیت انجام شد.") exe_file = None for root, dirs, files in os.walk(extract_target_dir): for file in files: if file.lower().endswith(".exe"): exe_file = os.path.join(root, file) break if not exe_file: raise FileNotFoundError("[-] هیچ فایل اجرایی (.exe) یافت نشد!") print(f"[+] در حال اجرای فرم نصب {os.path.basename(exe_file)} ...") # اجرای برنامه جهت نصب subprocess.Popen([exe_file, "--install"]) # ۵ ثانیه صبر برای بارگذاری کامل پنجره time.sleep(5) try: import pyautogui # ۱. بسته شدن هرگونه پنجره جانبی فرعی pyautogui.press('escape') time.sleep(0.5) # ۲. پیمایش دقیق با ۴ بار Tab برای رسیدن مستقیم به دکمه «قبول و شروع نصب» for _ in range(4): pyautogui.press('tab') time.sleep(0.2) # ۳. فشردن کلید Enter روی دکمه نصب pyautogui.press('enter') print(" [✓] تایید و نصب خودکار شروع شد.") except Exception as err: print(f" [-] خطای اتوماسیون: {err}") return exe_file if __name__ == "__main__": os.system("chcp 65001 > nul") print("--- اجرای ماژول نصب NovinDesk ---") try: install_novindesk(base_drive=r"D:\\") except Exception as e: print(f"[-] خطا: {e}")