From e16809f83b8d6b9369a4eb23b9868e083cdd9fff Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:13:15 -0700 Subject: [PATCH 01/27] Update version - Version bump (24.09) --- Fire-Tools/version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fire-Tools/version b/Fire-Tools/version index 3dce2e9..0d25359 100644 --- a/Fire-Tools/version +++ b/Fire-Tools/version @@ -1 +1 @@ -24.08 +24.09 From ce82f29cc3d832fc8a3012d9a85569fd31858a15 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:19:09 -0700 Subject: [PATCH 02/27] Update appinstaller.ps1 - Added packagelist file check before comparing setting appwidget permission to custom launcher --- Fire-Tools/Scripts/PowerShell/appinstaller.ps1 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Fire-Tools/Scripts/PowerShell/appinstaller.ps1 b/Fire-Tools/Scripts/PowerShell/appinstaller.ps1 index 2dfda66..a2f99c0 100644 --- a/Fire-Tools/Scripts/PowerShell/appinstaller.ps1 +++ b/Fire-Tools/Scripts/PowerShell/appinstaller.ps1 @@ -17,8 +17,10 @@ if ("$?" -eq "True"){Write-Host "Success`n"} else {Write-Host "Fail`n"} # Grant Launcher Appwidget Permission & Attempt to Disable Fire Launcher. If Failed, Install LauncherHijack if ("$option" -eq "Launcher"){ - (Compare-Object (Get-Content .\packagelist) (adb shell pm list packages -3)).InputObject | Select -First 1 | % { - adb shell appwidget grantbind --package "$_".split(":")[1] + if (Get-Content .\packagelist){ + (Compare-Object (Get-Content .\packagelist) (adb shell pm list packages -3)).InputObject | Select -First 1 | % { + adb shell appwidget grantbind --package "$_".split(":")[1] + } } adb shell pm disable-user -k com.amazon.firelauncher *> $null if ("$?" -eq "False") { From 31d01f7632c3f896579949440794eee64210e7e3 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:26:24 -0700 Subject: [PATCH 03/27] Update appinstaller.sh - Set $app and $option variables to improve readability and match the Windows script - Added check of packagelist before compare and granting appwidget permission --- Fire-Tools/Scripts/Posix/appinstaller.sh | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Fire-Tools/Scripts/Posix/appinstaller.sh b/Fire-Tools/Scripts/Posix/appinstaller.sh index a4c38ba..37db77e 100644 --- a/Fire-Tools/Scripts/Posix/appinstaller.sh +++ b/Fire-Tools/Scripts/Posix/appinstaller.sh @@ -1,25 +1,29 @@ #!/usr/bin/env sh -# Export Package List to Compare After Installation +# Set Variables & Export Package List +app="$1" +$option="$2" adb shell pm list packages -3 > packagelist # Change Application Installation Method Based on Filetype -printf "%s\n" "Installing: $1" -case "$1" in +printf "%s\n" "Installing: $app" +case "$app" in *.apk) - adb install -g "$1" >/dev/null 2>&1;; + adb install -g "$app" >/dev/null 2>&1;; *.apkm) - unzip "$1" -d ./Split >/dev/null + unzip "$app" -d ./Split >/dev/null adb install-multiple -r -g ./Split/*.apk >/dev/null 2>&1 rm -rf ./Split;; esac [ "$?" = 0 ] && printf "%s\n\n" "Success" || printf "%s\n\n" "Fail" # Grant Launcher Appwidget Permission & Attempt to Disable Fire Launcher. If Failed, Install LauncherHijack -if [ "$2" = "Launcher" ]; then +if [ "$option" = "Launcher" ]; then adb shell pm list packages -3 > packagelist.new - launcher=$(diff packagelist* | grep -E -o "[a-z0-9]*(\.[a-z0-9]+)+[a-z0-9]") - [ -n "$launcher" ] && adb shell appwidget grantbind --package "$launcher" + if [ -s packagelist ]; + launcher=$(diff packagelist* | grep -E -o "[a-z0-9]*(\.[a-z0-9]+)+[a-z0-9]") + [ -n "$launcher" ] && adb shell appwidget grantbind --package "$launcher" + fi adb shell pm disable-user -k com.amazon.firelauncher >/dev/null 2>&1 || - grep -q "com.baronkiko.launcherhijack" ./packagelist || ./Scripts/Posix/appinstaller.sh LauncherHijackV403.apk + ./Scripts/Posix/appinstaller.sh LauncherHijackV403.apk fi From 23231ba11c12383d1a9e16803650ba8bbd5d2575 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:52:03 -0700 Subject: [PATCH 04/27] Update debloat.ps1 - Replaced $args[0] & $args[1] with $option & $app for better readability and consistency --- Fire-Tools/Scripts/PowerShell/debloat.ps1 | 32 ++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/Fire-Tools/Scripts/PowerShell/debloat.ps1 b/Fire-Tools/Scripts/PowerShell/debloat.ps1 index e4f3005..4662211 100644 --- a/Fire-Tools/Scripts/PowerShell/debloat.ps1 +++ b/Fire-Tools/Scripts/PowerShell/debloat.ps1 @@ -1,33 +1,35 @@ +# Set Variables & Export Package List +$option = $args[0] +$app = $args[1] +$disable = Get-Content .\Debloat.txt +adb shell pm list packages | Out-File packagelist + # Enable or Disable Specified Package and Provide Clean Output function debloat { - if ($args[0] -eq "Disable"){ - adb shell pm disable-user $args[1] *> $null - if ("$?" -eq "True") {adb shell pm clear $args[1] *> $null} - } elseif ($args[0] -eq "Enable"){ - adb shell pm enable $args[1] *> $null + if ($option -eq "Disable"){ + adb shell pm disable-user $app *> $null + if ("$?" -eq "True") {adb shell pm clear $app *> $null} + } elseif ($option -eq "Enable"){ + adb shell pm enable $app *> $null } if ("$?" -eq "True"){ - Write-Host "$($args[0])d: $($args[1])" + Write-Host "$($option)d: $($app)" } else { - Write-Host "Failed to $($args[0]): $($args[1])" + Write-Host "Failed to $($option): $($app)" } } # If a Package is Specified, Only run Debloat Function -if ($args[1]){ - debloat $args[0] $args[1] +if ($app){ + debloat $option $app } else { - # Save Debloat.txt to a Variable & Export Package List - $disable = Get-Content .\Debloat.txt - adb shell pm list packages | Out-File packagelist - # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option foreach ($package in $disable){ if (Select-String $package.split(' #')[0] .\packagelist){ - debloat $args[0] $package.split(" #")[0] + debloat $option $package.split(" #")[0] } } - if ($args[0] -eq "Enable"){ + if ($option -eq "Enable"){ Write-Host "Disabling Private DNS" adb shell settings put global private_dns_mode off Write-Host "Enabling Location Services" From 2dd332ef394a5a45ad3f7e8bda6fa40c175af47d Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:55:08 -0700 Subject: [PATCH 05/27] Update appinstaller.sh - Fix accidental $ --- Fire-Tools/Scripts/Posix/appinstaller.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fire-Tools/Scripts/Posix/appinstaller.sh b/Fire-Tools/Scripts/Posix/appinstaller.sh index 37db77e..ef387f3 100644 --- a/Fire-Tools/Scripts/Posix/appinstaller.sh +++ b/Fire-Tools/Scripts/Posix/appinstaller.sh @@ -2,7 +2,7 @@ # Set Variables & Export Package List app="$1" -$option="$2" +option="$2" adb shell pm list packages -3 > packagelist # Change Application Installation Method Based on Filetype From ffdf91e173d68322ca756e5efdbae7f4c779109a Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 11:57:55 -0700 Subject: [PATCH 06/27] Update debloat.sh - Replaced $1 & $2 with $option & $app for better readability and consistency --- Fire-Tools/Scripts/Posix/debloat.sh | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Fire-Tools/Scripts/Posix/debloat.sh b/Fire-Tools/Scripts/Posix/debloat.sh index a661ec0..cf6f6fa 100644 --- a/Fire-Tools/Scripts/Posix/debloat.sh +++ b/Fire-Tools/Scripts/Posix/debloat.sh @@ -1,30 +1,32 @@ #!/usr/bin/env sh +# Set Variables & Export Package List +option="$1" +app="$2" +packages=$(awk '{print $option}' < Debloat.txt) +adb shell pm list packages -s > packagelist + # Change ADB Shell Arguments Based on Selection debloat () { -case "$1" in +case "$option" in Enable) - adb shell pm enable "$2" >/dev/null 2>&1;; + adb shell pm enable "$app" >/dev/null 2>&1;; Disable) - adb shell pm disable-user "$2" >/dev/null 2>&1 && adb shell pm clear "$2" > /dev/null;; + adb shell pm disable-user "$app" >/dev/null 2>&1 && adb shell pm clear "$app" > /dev/null;; esac # [Enable/Disable]d: package || Failed to [Enable/Disable]: Package - [ "$?" = 0 ] && printf "%sd: $2\n" "$1" || printf "%s\n" "Failed to $1: $2" + [ "$?" = 0 ] && printf "%sd: $app\n" "$option" || printf "%s\n" "Failed to $option: $app" } # If a Package is Specified, Only run Debloat Function -if [ -n "$2" ]; then - debloat "$1" "$2" +if [ -n "$app" ]; then + debloat "$option" "$app" else - # Save Debloat.txt to a Variable & Export Package List - packages=$(awk '{print $1}' < Debloat.txt) - adb shell pm list packages -s > packagelist - # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option for package in ${packages}; do - grep -q "$package" < packagelist && debloat "$1" "$package" + grep -q "$package" < packagelist && debloat "$option" "$package" done - if [ "$1" = "Enable" ]; then + if [ "$option" = "Enable" ]; then printf "%s\n" "Enabling Location" adb shell settings put secure location_providers_allowed network printf "%s\n" "Disabling Private DNS" From 3f67f19ad83642655aef8799a9d86324b7fe951b Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Tue, 3 Sep 2024 12:00:08 -0700 Subject: [PATCH 07/27] Update main.py - Version bump (24.09) --- Fire-Tools/main.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Fire-Tools/main.py b/Fire-Tools/main.py index 2d57f85..3bf0d6d 100644 --- a/Fire-Tools/main.py +++ b/Fire-Tools/main.py @@ -8,10 +8,9 @@ os.chdir(os.path.dirname(os.path.realpath(__file__))) # Platform & Device Variables -version = "24.08" +version = "24.09" platform = "Linux/macOS" path = f"{os.getcwd()}/Scripts/Posix/" - extension = ".sh" shell = "Posix" if os.name == "nt": From 87a52ee2d9084c4ed4f6af98fc441f2655ede998 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 9 Sep 2024 10:09:41 -0700 Subject: [PATCH 08/27] Initial Windows Install Script - Downloads Fire-Tools and puts it in AppData\Roaming - Downloads Python and requirements - Adds shortcut to start menu --- Fire-Tools/Scripts/PowerShell/install.ps1 | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Fire-Tools/Scripts/PowerShell/install.ps1 diff --git a/Fire-Tools/Scripts/PowerShell/install.ps1 b/Fire-Tools/Scripts/PowerShell/install.ps1 new file mode 100644 index 0000000..f5aaeee --- /dev/null +++ b/Fire-Tools/Scripts/PowerShell/install.ps1 @@ -0,0 +1,25 @@ +# Download, Extract to AppData\Roaming, then Delete Fire-Tools.zip +Start-BitsTransfer -Source "https://github.com/mrhaydendp/fire-tools/releases/latest/download/Fire-Tools.zip" +Expand-Archive -Path .\Fire-Tools.zip -Destination "$env:APPDATA" +Remove-Item -Path .\Fire-Tools.zip + +# Add Shortcut to Start Menu +$startmenu = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" +$targetPath = "$env:APPDATA\Fire-Tools\main.py" +New-Item -ItemType SymbolicLink -Path "$startmenu" -TargetPath "$targetPath" + +# Check / Install Python & Requirements +if (!(Select-String -Pattern "Python" -InputObject "$env:PATH" -Quiet)) { + if (Get-Command winget) { + winget install -s winget "Python.Python.3.12" --force + } else { + # Find Latest Python Version by Scraping Page & Install + $latest = (Invoke-WebRequest -Uri "https://www.python.org/downloads/").Links.href -like "*.exe" + Start-BitsTransfer -Source "$latest" + .\*python*.exe /passive PrependPath=1 + while (!(Get-Package -Name "*Python*" -ErrorAction SilentlyContinue)) {} + Remove-Item .\*python*.exe + } + Start-BitsTransfer -Source "https://raw.githubusercontent.com/mrhaydendp/Fire-Tools/main/Fire-Tools/requirements.txt" -Destination "$env:APPDATA\Fire-Tools" + pip install -r "$env:APPDATA\Fire-Tools\requirements.txt" +} From 3664bad86d193399c722921133ae58d3bd4614e9 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sat, 14 Sep 2024 15:41:13 -0700 Subject: [PATCH 09/27] Update install.ps1 - Added -Force to Expand-Archive commands so it's less prone to errors and will support updating Fire Tools - Swapped to WSH (Windows Script Host) method of creating shortcut that doesn't require admin privileges - Moved shortcut file to user's Start Menu folder instead of the global one - Made manual Python install filename "python-latest.exe" instead of using wildcards so no issues would come up - Added user-wide ADB installation --- Fire-Tools/Scripts/PowerShell/install.ps1 | 26 +++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Fire-Tools/Scripts/PowerShell/install.ps1 b/Fire-Tools/Scripts/PowerShell/install.ps1 index f5aaeee..2a8c190 100644 --- a/Fire-Tools/Scripts/PowerShell/install.ps1 +++ b/Fire-Tools/Scripts/PowerShell/install.ps1 @@ -1,12 +1,14 @@ # Download, Extract to AppData\Roaming, then Delete Fire-Tools.zip Start-BitsTransfer -Source "https://github.com/mrhaydendp/fire-tools/releases/latest/download/Fire-Tools.zip" -Expand-Archive -Path .\Fire-Tools.zip -Destination "$env:APPDATA" +Expand-Archive -Path .\Fire-Tools.zip -Destination "$env:APPDATA" -Force Remove-Item -Path .\Fire-Tools.zip # Add Shortcut to Start Menu -$startmenu = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" -$targetPath = "$env:APPDATA\Fire-Tools\main.py" -New-Item -ItemType SymbolicLink -Path "$startmenu" -TargetPath "$targetPath" +$WshShell = New-Object -COMObject WScript.Shell +$Shortcut = $WshShell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Fire Tools.lnk") +$Shortcut.TargetPath = "$env:APPDATA\Fire-Tools\main.py" +$Shortcut.WorkingDirectory = "$env:APPDATA\Fire-Tools" +$Shortcut.Save() # Check / Install Python & Requirements if (!(Select-String -Pattern "Python" -InputObject "$env:PATH" -Quiet)) { @@ -15,11 +17,21 @@ if (!(Select-String -Pattern "Python" -InputObject "$env:PATH" -Quiet)) { } else { # Find Latest Python Version by Scraping Page & Install $latest = (Invoke-WebRequest -Uri "https://www.python.org/downloads/").Links.href -like "*.exe" - Start-BitsTransfer -Source "$latest" - .\*python*.exe /passive PrependPath=1 + Start-BitsTransfer -Source "$latest" -Destination .\python-latest.exe + .\python-latest.exe /passive PrependPath=1 while (!(Get-Package -Name "*Python*" -ErrorAction SilentlyContinue)) {} - Remove-Item .\*python*.exe + Remove-Item -Path .\python-latest.exe } Start-BitsTransfer -Source "https://raw.githubusercontent.com/mrhaydendp/Fire-Tools/main/Fire-Tools/requirements.txt" -Destination "$env:APPDATA\Fire-Tools" pip install -r "$env:APPDATA\Fire-Tools\requirements.txt" } + +# Check / Install ADB (Download, Extract, Backup & Set Environment Variable) +if (!(Select-String -Pattern "platform-tools" -InputObject "$env:PATH" -Quiet)) { + Start-BitsTransfer -Source "https://dl.google.com/android/repository/platform-tools-latest-windows.zip" + Expand-Archive -Path .\platform-tools-latest-windows.zip -Destination "$HOME" -Force + Remove-Item -Path .\platform-tools-latest-windows.zip + [Environment]::SetEnvironmentVariable("PATH_BACKUP","$env:PATH","User") + Set-Item -Path Env:\PATH -Value ("$env:PATH;$HOME\platform-tools") + [Environment]::SetEnvironmentVariable("Path","$env:PATH","User") +} From 450675e2917c0f3570e5ff6a1ad46abaf423c4cb Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sat, 14 Sep 2024 15:54:20 -0700 Subject: [PATCH 10/27] Update Changelog.md --- Changelog.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Changelog.md b/Changelog.md index bd14056..3a1a2b2 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,7 +1,5 @@ -## Updated main.py, requirements.txt, version, appinstaller.sh, appinstaller.ps1 08/21/2024 -- Version bump (24.08) -- Added Fire TV Channels (com.amazon.hedwig) to debloat list -- Added space between changelog and "Updating: module" text during update process -- Updated Packaging and Requests version in requirements.txt -- Fixed update tool endlessly having updates available -- LauncherHijack will now only be installed if you don't have it +## Updated: appinstaller, debloat, install, main, version | Date: 09/15/2024 +- Version bump (24.09) +- Added "packagelist" file check before checking for custom launcher to reduce errors +- Improved readability and consistency of scripts by replacing $args[1]/$1 variables with $app/option throughout all scripts +- Initial Windows install script (Downloads and sets up Fire-Tools, Python, & ADB and creates start menu entry) From 5406f25343c7b8de7b5c7597b7d22cf0328a38a3 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sat, 14 Sep 2024 18:54:09 -0700 Subject: [PATCH 11/27] New Initial Posix Install Script - Very basic if/else method of testing package manager - Currently, Mac OS needs brew before running install.sh - Downloads Fire-Tools and puts it in home folder - Downloads ADB, Python, Tkinter, and PIP requirements - Adds .desktop file for supported operating systems --- Fire-Tools/Scripts/Posix/install.sh | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Fire-Tools/Scripts/Posix/install.sh diff --git a/Fire-Tools/Scripts/Posix/install.sh b/Fire-Tools/Scripts/Posix/install.sh new file mode 100644 index 0000000..592ba11 --- /dev/null +++ b/Fire-Tools/Scripts/Posix/install.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env sh + +# Download & Unzip Fire Tools +curl -LO https://github.com/mrhaydendp/fire-tools/releases/latest/download/Fire-Tools.zip +unzip -o Fire-Tools.zip -d "$HOME" +rm Fire-Tools.zip + +# Install Dependencies with Respective Package Manager +if command -v apt >/dev/null 2>&1; then + sudo apt install -y adb python3 python3-tk python3-pip +elif command -v pacman >/dev/null 2>&1; then + sudo pacman -S --noconfirm android-tools tk python-pip +elif command -v dnf >/dev/null 2>&1; then + sudo dnf install -y android-tools python3-tkinter python3-pip +elif command -v brew >/dev/null 2>&1; then + yes | brew install android-platform-tools python-tk +else + echo "Unsupported OS" + exit 1 +fi + +# Download Latest Requirements File & Install with Pip +curl -L "https://raw.githubusercontent.com/mrhaydendp/Fire-Tools/main/Fire-Tools/requirements.txt" -o "$HOME/Fire-Tools/requirements.txt" +pip install -r "$HOME/Fire-Tools/requirements.txt" + +# Create .Desktop File +if [ -d "$HOME/.local/share/applications" ]; then + printf "[Desktop Entry]\nName=Fire Tools\nExec=python3 %s/Fire-Tools/main.py\nTerminal=true\nType=Application\nCategories=Utility" "$HOME" > "$HOME/.local/share/applications/Fire-Tools.desktop" + chmod +x "$HOME/.local/share/applications/Fire-Tools.desktop" +fi From 24512f3e5c9bcf2bc3e3ef300af856a9cbc59b2c Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sun, 15 Sep 2024 10:27:50 -0700 Subject: [PATCH 12/27] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 52466a3..31b68fe 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,14 @@ python main.py **Important Notes:** +* Although this project has similar goals, it is not affiliated with [Datastream33's Amazon Fire Toolbox](https://xdaforums.com/t/windows-linux-tool-fire-toolbox-v36-1.3889604/) * Some features of the Fire Tools may break due to Fire OS updates but I'll try my best to keep them working. * Set timezone settings before debloat! (re-enable `com.amazon.kindle.otter.oobe` to change date & time settings) * Google Apps are downloaded from [ApkMirror](https://www.apkmirror.com/) and are included in releases for convienence see [terms](https://github.com/mrhaydendp/Fire-Tools/blob/main/Fire-Tools/Gapps/README.md). * Debloat will disable most amazon apps with the exception of: `Calculator`, `Camera`, `Clock`, `Files`, `Fire Launcher`, `Silk Browser`, and `Settings` * Warranty and Reset: Using Fire Tools doesn't void your warranty and all changes can be reversed with a factory reset. * Disclaimer: While I developed this tool, I am not responsible for any issues arising from its use. - + **Credits:** Fire Tools thanks and acknowledges the following projects. They are included for your convenience: * [Google](https://www.android.com/) (GApps) From f656915b5ae626f8e8af8bdf4458cc1022c7a963 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sun, 15 Sep 2024 10:28:42 -0700 Subject: [PATCH 13/27] Update Changelog.md --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 3a1a2b2..2fbf70e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,4 +2,4 @@ - Version bump (24.09) - Added "packagelist" file check before checking for custom launcher to reduce errors - Improved readability and consistency of scripts by replacing $args[1]/$1 variables with $app/option throughout all scripts -- Initial Windows install script (Downloads and sets up Fire-Tools, Python, & ADB and creates start menu entry) +- Initial Windows & Posix install script (Downloads and sets up Fire-Tools, Python, & ADB and creates app menu entry) From 39c09d1fda7dcc7c6cbcd9fd49a145d38bc2e185 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sun, 15 Sep 2024 11:35:59 -0700 Subject: [PATCH 14/27] Update install.sh - Added Brew check and automated installer for macOS - OS is now determined by os-release rather than multiple if, elif, else statements which improves speed and code quality --- Fire-Tools/Scripts/Posix/install.sh | 32 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Fire-Tools/Scripts/Posix/install.sh b/Fire-Tools/Scripts/Posix/install.sh index 592ba11..f908192 100644 --- a/Fire-Tools/Scripts/Posix/install.sh +++ b/Fire-Tools/Scripts/Posix/install.sh @@ -1,22 +1,34 @@ #!/usr/bin/env sh +# Install Brew Without Interaction +install_brew() { + yes | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + (echo; echo "eval \"\$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)\"") >> "$HOME/.bashrc" + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" +} + # Download & Unzip Fire Tools curl -LO https://github.com/mrhaydendp/fire-tools/releases/latest/download/Fire-Tools.zip unzip -o Fire-Tools.zip -d "$HOME" rm Fire-Tools.zip # Install Dependencies with Respective Package Manager -if command -v apt >/dev/null 2>&1; then - sudo apt install -y adb python3 python3-tk python3-pip -elif command -v pacman >/dev/null 2>&1; then - sudo pacman -S --noconfirm android-tools tk python-pip -elif command -v dnf >/dev/null 2>&1; then - sudo dnf install -y android-tools python3-tkinter python3-pip -elif command -v brew >/dev/null 2>&1; then - yes | brew install android-platform-tools python-tk +if [ -f /etc/os-release ]; then + . /etc/os-release + case "$ID_LIKE" in + *debian*) + sudo apt install -y adb python3 python3-tk python3-pip;; + *arch*) + sudo pacman -S --noconfirm android-tools tk python-pip;; + *fedora*) + sudo dnf install -y android-tools python3-tkinter python3-pip;; + *) + echo "Unknown/Unsupported OS" + exit 1;; + esac else - echo "Unsupported OS" - exit 1 + command -v brew >/dev/null 2>&1 || install_brew + yes | brew install android-platform-tools python-tk fi # Download Latest Requirements File & Install with Pip From b19ac9e23f340e469a8c464c91046e9ef9c4dfd3 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sun, 15 Sep 2024 21:33:08 -0700 Subject: [PATCH 15/27] Update README.md - Updated Gapps links to match latest release --- Fire-Tools/Gapps/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Fire-Tools/Gapps/README.md b/Fire-Tools/Gapps/README.md index 7e2a9e1..6080eed 100644 --- a/Fire-Tools/Gapps/README.md +++ b/Fire-Tools/Gapps/README.md @@ -1,6 +1,6 @@ # Terms Fire-Tools does not provide you with any license for Google’s APKs included in the releases. Packages are included to provide a convenient way to sideload APKs to your device. Included apps are as follows: -- [Google Play Store 40.6.28-23.apkm](https://www.apkmirror.com/apk/google-inc/google-play-store/google-play-store-40-6-28-release/google-play-store-40-6-28-23-0-pr-625422852-4-android-apk-download/) -- [Google Play Services 24.13.19.apkm](https://www.apkmirror.com/apk/google-inc/google-play-services/google-play-services-24-13-19-release/google-play-services-24-13-19-040400-626168189-android-apk-download/) +- [Google Play Store 42.6.23-23.apkm](https://www.apkmirror.com/apk/google-inc/google-play-store/google-play-store-42-6-23-release/google-play-store-42-6-23-23-0-pr-670678617-2-android-apk-download/) +- [Google Play Services 24.35.30.apkm](https://www.apkmirror.com/apk/google-inc/google-play-services/google-play-services-24-35-30-release/google-play-services-24-35-30-040400-668017056-2-android-apk-download/) - [Google Services Framework 9-6957767.apk](https://www.apkmirror.com/apk/google-inc/google-services-framework/google-services-framework-9-6957767-release/google-services-framework-9-6957767-android-apk-download/) - [Google Services Framework 10-6494331.apk](https://www.apkmirror.com/apk/google-inc/google-services-framework/google-services-framework-10-6494331-release/google-services-framework-10-6494331-android-apk-download/) From 25a3c96ac1bb46d7755b9d8592be76fdab847218 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Sun, 15 Sep 2024 22:00:07 -0700 Subject: [PATCH 16/27] Update appinstaller.sh - Fixed syntax error --- Fire-Tools/Scripts/Posix/appinstaller.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fire-Tools/Scripts/Posix/appinstaller.sh b/Fire-Tools/Scripts/Posix/appinstaller.sh index ef387f3..f18d3cb 100644 --- a/Fire-Tools/Scripts/Posix/appinstaller.sh +++ b/Fire-Tools/Scripts/Posix/appinstaller.sh @@ -20,7 +20,7 @@ esac # Grant Launcher Appwidget Permission & Attempt to Disable Fire Launcher. If Failed, Install LauncherHijack if [ "$option" = "Launcher" ]; then adb shell pm list packages -3 > packagelist.new - if [ -s packagelist ]; + if [ -s packagelist ]; then launcher=$(diff packagelist* | grep -E -o "[a-z0-9]*(\.[a-z0-9]+)+[a-z0-9]") [ -n "$launcher" ] && adb shell appwidget grantbind --package "$launcher" fi From a422eb9c2a42760ca55293612d87330c05ecb800 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 09:00:06 -0700 Subject: [PATCH 17/27] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31b68fe..d260c57 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ python main.py * Although this project has similar goals, it is not affiliated with [Datastream33's Amazon Fire Toolbox](https://xdaforums.com/t/windows-linux-tool-fire-toolbox-v36-1.3889604/) * Some features of the Fire Tools may break due to Fire OS updates but I'll try my best to keep them working. * Set timezone settings before debloat! (re-enable `com.amazon.kindle.otter.oobe` to change date & time settings) -* Google Apps are downloaded from [ApkMirror](https://www.apkmirror.com/) and are included in releases for convienence see [terms](https://github.com/mrhaydendp/Fire-Tools/blob/main/Fire-Tools/Gapps/README.md). +* Google Apps are downloaded from [ApkMirror](https://www.apkmirror.com/) and are included in releases for convienence see [terms](https://github.com/mrhaydendp/Fire-Tools/blob/main/Fire-Tools/Gapps/README.md). APK names and corresponding URLs can be found in Fire-Tools/Gapps/README.MD * Debloat will disable most amazon apps with the exception of: `Calculator`, `Camera`, `Clock`, `Files`, `Fire Launcher`, `Silk Browser`, and `Settings` * Warranty and Reset: Using Fire Tools doesn't void your warranty and all changes can be reversed with a factory reset. * Disclaimer: While I developed this tool, I am not responsible for any issues arising from its use. From 244519c820b2c59e3d0c573fdd544de773d6710a Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 09:06:49 -0700 Subject: [PATCH 18/27] Update README.md - Fix filename --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d260c57..0dcb9c7 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ python main.py * Although this project has similar goals, it is not affiliated with [Datastream33's Amazon Fire Toolbox](https://xdaforums.com/t/windows-linux-tool-fire-toolbox-v36-1.3889604/) * Some features of the Fire Tools may break due to Fire OS updates but I'll try my best to keep them working. * Set timezone settings before debloat! (re-enable `com.amazon.kindle.otter.oobe` to change date & time settings) -* Google Apps are downloaded from [ApkMirror](https://www.apkmirror.com/) and are included in releases for convienence see [terms](https://github.com/mrhaydendp/Fire-Tools/blob/main/Fire-Tools/Gapps/README.md). APK names and corresponding URLs can be found in Fire-Tools/Gapps/README.MD +* Google Apps are downloaded from [ApkMirror](https://www.apkmirror.com/) and are included in releases for convienence see [terms](https://github.com/mrhaydendp/Fire-Tools/blob/main/Fire-Tools/Gapps/README.md). APK names and corresponding URLs can be found in Fire-Tools/Gapps/README.md * Debloat will disable most amazon apps with the exception of: `Calculator`, `Camera`, `Clock`, `Files`, `Fire Launcher`, `Silk Browser`, and `Settings` * Warranty and Reset: Using Fire Tools doesn't void your warranty and all changes can be reversed with a factory reset. * Disclaimer: While I developed this tool, I am not responsible for any issues arising from its use. From ea10a3a74b1c7a115576f54578985c579940fa54 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 09:27:06 -0700 Subject: [PATCH 19/27] Update debloat.sh - Fixed accidental swap of $1 that was needed for a command - Fixed debloat function formatting - Fixed packages not being enabled/disabled due to incorrect variable being updated - Removed "Disable" being the default option --- Fire-Tools/Scripts/Posix/debloat.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Fire-Tools/Scripts/Posix/debloat.sh b/Fire-Tools/Scripts/Posix/debloat.sh index cf6f6fa..27e167d 100644 --- a/Fire-Tools/Scripts/Posix/debloat.sh +++ b/Fire-Tools/Scripts/Posix/debloat.sh @@ -3,19 +3,19 @@ # Set Variables & Export Package List option="$1" app="$2" -packages=$(awk '{print $option}' < Debloat.txt) +packages=$(awk '{print $1}' < Debloat.txt) adb shell pm list packages -s > packagelist # Change ADB Shell Arguments Based on Selection debloat () { -case "$option" in - Enable) - adb shell pm enable "$app" >/dev/null 2>&1;; - Disable) - adb shell pm disable-user "$app" >/dev/null 2>&1 && adb shell pm clear "$app" > /dev/null;; -esac - # [Enable/Disable]d: package || Failed to [Enable/Disable]: Package - [ "$?" = 0 ] && printf "%sd: $app\n" "$option" || printf "%s\n" "Failed to $option: $app" + case "$option" in + Enable) + adb shell pm enable "$app" >/dev/null 2>&1;; + Disable) + adb shell pm disable-user "$app" >/dev/null 2>&1 && adb shell pm clear "$app" > /dev/null;; + esac + # Enable/Disable(d): package || Failed to Enable/Disable: package + [ "$?" = 0 ] && printf "%sd: $app\n" "$option" || printf "%s\n" "Failed to $option: $app" } # If a Package is Specified, Only run Debloat Function @@ -23,8 +23,8 @@ if [ -n "$app" ]; then debloat "$option" "$app" else # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option - for package in ${packages}; do - grep -q "$package" < packagelist && debloat "$option" "$package" + for app in ${packages}; do + grep -q "$package" < packagelist && debloat "$option" "$app" done if [ "$option" = "Enable" ]; then printf "%s\n" "Enabling Location" @@ -37,7 +37,7 @@ else debloat Enable "com.amazon.$package" done printf "%s\n\n" "Successfully Enabled Fire OS Bloat" - else + elif [ "$option" = "Disable" ]; then printf "%s\n" "Disabling Telemetry & Resetting Advertising ID" adb shell settings put secure limit_ad_tracking 1 adb shell settings put secure usage_metrics_marketing_enabled 0 From e0f183a44009bf7269a0ac5bb84163235ce699f7 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 12:35:05 -0700 Subject: [PATCH 20/27] Update debloat.ps1 - Added quotes around variables - Removed "Disable" being the default option --- Fire-Tools/Scripts/PowerShell/debloat.ps1 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Fire-Tools/Scripts/PowerShell/debloat.ps1 b/Fire-Tools/Scripts/PowerShell/debloat.ps1 index 4662211..dbd3d5b 100644 --- a/Fire-Tools/Scripts/PowerShell/debloat.ps1 +++ b/Fire-Tools/Scripts/PowerShell/debloat.ps1 @@ -7,10 +7,10 @@ adb shell pm list packages | Out-File packagelist # Enable or Disable Specified Package and Provide Clean Output function debloat { if ($option -eq "Disable"){ - adb shell pm disable-user $app *> $null - if ("$?" -eq "True") {adb shell pm clear $app *> $null} + adb shell pm disable-user "$app" *> $null + if ("$?" -eq "True") {adb shell pm clear "$app" *> $null} } elseif ($option -eq "Enable"){ - adb shell pm enable $app *> $null + adb shell pm enable "$app" *> $null } if ("$?" -eq "True"){ Write-Host "$($option)d: $($app)" @@ -21,15 +21,15 @@ function debloat { # If a Package is Specified, Only run Debloat Function if ($app){ - debloat $option $app + debloat "$option" "$app" } else { # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option foreach ($package in $disable){ if (Select-String $package.split(' #')[0] .\packagelist){ - debloat $option $package.split(" #")[0] + debloat "$option" $package.split(" #")[0] } } - if ($option -eq "Enable"){ + if ("$option" -eq "Enable"){ Write-Host "Disabling Private DNS" adb shell settings put global private_dns_mode off Write-Host "Enabling Location Services" @@ -42,7 +42,7 @@ if ($app){ Write-Host "Enabling Background Activities" adb shell settings put global always_finish_activities 0 Write-Host "Successfully Enabled Fire OS Bloat`n" - } else { + } elseif ("$option" -eq "Disable") { Write-Host "Disabling Telemetry & Resetting Advertising ID" adb shell settings put secure limit_ad_tracking 1 adb shell settings put secure usage_metrics_marketing_enabled 0 From c54faa49059f9356d65e3e67d5048d214c6742a0 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 12:37:51 -0700 Subject: [PATCH 21/27] Update Screenshot --- Screenshot.png | Bin 48797 -> 57175 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Screenshot.png b/Screenshot.png index 447920d26a0a843159520d6b641dbc33f06ea0c2..3f71d6800ed5ba02318da0257fe571fef5c87e25 100644 GIT binary patch literal 57175 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 ZNQdt-_rkTm6(Sz`N=iwx^rfNi{{aglC$azl literal 48797 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

