72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
import os
|
|
import zipfile
|
|
import subprocess
|
|
import time
|
|
|
|
def install_novindesk(base_drive: str = r"D:\\") -> str:
|
|
"""
|
|
Extract and automatically install NovinDesk by navigating the installer UI.
|
|
"""
|
|
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"[-] File {zip_filename} was not found in {soft_dir}!")
|
|
|
|
os.makedirs(extract_target_dir, exist_ok=True)
|
|
|
|
print(f"[+] Extracting {zip_filename} ...")
|
|
with zipfile.ZipFile(source_zip_path, 'r') as zip_ref:
|
|
zip_ref.extractall(extract_target_dir)
|
|
print(" [+] Extraction completed successfully.")
|
|
|
|
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("[-] No executable file (.exe) found!")
|
|
|
|
print(f"[+] Launching installer {os.path.basename(exe_file)} ...")
|
|
|
|
# Launch application for installation
|
|
subprocess.Popen([exe_file, "--install"])
|
|
|
|
# Wait 5 seconds for the window to fully load
|
|
time.sleep(5)
|
|
|
|
try:
|
|
import pyautogui
|
|
|
|
# 1. Close any secondary/side dialogs
|
|
pyautogui.press('escape')
|
|
time.sleep(0.5)
|
|
|
|
# 2. Press Tab 4 times to navigate directly to the 'Accept & Install' button
|
|
for _ in range(4):
|
|
pyautogui.press('tab')
|
|
time.sleep(0.2)
|
|
|
|
# 3. Press Enter on the install button
|
|
pyautogui.press('enter')
|
|
print(" [+] Confirmation sent and automated installation started.")
|
|
except Exception as err:
|
|
print(f" [-] Automation error: {err}")
|
|
|
|
return exe_file
|
|
|
|
if __name__ == "__main__":
|
|
os.system("chcp 65001 > nul")
|
|
print("[+] Running NovinDesk installation module ...")
|
|
try:
|
|
install_novindesk(base_drive=r"D:\\")
|
|
except Exception as e:
|
|
print(f"[-] Error: {e}")
|