# -*- coding: utf-8 -*-
from setuphelpers import *

"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()
 {
   "key":"{C71C4442-CA69-443C-AFC1-53E0D4AD7D1A}",
   "name":"Charles 4.6.6",
   "version":"4.6.6.0",
   "install_date":"2024-05-16 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{C71C4442-CA69-443C-AFC1-53E0D4AD7D1A}",
   "publisher":"XK72 Ltd",
   "system_component":0,
   "win64":true
  }

"""

def install():
    # Declaring local variables
    bin_name = glob.glob("charles-proxy*.msi")[0]
    version = control.get_software_version()
    
    # Uninstalling older version of the software that can remains
    for to_uninstall in installed_softwares(name="^Charles "):
      if Version(to_uninstall["version"]) < Version(control.get_software_version()):
        print(f"Removing: {to_uninstall['name']} ({to_uninstall['version']})")
        killalltasks(ensure_list(control.impacted_process))
        run(uninstall_cmd(to_uninstall["key"]))
        wait_uninstallkey_absent(to_uninstall["key"])

    install_msi_if_needed(
        bin_name,
        name=f"Charles {version}",
        min_version=version
    )



