71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
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}") |