How to uninstall Timus Connect clearly from the device

You can run these scripts to uninstall Timus Connect entirely from the device.

This both script must be run under sudo or admin privilege.

  • [MacOS] Uninstall Script

    When you download the script, before you run it, do not forget to make the file executable by running this command:

    chmod +x uninstall_timus.sh
    
    sudo ./uninstall_timus.sh
    
    #!/bin/bash
    # Uninstallation Script for Timus Connect
    # ---------------------------------------
    # Please review this script carefully before running it.
    # This script will completely uninstall the Timus Connect app and remove all related files.
    # It performs the following actions:
    # 1. Unloads any running daemons associated with Timus Connect.
    # 2. Kills any running processes related to Timus Connect.
    # 3. Removes the Timus Connect application.
    # 4. Deletes Timus Connect logs.
    # 5. Removes Timus Connect application support files.
    # 6. Removes daemon plist files associated with Timus Connect.
    # 7. Removes Accessibility and Screen Capture permissions for Timus Connect.
    # 8. Removes Timus Connect app from login items on macOS.
    
    log_file="/tmp/timus_uninstall.log"
    timestamp() {
        date +"%Y-%m-%d %H:%M:%S"
    }
    
    echo "$(timestamp): Starting Timus Connect uninstallation script..." > "$log_file"
    
    set +e  # Continue execution even if a command fails
    
    kill_process() {
        process_name=$1
        echo "$(timestamp): Killing process $process_name..." >> "$log_file"
        sudo pkill -f "$process_name" >> "$log_file" 2>&1
        sudo pgrep -f "$process_name" | xargs sudo kill -9 >> "$log_file" 2>&1
        if [ $? -eq 0 ]; then
            echo "$(timestamp): Successfully killed $process_name." >> "$log_file"
        else
            echo "$(timestamp): Failed to kill $process_name or no process found." >> "$log_file"
        fi
    }
    
    # Unload any running daemons associated with Timus Connect
    echo "$(timestamp): Unloading any running daemons associated with Timus Connect..." >> "$log_file"
    launchctl unload /Library/LaunchDaemons/timus* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully unloaded daemons." >> "$log_file"
    else
        echo "$(timestamp): Failed to unload daemons." >> "$log_file"
    fi
    
    # Kill any remaining processes related to Timus Connect after unloading daemons
    # Determine system architecture
    architecture=$(uname -m)
    
    # Kill appropriate processes based on system architecture
    if [ "$architecture" = "arm64" ]; then
        kill_process "timus-connect-service_arm64"
        kill_process "timus-helper-service_arm64"
        kill_process "timus-telemetry_arm64"
    else
        kill_process "timus-connect-service"
        kill_process "timus-helper-service"
        kill_process "timus-telemetry"
    fi
    
    kill_process "Timus Connect"
    
    # Ensure kill any running processes related to Timus Connect not exist.
    echo "$(timestamp): Killing any running processes related to Timus Connect..." >> "$log_file"
    pkill -f timus* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully killed Timus Connect processes." >> "$log_file"
    else
        echo "$(timestamp): Failed to kill Timus Connect processes or no processes found." >> "$log_file"
    fi
    
    # Remove the Timus Connect application
    echo "$(timestamp): Removing the Timus Connect application..." >> "$log_file"
    rm -rf /Applications/Timus\\ Connect.app >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect application." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect application." >> "$log_file"
    fi
    
    # Remove Timus Connect logs
    echo "$(timestamp): Removing Timus Connect logs..." >> "$log_file"
    rm -rf ~/Library/Logs/Timus\\ Connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect logs." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect logs." >> "$log_file"
    fi
    
    # Remove Timus Connect application support files
    echo "$(timestamp): Removing Timus Connect application support files..." >> "$log_file"
    rm -rf $HOME/Library/Application\\ Support/Timus\\ Connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect application support files." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect application support files." >> "$log_file"
    fi
    
    # Remove daemon plist files associated with Timus Connect
    echo "$(timestamp): Removing daemon plist files associated with Timus Connect..." >> "$log_file"
    rm /Library/LaunchDaemons/timus-* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed daemon plist files." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove daemon plist files." >> "$log_file"
    fi
    
    # Reset Accessibility permissions for Timus Connect
    echo "$(timestamp): Resetting Accessibility permissions for Timus Connect..." >> "$log_file"
    sudo tccutil reset Accessibility com.timus.connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully reset Accessibility permissions." >> "$log_file"
    else
        echo "$(timestamp): Failed to reset Accessibility permissions." >> "$log_file"
    fi
    
    # Reset Screen Capture permissions for Timus Connect
    echo "$(timestamp): Resetting Screen Capture permissions for Timus Connect..." >> "$log_file"
    sudo tccutil reset ScreenCapture com.timus.connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully reset Screen Capture permissions." >> "$log_file"
    else
        echo "$(timestamp): Failed to reset Screen Capture permissions." >> "$log_file"
    fi
    
    # Remove Timus Connect app from login items on macOS
    echo "$(timestamp): Removing Timus Connect app from login items on macOS..." >> "$log_file"
    osascript -e 'tell application "System Events" to delete login item "Timus Connect"' >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect from login items." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect from login items or it was not found." >> "$log_file"
    fi
    
    # Notify the user that the uninstallation is complete
    echo "$(timestamp): Timus Connect has been successfully uninstalled." >> "$log_file"
    echo "Timus Connect has been successfully uninstalled. Check $log_file for details."
    
    
  • [MacOS Sequoia 15.3] Uninstall Script

    #!/bin/bash
    # Uninstallation Script for Timus Connect
    # ---------------------------------------
    # Please review this script carefully before running it.
    # This script will completely uninstall the Timus Connect app and remove all related files.
    # It performs the following actions:
    # 1. Unloads any running daemons associated with Timus Connect.
    # 2. Kills any running processes related to Timus Connect.
    # 3. Removes the Timus Connect application.
    # 4. Deletes Timus Connect logs.
    # 5. Removes Timus Connect application support files.
    # 6. Removes daemon plist files associated with Timus Connect.
    # 7. Removes Accessibility and Screen Capture permissions for Timus Connect.
    # 8. Removes Timus Connect app from login items on macOS.
    
    log_file="/tmp/timus_uninstall.log"
    timestamp() {
        date +"%Y-%m-%d %H:%M:%S"
    }
    
    echo "$(timestamp): Starting Timus Connect uninstallation script..." > "$log_file"
    
    set +e  # Continue execution even if a command fails
    
    kill_process() {
        process_name=$1
        echo "$(timestamp): Killing process $process_name..." >> "$log_file"
        sudo pkill -f "$process_name" >> "$log_file" 2>&1
        sudo pgrep -f "$process_name" | xargs sudo kill -9 >> "$log_file" 2>&1
        if [ $? -eq 0 ]; then
            echo "$(timestamp): Successfully killed $process_name." >> "$log_file"
        else
            echo "$(timestamp): Failed to kill $process_name or no process found." >> "$log_file"
        fi
    }
    
    # Unload any running daemons associated with Timus Connect
    echo "$(timestamp): Unloading any running daemons associated with Timus Connect..." >> "$log_file"
    launchctl unload /Library/LaunchDaemons/timus* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully unloaded daemons." >> "$log_file"
    else
        echo "$(timestamp): Failed to unload daemons." >> "$log_file"
    fi
    
    # Kill any remaining processes related to Timus Connect after unloading daemons
    # Determine system architecture
    architecture=$(uname -m)
    
    # Kill appropriate processes based on system architecture
    if [ "$architecture" = "arm64" ]; then
        kill_process "timus-connect-service_arm64"
        kill_process "timus-helper-service_arm64"
        kill_process "timus-telemetry_arm64"
    else
        kill_process "timus-connect-service"
        kill_process "timus-helper-service"
        kill_process "timus-telemetry"
    fi
    
    kill_process "Timus Connect"
    
    # Ensure kill any running processes related to Timus Connect not exist.
    echo "$(timestamp): Killing any running processes related to Timus Connect..." >> "$log_file"
    pkill -f timus* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully killed Timus Connect processes." >> "$log_file"
    else
        echo "$(timestamp): Failed to kill Timus Connect processes or no processes found." >> "$log_file"
    fi
    
    # Remove the Timus Connect application
    echo "$(timestamp): Removing the Timus Connect application..." >> "$log_file"
    rm -rf /Applications/Timus\\ Connect.app >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect application." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect application." >> "$log_file"
    fi
    
    # Remove Timus Connect logs
    echo "$(timestamp): Removing Timus Connect logs..." >> "$log_file"
    rm -rf ~/Library/Logs/Timus\\ Connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect logs." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect logs." >> "$log_file"
    fi
    
    # Remove Timus Connect application support files
    echo "$(timestamp): Removing Timus Connect application support files..." >> "$log_file"
    rm -rf $HOME/Library/Application\\ Support/Timus\\ Connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect application support files." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect application support files." >> "$log_file"
    fi
    
    # Remove daemon plist files associated with Timus Connect
    echo "$(timestamp): Removing daemon plist files associated with Timus Connect..." >> "$log_file"
    rm /Library/LaunchDaemons/timus-* >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed daemon plist files." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove daemon plist files." >> "$log_file"
    fi
    
    # Reset Accessibility permissions for Timus Connect
    echo "$(timestamp): Resetting Accessibility permissions for Timus Connect..." >> "$log_file"
    sudo tccutil reset Accessibility com.timus.connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully reset Accessibility permissions." >> "$log_file"
    else
        echo "$(timestamp): Failed to reset Accessibility permissions." >> "$log_file"
    fi
    
    # Reset Screen Capture permissions for Timus Connect
    echo "$(timestamp): Resetting Screen Capture permissions for Timus Connect..." >> "$log_file"
    sudo tccutil reset ScreenCapture com.timus.connect >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully reset Screen Capture permissions." >> "$log_file"
    else
        echo "$(timestamp): Failed to reset Screen Capture permissions." >> "$log_file"
    fi
    
    # Remove Timus Connect app from login items on macOS
    echo "$(timestamp): Removing Timus Connect app from login items on macOS..." >> "$log_file"
    osascript -e 'tell application "System Events" to delete login item "Timus Connect"' >> "$log_file" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(timestamp): Successfully removed Timus Connect from login items." >> "$log_file"
    else
        echo "$(timestamp): Failed to remove Timus Connect from login items or it was not found." >> "$log_file"
    fi
    
    # Notify the user that the uninstallation is complete
    echo "$(timestamp): Timus Connect has been successfully uninstalled." >> "$log_file"
    echo "Timus Connect has been successfully uninstalled. Check $log_file for details."% 

     

  • [Windows] Uninstall Script

    # Uninstallation Script for Timus Connect
    # ---------------------------------------
    # This script performs the following actions:
    # 1. Stops and deletes services related to Timus Connect.
    # 2. Kills all processes named "timus" and other specified processes.
    # 3. Runs the uninstaller for Timus Connect silently.
    # 4. Deletes specific directories associated with Timus Connect.
    # 5. Removes Timus Connect from startup items.
    # 6. Removes specific registry keys related to Timus Connect.
    # 
    # NOTE: Please review this script thoroughly before running it. Ensure that the paths
    # and services mentioned are correct for your specific setup.
    
    # Define log function
    function Log-Message {
        param (
            [string]$message
        )
        $logFile = "$env:USERPROFILE\\timus_uninstall.txt"
        Add-Content -Path $logFile -Value ("$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $message")
    }
    
    # Function to stop and delete a service
    function Stop-And-Delete-Service {
        param (
            [string]$serviceName
        )
        try {
            $service = Get-Service -Name $serviceName -ErrorAction Stop
            if ($service.Status -ne 'Stopped') {
                Stop-Service -Name $serviceName -Force -ErrorAction Stop
                Log-Message "Stopped service $serviceName"
            }
            sc.exe delete $serviceName
            Log-Message "Deleted service $serviceName"
        } catch {
            Log-Message "Failed to stop or delete service ${serviceName}: $($_)"
        }
    }
    
    # Function to kill processes by name
    function Kill-Processes {
        param (
            [string[]]$processNames
        )
        foreach ($processName in $processNames) {
            try {
                Get-Process -Name $processName -ErrorAction Stop | Stop-Process -Force
                Log-Message "Killed all processes named $processName"
            } catch {
                Log-Message "Failed to kill processes named ${processName}: $($_)"
            }
        }
    }
    
    # Function to kill processes by executable name using taskkill
    function TaskKill-Processes {
        param (
            [string[]]$processExecutables
        )
        foreach ($processExecutable in $processExecutables) {
            try {
                Start-Process -FilePath "taskkill.exe" -ArgumentList "/F /IM $processExecutable" -NoNewWindow -Wait
                Log-Message "Taskkill executed for $processExecutable"
            } catch {
                Log-Message "Failed to execute taskkill for ${processExecutable}: $($_)"
            }
        }
    }
    
    # Function to delete directories
    function Delete-Directory {
        param (
            [string]$directoryPath
        )
        try {
            Remove-Item -Path $directoryPath -Recurse -Force -ErrorAction Stop
            Log-Message "Deleted directory $directoryPath"
        } catch {
            Log-Message "Failed to delete directory ${directoryPath}: $($_)"
        }
    }
    
    # Function to remove startup items
    function Remove-StartupItem {
        param (
            [string]$itemName
        )
        try {
            # Remove from Startup folder
            $startupFolderPath = [System.Environment]::GetFolderPath('Startup')
            $startupItemPath = Join-Path -Path $startupFolderPath -ChildPath "$itemName.lnk"
            if (Test-Path $startupItemPath) {
                Remove-Item -Path $startupItemPath -Force
                Log-Message "Removed $itemName from Startup folder"
            }
        } catch {
            Log-Message "Failed to remove $itemName from Startup folder: $($_)"
        }
        
        try {
            # Remove from Registry (Current User)
            $regPath = "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
            if (Get-ItemProperty -Path $regPath -Name $itemName -ErrorAction Stop) {
                Remove-ItemProperty -Path $regPath -Name $itemName -ErrorAction Stop -Force
                Log-Message "Removed $itemName from HKCU registry"
            }
        } catch {
            Log-Message "Failed to remove $itemName from HKCU registry: $($_)"
        }
    
        try {
            # Remove from Registry (Local Machine)
            $regPathLM = "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
            if (Get-ItemProperty -Path $regPathLM -Name $itemName -ErrorAction Stop) {
                Remove-ItemProperty -Path $regPathLM -Name $itemName -ErrorAction Stop -Force
                Log-Message "Removed $itemName from HKLM registry"
            }
        } catch {
            Log-Message "Failed to remove $itemName from HKLM registry: $($_)"
        }
    }
    
    # Function to remove registry keys
    function Remove-RegistryKey {
        param (
            [string]$registryPath
        )
        try {
            if (Test-Path $registryPath) {
                Remove-Item -Path $registryPath -Recurse -Force -ErrorAction Stop
                Log-Message "Removed registry key $registryPath"
            }
        } catch {
            Log-Message "Failed to remove registry key ${registryPath}: $($_)"
        }
    }
    
    # Define paths using environment variables
    $programFilesPath = [System.Environment]::GetFolderPath('ProgramFiles')
    $programDataPath = [System.Environment]::GetFolderPath('CommonApplicationData')
    $appDataLocalPath = [System.Environment]::GetFolderPath('LocalApplicationData')
    $appDataRoamingPath = [System.Environment]::GetFolderPath('ApplicationData')
    
    # Construct the path to the uninstaller
    $uninstallPath = Join-Path -Path $programFilesPath -ChildPath "Timus Connect\\Uninstall Timus Connect"
    
    # Stop and delete Timus Connect services
    Stop-And-Delete-Service -serviceName "timus-connect-service"
    Stop-And-Delete-Service -serviceName "timus-helper-service"
    
    # Kill all processes named "timus"
    Kill-Processes -processNames @("timus")
    
    # Additional taskkill commands for specific executables
    TaskKill-Processes -processExecutables @("timus-connect-service.exe", "timus-helper-service.exe", "timus-telemetry.exe", "timus-wireguard-tunnel-service.exe", "openvpn.exe")
    
    # Run uninstaller silently
    try {
        $process = Start-Process -FilePath $uninstallPath -ArgumentList "/S" -NoNewWindow -Wait -PassThru
        $process.WaitForExit()
        Log-Message "Ran uninstaller at $uninstallPath"
    } catch {
        Log-Message "Failed to run uninstaller at ${uninstallPath}: $($_)"
    }
    
    # Delete directories associated with Timus Connect
    Delete-Directory -directoryPath "$appDataLocalPath\\timus-updater"
    Delete-Directory -directoryPath "$appDataRoamingPath\\Timus Connect"
    Delete-Directory -directoryPath "$programFilesPath\\Timus Connect"
    Delete-Directory -directoryPath "$programDataPath\\Timus Connect"
    
    # Remove Timus Connect from startup items
    Remove-StartupItem -itemName "Timus Connect"
    
    # Remove specific registry keys related to Timus Connect
    Remove-RegistryKey -registryPath "HKCU:\\SOFTWARE\\Classes\\timus-connect"
    Remove-RegistryKey -registryPath "HKLM:\\SOFTWARE\\Timus"
    Remove-RegistryKey -registryPath "HKCR:\\timus-connect"
    
    # Log completion of the script
    Log-Message "Uninstallation script completed"
    
    # Exit the script
    exit
    
    

Updated

Was this article helpful?

1 out of 1 found this helpful

Have more questions? Submit a request

Comments

0 comments

Article is closed for comments.