# -*- coding: utf-8 -*-
from setuphelpers import *
import time
import platform
import glob
# Anaconda3 2020.07 (Python 3.8.3 32-bit) Anaconda3 2020.07 (Python 3.8.3 32-bit) 2020.07 "C:\ProgramData\Anaconda3\Uninstall-Anaconda3.exe"
# Installation procedure: https://docs.anaconda.com/anaconda/install/silent-mode/
uninstallkey = []
# Defining variables
app_dir = makepath(programfiles, "Anaconda3")
conda_path = makepath(app_dir, "Scripts", "conda.exe")
conda_python = makepath(app_dir, "python.exe")
# silent_args = '/S /InstallationType=AllUsers /AddToPath=1 /RegisterPython=0'
silent_args = "/S /InstallationType=AllUsers /AddToPath=1 /RegisterPython=0 /D=%s" % app_dir
app_uninstallkey_string = "Anaconda3 %s (Python %s %s-bit)"
def install():
# Initializing variables
bin_name = glob.glob("*.exe")[0]
package_version = bin_name.split("-")[1]
if control.architecture == "x64":
arch = "64"
else:
arch = "32"
# Uninstalling versions not located to the defined directory
for uninstall in installed_softwares(name="Anaconda3"):
if not uninstall["uninstall_string"].startswith('"%s' % app_dir):
print("Uninstalling: %s" % uninstall["name"])
run(uninstall_cmd(uninstall["key"]))
time.sleep(300)
# Uninstalling old versions as the upgrade doesn't work with the embedded python
for uninstall in installed_softwares(name="Anaconda3"):
if Version(uninstall["version"]) < Version(package_version):
print("Uninstalling: %s" % uninstall["name"])
run(uninstall_cmd(uninstall["key"]))
wait_uninstallkey_absent(uninstall["key"])
# Installing the package
def conda_python_version():
return get_version_from_binary(conda_python)
# Checking manually if the application is installed
if need_install(key=app_uninstallkey_string % (package_version, conda_python_version(), arch), min_version=package_version):
print("Installing: %s" % bin_name)
run('"%s" %s' % (makepath(basedir, bin_name), silent_args), timeout=1800)
# Adding manually the uninstallkey
uninstallkey.append(app_uninstallkey_string % (package_version, conda_python_version(), arch))
else:
print("%s is already installed" % app_uninstallkey_string % (package_version, conda_python_version(), arch))
wait_uninstallkey_present(app_uninstallkey_string % (package_version, conda_python_version(), arch))
# Prevent interaction with waptpython (please make sure that the following code require the defined path)
if "PYTHONHOME" in os.environ.keys():
del os.environ["PYTHONHOME"]
if "PYTHONPATH" in os.environ.keys():
del os.environ["PYTHONPATH"]
os.environ["PYTHONPATH"] = app_dir
os.environ["PYTHONHOME"] = app_dir
# Preinstalling Anaconda dependencies (procedure: https://docs.conda.io/projects/conda/en/latest/commands/install.html)
print("Preinstalling Anaconda dependencies")
run_notfatal('"%s" install qt --quiet --offline --use-local --yes --prefix "%s"' % (conda_path, app_dir))
# Debugging information for Anaconda
print("If you're experencing issues with Anaconda you may need to execute in cmd the following command:")
print('"%s"' % makepath(app_dir, "Scripts", "activate.bat"))
# Rolling back WAPT Python Pathes (will ensure that WAPT install complete correctly)
if "PYTHONHOME" in os.environ.keys():
del os.environ["PYTHONHOME"]
if "PYTHONPATH" in os.environ.keys():
del os.environ["PYTHONPATH"]
os.environ["PYTHONHOME"] = makepath(WAPT.wapt_base_dir)
os.environ["PYTHONPATH"] = makepath(WAPT.wapt_base_dir)
def session_setup():
print("Configuring: base options")
# Initializing variables
# C:\Users\username\.anaconda\navigator\anaconda-navigator.ini
# C:\Users\jpadmin\AppData\Roaming\.anaconda\navigator\.anaconda\navigator\anaconda-navigator.ini
# user_conf_dir = makepath(systemdrive,'Users', get_current_user(), '.anaconda', 'navigator')
user_conf_dir = makepath(
user_appdata, ".anaconda", "navigator", ".anaconda", "navigator"
) # Path look glitchy but he's correct (at least in version 2020.11)
user_conf_file = makepath(user_conf_dir, "anaconda-navigator.ini")
# Configuring options
if not isdir(user_conf_dir):
mkdirs(user_conf_dir)
inifile_writestring(user_conf_file, "main", "first_time_offline", "False")
inifile_writestring(user_conf_file, "main", "offline_mode", "True")
inifile_writestring(user_conf_file, "main", "hide_offline_dialog", "True")
inifile_writestring(user_conf_file, "main", "first_run", "False")
inifile_writestring(user_conf_file, "main", "hide_update_dialog", "True")
inifile_writestring(user_conf_file, "main", "provide_analytics", "False")
inifile_writestring(user_conf_file, "main", "show_startup", "False")
inifile_writestring(user_conf_file, "main", "hide_quit_dialog", "True")
inifile_writestring(user_conf_file, "main", "hide_update_dialog", "True")
def update_package():
# Initializing variables
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
url = "https://www.anaconda.com/products/individual"
if control.architecture == "x64":
arch = "64"
else:
arch = "32"
# Getting latest version from official website
print("URL used is: %s" % url)
url_dl = bs_find(url, "a", "data-name", "%s-Bit Graphical Installer" % arch, proxies=proxies)["href"]
if arch == "32":
url_dl = url_dl.replace("-x86_64.exe", "-x86.exe")
latest_bin = url_dl.split("/")[-1]
version = latest_bin.split("-")[1]
print("Latest %s version is: %s" % (app_name, version))
print("Download url is: %s" % url_dl)
# Downloading latest binaries
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(url_dl, latest_bin, proxies=proxies)
# Changing version of the package
control.version = "%s-%s" % (version, control.version.split("-", 1)[-1])
control.save_control_to_wapt()
print("Changing version to: %s in WAPT\\control" % control.version)
# Deleting outdated binaries
remove_outdated_binaries(version)