# -*- coding: utf-8 -*-
##################################################
# This file is part of WAPT Enterprise
# All right reserved, (c) Tranquil IT Systems 2023
# For more information please refer to
# https://wapt.tranquil.it/store/licences.html
##################################################
from setuphelpers import *
import tempfile
"""
{
"key": "{0A9784CE-E39B-4A80-B997-109AE2921E2A}",
"name": "Adams Drill 2019.2",
"version": "29.2.0",
"install_date": "2-14-2024",
"install_location": "C:\\Program Files\\MSC.Software\\Adams\\2019_2\\adrill",
"uninstall_string": '"C:\\Program Files (x86)\\InstallShield Installation Information\\{0A9784CE-E39B-4A80-B997-109AE2921E2A}\\setup.exe" -runfromtemp -l0x0409 -removeonly',
"publisher": "MSC.Software Corporation",
"system_component": 0,
"win64": false,
},
{
"key": "{2B18F563-E73B-4766-8F4F-A43410654841}",
"name": "Adams 2019.2",
"version": "29.2.0",
"install_date": "2-14-2024",
"install_location": "C:\\Program Files\\MSC.Software\\Adams\\2019_2",
"uninstall_string": '"C:\\Program Files (x86)\\InstallShield Installation Information\\{2B18F563-E73B-4766-8F4F-A43410654841}\\setup.exe" -runfromtemp -l0x0409 -removeonly',
"publisher": "MSC.Software Corporation",
"system_component": 0,
"win64": false,
}
"""
bin_name = "adams_2019.2_windows64.exe"
bin_name_drill = "adams_drill_2019.2_windows64.exe"
app_uninstallkey = "{2B18F563-E73B-4766-8F4F-A43410654841}"
app_drill_uninstallkey = "{0A9784CE-E39B-4A80-B997-109AE2921E2A}"
def install():
# declaring local variables
package_version = control.get_software_version()
bin_path = makepath(basedir, bin_name)
bin_drill_path = makepath(basedir, bin_name_drill)
silent_file_path = makepath(basedir, "setup_adams.iss")
silent_file_drill_path = makepath(basedir, "setup_adams_drill.iss")
log_path = rf"C:\Windows\Temp\setup_{bin_name}.log"
log_drill_path = rf"C:\Windows\Temp\setup_{bin_name_drill}.log"
# Getting Setup.iss
# run('"%s" %s' % (bin_path , '/r /f1"%s"' % (silent_file_path)))
# run('"%s" %s' % (bin_drill_path , '/r /f1"%s"' % (silent_file_drill_path)))
# installing the package
# print('"%s" %s' % (bin_path, '/s /f1"%s" /f2"%s"' % (silent_file_path, log_path)))
install_exe_if_needed(
bin_path,
silentflags='/s /f1"%s" /f2"%s"' % (silent_file_path, log_path),
key=app_uninstallkey,
min_version=package_version,
timeout=1800,
)
install_exe_if_needed(
bin_drill_path,
silentflags='/s /f1"%s" /f2"%s"' % (silent_file_drill_path, log_drill_path),
key=app_drill_uninstallkey,
min_version=package_version,
timeout=600,
)
# Avoiding the usage by WAPT of the app built-in Uninstallstring
uninstallkey.remove(app_uninstallkey)
uninstallkey.remove(app_drill_uninstallkey)
def uninstall():
# Declaring local variables
uninstall_response_content = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{2B18F563-E73B-4766-8F4F-A43410654841}-DlgOrder]
Dlg0={2B18F563-E73B-4766-8F4F-A43410654841}-SdWelcomeMaintNoModify-0
Count=3
Dlg1={2B18F563-E73B-4766-8F4F-A43410654841}-MessageBox-0
Dlg2={2B18F563-E73B-4766-8F4F-A43410654841}-SdFinishReboot-0
[{2B18F563-E73B-4766-8F4F-A43410654841}-SdWelcomeMaintNoModify-0]
Result=303
[{2B18F563-E73B-4766-8F4F-A43410654841}-MessageBox-0]
Result=6
[Application]
Name=Adams
Version=29.2.0
Company=MSC.Software Corporation
Lang=0409
[{2B18F563-E73B-4766-8F4F-A43410654841}-SdFinishReboot-0]
Result=1
BootOption=0
"""
# Uninstalling the software
for uninstall in installed_softwares(uninstallkey=app_uninstallkey):
print("Removing: %s (%s)" % (uninstall["name"], uninstall["version"]))
killalltasks(control.impacted_process.split(","))
uninstaller_path = uninstall_cmd(uninstall["key"])[0]
uninstall_response_path = makepath(tempfile.gettempdir(), "uninstall_adams_temp.iss")
# Getting Uninstall.iss
# run('"%s" %s' % (uninstaller_path , '/r /f1"%s"' % makepath(basedir, 'uninstall_adams_temp.iss')))
with open(uninstall_response_path, "w") as file:
file.write(uninstall_response_content)
run('"%s" %s' % (uninstaller_path, '/s /f1"%s"' % uninstall_response_path))
wait_uninstallkey_absent(uninstall["key"])
# for uninstall in installed_softwares(uninstallkey=app_drill_uninstallkey):
# print("Removing: %s (%s)" % (uninstall['name'], uninstall['version']))
# killalltasks(control.impacted_process.split(','))
# uninstaller_path = uninstall_cmd(uninstall['key'])[0]
# uninstall_response_path = makepath(tempfile.gettempdir(), 'uninstall_adams_drill_temp.iss')
# # Getting Uninstall.iss
# #run('"%s" %s' % (uninstaller_path , '/r /f1"%s"' % makepath(basedir, 'uninstall_adams_drill_temp.iss')))
# with open(uninstall_response_path, 'w') as file:
# file.write(uninstall_response_content)
# run('"%s" %s' % (uninstaller_path, '/s /f1"%s"' % uninstall_response_path))
# wait_uninstallkey_absent(uninstall['key'])
editor_dir = makepath(programfiles, "MSC.Software")
app_dir = makepath(editor_dir, "Adams", "2019_2")
if isdir(app_dir):
remove_tree(app_dir)
if remove_empty_directories(editor_dir):
remove_tree(editor_dir)
def remove_empty_directories(root_directory):
if os.path.exists(root_directory):
for dirpath, dirnames, filenames in os.walk(root_directory, topdown=False):
if not any(os.scandir(dirpath)):
os.rmdir(dirpath)
print(f"Removed empty directory: {dirpath}")