commit bafae4b212dc4369dcb0ee27ca93bce1b036b106 Author: yassin1661-creator Date: Tue Sep 1 12:30:03 2026 +0330 init commit diff --git a/downloader_copier.py b/downloader_copier.py new file mode 100644 index 0000000..f01be76 --- /dev/null +++ b/downloader_copier.py @@ -0,0 +1,63 @@ +import os +import shutil + +def get_non_c_drive() -> str: + """ + پیدا کردن اولین درایو دسترس غیر از C در سیستم مقصد + """ + possible_drives = [f"{letter}:\\" for letter in "DEFGH"] + for drive in possible_drives: + if os.path.exists(drive): + return drive + return r"C:\\" + +def setup_directories_and_copy(source_dir: str = r"C:\SoftwareNP", + target_drive: str = None) -> str: + """ + ایجاد پوشه‌ها در درایوی غیر از C و کپی فایل‌ها از مبدا به NovinSoft + """ + if not target_drive: + base_drive = get_non_c_drive() + else: + base_drive = target_drive + + # تغییر نام پوشه اصلی به NovinPardazOne + base_target_dir = os.path.join(base_drive, "NovinPardazOne") + acc_dir = os.path.join(base_target_dir, "NovinAcc") + soft_dir = os.path.join(base_target_dir, "NovinSoft") + + print(f"[+] درایو مقصد انتخاب شده: {base_drive}") + print(f"[+] در حال ایجاد ساختار پوشه‌ها در مسیر {base_target_dir} ...") + + # ساخت پوشه‌های NovinAcc و NovinSoft + os.makedirs(acc_dir, exist_ok=True) + os.makedirs(soft_dir, exist_ok=True) + print(" [✓] پوشه‌های NovinAcc و NovinSoft با موفقیت ایجاد شدند.") + + # کپی محتویات پوشه مبدا به NovinSoft + if os.path.exists(source_dir): + print(f"[+] در حال کپی فایل‌ها از {source_dir} به {soft_dir} ...") + + for item in os.listdir(source_dir): + s = os.path.join(source_dir, item) + d = os.path.join(soft_dir, item) + + if os.path.isdir(s): + shutil.copytree(s, d, dirs_exist_ok=True) + else: + shutil.copy2(s, d) + + print(f" [✓] تمام فایل‌ها با موفقیت در پوشه {soft_dir} کپی شدند.") + return soft_dir + else: + raise FileNotFoundError(f"[-] پوشه مبدا در مسیر {source_dir} یافت نشد!") + +if __name__ == "__main__": + os.system("chcp 65001 > nul") + print("--- تست ماژول ایجاد پوشه‌ها و کپی نرم‌افزار ---") + + try: + target_path = setup_directories_and_copy(target_drive=r"D:\\") + print(f"\nعملیات با موفقیت به پایان رسید. مسیر نرم‌افزار: {target_path}") + except Exception as e: + print(f"\n[-] خطا: {e}") \ No newline at end of file diff --git a/extract_acc.py b/extract_acc.py new file mode 100644 index 0000000..8ad8b60 --- /dev/null +++ b/extract_acc.py @@ -0,0 +1,50 @@ +import os +import shutil +import zipfile + +def extract_acc_archive(base_drive: str = r"D:\\") -> str: + # تغییر نام پوشه اصلی به NovinPardazOne + base_dir = os.path.join(base_drive, "NovinPardazOne") + soft_dir = os.path.join(base_dir, "NovinSoft") + acc_dir = os.path.join(base_dir, "NovinAcc") + + target_zip_name = "NovinAcc.zip" + source_zip_path = os.path.join(soft_dir, target_zip_name) + target_zip_path = os.path.join(acc_dir, target_zip_name) + + # ۱. بررسی وجود پوشه NovinSoft + if not os.path.exists(soft_dir): + raise FileNotFoundError(f"[-] پوشه یافت نشد: {soft_dir}") + + # ۲. بررسی وجود فایل زیپ + if not os.path.exists(source_zip_path): + raise FileNotFoundError(f"[-] فایل {target_zip_name} در پوشه {soft_dir} پیدا نشد!") + + # ۳. ایجاد پوشه NovinAcc در صورت عدم وجود + os.makedirs(acc_dir, exist_ok=True) + + # ۴. انتقال فایل زیپ به NovinAcc + print(f"[+] در حال انتقال {target_zip_name} به پوشه NovinAcc...") + shutil.move(source_zip_path, target_zip_path) + print(" [✓] فایل زیپ منتقل شد.") + + # ۵. استخراج فایل از حالت فشرده + print(f"[+] در حال آنزیپ کردن در {acc_dir}...") + with zipfile.ZipFile(target_zip_path, 'r') as zip_ref: + zip_ref.extractall(acc_dir) + print(" [✓] تمام فایل‌ها با موفقیت آنزیپ شدند.") + + # ۶. حذف فایل زیپ موقت + if os.path.exists(target_zip_path): + os.remove(target_zip_path) + print(" [✓] فایل زیپ موقت پاک شد.") + + return acc_dir + +if __name__ == "__main__": + os.system("chcp 65001 > nul") + print("--- در حال اجرای ماژول انتقال و آنزیپ ---") + try: + extract_acc_archive(base_drive=r"D:\\") + except Exception as e: + print(e) \ No newline at end of file diff --git a/install_novindesk.py b/install_novindesk.py new file mode 100644 index 0000000..f07f76d --- /dev/null +++ b/install_novindesk.py @@ -0,0 +1,71 @@ +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}") \ No newline at end of file diff --git a/run.py b/run.py new file mode 100644 index 0000000..6b96c2b --- /dev/null +++ b/run.py @@ -0,0 +1,16 @@ +import subprocess + +# لیست فایل‌ها به ترتیب اجرا +scripts = ["downloader_copier.py", "extract_acc.py", "install_novindesk.py"] + +for script in scripts: + print(f"در حال اجرای {script}...") + # اجرای فایل و انتظار برای اتمام آن + result = subprocess.run(["python", script], capture_output=True, text=True) + + if result.returncode == 0: + print(f"{script} با موفقیت اجرا شد.\n") + else: + print(f"خطا در اجرای {script}:") + print(result.stderr) + break # اگر خطایی رخ داد، ادامه روند متوقف شود diff --git a/sciter.dll b/sciter.dll new file mode 100644 index 0000000..3b90280 Binary files /dev/null and b/sciter.dll differ