Z;2EUM8TXV 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 From f05c83aeb204dfea7a1ae4e6ddec3f5f9dbe3615 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 12:43:06 -0700 Subject: [PATCH 22/27] Update appinstaller.sh - Re-added LauncherHijack check --- Fire-Tools/Scripts/Posix/appinstaller.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fire-Tools/Scripts/Posix/appinstaller.sh b/Fire-Tools/Scripts/Posix/appinstaller.sh index f18d3cb..f47c168 100644 --- a/Fire-Tools/Scripts/Posix/appinstaller.sh +++ b/Fire-Tools/Scripts/Posix/appinstaller.sh @@ -25,5 +25,5 @@ if [ "$option" = "Launcher" ]; then [ -n "$launcher" ] && adb shell appwidget grantbind --package "$launcher" fi adb shell pm disable-user -k com.amazon.firelauncher >/dev/null 2>&1 || - ./Scripts/Posix/appinstaller.sh LauncherHijackV403.apk + grep -q "com.baronkiko.launcherhijack" ./packagelist || ./Scripts/Posix/appinstaller.sh LauncherHijackV403.apk fi From d798851881c26e622f54fdd1ddf11e0b0cfb937b Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 12:45:44 -0700 Subject: [PATCH 23/27] Update README.md - Added install script --- Fire-Tools/Scripts/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Fire-Tools/Scripts/README.md b/Fire-Tools/Scripts/README.md index 85c0c82..a3d593b 100644 --- a/Fire-Tools/Scripts/README.md +++ b/Fire-Tools/Scripts/README.md @@ -3,3 +3,4 @@ Backend scripts that make the tool function: - Debloat: Handles debloat/undo function & accepts input to disable/enable selected packages. - AppInstaller: Handles app installations of multiple file types (.apk/.apkm) & sets launcher specific options. - Identify: Identifies device name by using model number & Amazon developer page. +- Install: Downloads and sets up required dependencies for Fire Tools & adds it to start/app menu From ec061649c518851392c11bf4adafdaa276f02d5f Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 13:32:07 -0700 Subject: [PATCH 24/27] Update debloat.ps1 - Changed $disabled variable to $packages to match Linux/macOS version - Added option requirement for disabling applications - Added more quotes for consistency --- Fire-Tools/Scripts/PowerShell/debloat.ps1 | 26 ++++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Fire-Tools/Scripts/PowerShell/debloat.ps1 b/Fire-Tools/Scripts/PowerShell/debloat.ps1 index dbd3d5b..3fce4bb 100644 --- a/Fire-Tools/Scripts/PowerShell/debloat.ps1 +++ b/Fire-Tools/Scripts/PowerShell/debloat.ps1 @@ -1,32 +1,28 @@ # Set Variables & Export Package List $option = $args[0] $app = $args[1] -$disable = Get-Content .\Debloat.txt +$packages = Get-Content .\Debloat.txt | % { $_.Split(" #")[0] } adb shell pm list packages | Out-File packagelist # Enable or Disable Specified Package and Provide Clean Output function debloat { - if ($option -eq "Disable"){ + if ("$option" -eq "Disable"){ adb shell pm disable-user "$app" *> $null if ("$?" -eq "True") {adb shell pm clear "$app" *> $null} - } elseif ($option -eq "Enable"){ + } elseif ("$option" -eq "Enable"){ adb shell pm enable "$app" *> $null } - if ("$?" -eq "True"){ - Write-Host "$($option)d: $($app)" - } else { - Write-Host "Failed to $($option): $($app)" - } + if ("$?" -eq "True"){Write-Host "$($option)d: $($app)"} else {Write-Host "Failed to $($option): $($app)"} } # If a Package is Specified, Only run Debloat Function -if ($app){ +if ("$app"){ debloat "$option" "$app" -} else { +} elseif ("$option") { # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option - foreach ($package in $disable){ - if (Select-String $package.split(' #')[0] .\packagelist){ - debloat "$option" $package.split(" #")[0] + foreach ($app in $packages){ + if (Select-String "$app" .\packagelist){ + debloat "$option" "$app" } } if ("$option" -eq "Enable"){ @@ -36,8 +32,8 @@ if ($app){ adb shell settings put global location_global_kill_switch 0 Write-Host "Enabling Core Apps" $core = @("firelauncher", "device.software.ota", "device.software.ota.override", "kindle.otter.oobe.forced.ota") - foreach ($package in $core){ - debloat Enable com.amazon."$package" + foreach ($app in $core){ + debloat Enable "com.amazon.$app" } Write-Host "Enabling Background Activities" adb shell settings put global always_finish_activities 0 From 6d67326b51a931da5a12738c2759caf5bea4dcd2 Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 13:34:14 -0700 Subject: [PATCH 25/27] Update debloat.sh - Added option requirement for disabling/enabling packages --- Fire-Tools/Scripts/Posix/debloat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fire-Tools/Scripts/Posix/debloat.sh b/Fire-Tools/Scripts/Posix/debloat.sh index 27e167d..d7832bc 100644 --- a/Fire-Tools/Scripts/Posix/debloat.sh +++ b/Fire-Tools/Scripts/Posix/debloat.sh @@ -21,7 +21,7 @@ debloat () { # If a Package is Specified, Only run Debloat Function if [ -n "$app" ]; then debloat "$option" "$app" -else +elif [ -n "$option" ]; then # Loop & Check if Package from Debloat.txt is Present in 'packagelist' if so, Send to the Debloat Function with Enable/Disable Option for app in ${packages}; do grep -q "$package" < packagelist && debloat "$option" "$app" From 18046b5d95ab573b12c167d22257060f7400487e Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 13:37:24 -0700 Subject: [PATCH 26/27] Update README.md - Grammar fixes - Added link to Amazon Developer page --- Fire-Tools/Scripts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Fire-Tools/Scripts/README.md b/Fire-Tools/Scripts/README.md index a3d593b..b099b0f 100644 --- a/Fire-Tools/Scripts/README.md +++ b/Fire-Tools/Scripts/README.md @@ -1,6 +1,6 @@ ## Scripts Backend scripts that make the tool function: -- Debloat: Handles debloat/undo function & accepts input to disable/enable selected packages. +- Debloat: Handles debloat/undo functions & accepts input to disable/enable selected packages. - AppInstaller: Handles app installations of multiple file types (.apk/.apkm) & sets launcher specific options. -- Identify: Identifies device name by using model number & Amazon developer page. +- Identify: Identifies device name by using model number & matching with [Amazon developer page](https://developer.amazon.com/docs/fire-tablets/ft-identifying-tablet-devices.html). - Install: Downloads and sets up required dependencies for Fire Tools & adds it to start/app menu From 4cab2dc52d1198453cc919a1558daa5094f10d9a Mon Sep 17 00:00:00 2001 From: Hayden Plumley Date: Mon, 16 Sep 2024 13:49:50 -0700 Subject: [PATCH 27/27] Update Changelog.md --- Changelog.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 2fbf70e..858da8c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,4 +2,7 @@ - Version bump (24.09) - Added "packagelist" file check before checking for custom launcher to reduce errors - Improved readability and consistency of scripts by replacing $args[1]/$1 variables with $app/option throughout all scripts -- Initial Windows & Posix install script (Downloads and sets up Fire-Tools, Python, & ADB and creates app menu entry) +- Debloat script now requires an option to run instead of automatically debloating +- Simplified/sped up PowerShell debloat script by formatting Debloat.txt instead of every string it outputs into the array (to match Linux/macOS) +- Formatting fixes +- Created install script for all platforms that installs dependencies and adds Fire Tools to start/app menu