From 55863336f0fe270abd9f09f9e3a50b68e299497a Mon Sep 17 00:00:00 2001 From: Olai Date: Tue, 28 May 2024 13:54:23 +0200 Subject: [PATCH] Feature: Added checkExist. And updated logging **checkExist:** This is a check if there is a folder with the name of "Chrome - *" and deletes it if it is enabled. By Default it is disabled. **Logging:** Changed the format of the logs, by adding 4 different categories. Info, Debug, Error and Warn. --- Chrome Downloader.ps1 | 43 ++++++++++++++++++++++++++++++++----------- README.md | 4 +++- Rename.ps1 | 14 +++++++------- config.json | 3 ++- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/Chrome Downloader.ps1 b/Chrome Downloader.ps1 index e84098b..7105335 100644 --- a/Chrome Downloader.ps1 +++ b/Chrome Downloader.ps1 @@ -18,14 +18,35 @@ function Log-Message { } # Log the start of the script -Log-Message "Script initiation: Chrome Downloader" +Log-Message "Debug: Script started" # Check if both options are disabled and log a message if (-not $config.options.enableRegularVersion -and -not $config.options.enableForcedVersion) { - Log-Message "Configuration error: Both Regular and Forced versions are disabled. Please enable at least one option to proceed." + Log-Message "Warn: Both Regular and Forced versions are disabled. Please enable at least one option to proceed." exit } +if ($config.options.checkExist) { + $testPath = "$PSScriptRoot\Chrome - *" + + # Store subfolders before deletion + $subfolders = @() + + if (Test-Path $testPath) { + $subfolders = Get-ChildItem -Path $testPath -Directory | ForEach-Object { $_.FullName } + + # Remove the folders + Remove-Item $testPath -Recurse -Force + } + + # Output the subfolders + foreach ($subfolder in $subfolders) { + Log-Message "Info: The subfolder '$subfolder\' has been deleted." + } + +} + + # Define URLs $url1 = "https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi" $url2 = "https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise.msi" @@ -47,7 +68,7 @@ if ($config.options.enableRegularVersion) { if (-not (Test-Path $filesFolder)) { try { New-Item -Path $filesFolder -ItemType Directory -ErrorAction Stop - Log-Message "Directory creation: 'Chrome - VERSION' and 'Files' folder successfully created in $PSScriptRoot" + Log-Message "Info: Directory creation, 'Chrome - VERSION' and 'Files' folder successfully created in $PSScriptRoot" } catch { Log-Message "Error: Directory creation failed - $_" } @@ -56,7 +77,7 @@ if ($config.options.enableRegularVersion) { # Copy items from source folder to destination folder try { Copy-Item -Path $sourceFolderRegular\* -Destination $destinationFolder -Recurse -Force -ErrorAction Stop - Log-Message "Success: Regular Template successfully copied to $destinationFolder" + Log-Message "Info: Regular Template successfully copied to $destinationFolder" } catch { Log-Message "Error: Failed to copy Regular Template - $_" } @@ -66,7 +87,7 @@ if ($config.options.enableRegularVersion) { $filePath1 = Join-Path -Path $filesFolder -ChildPath $fileName1 try { Invoke-RestMethod -Uri $url1 -OutFile $filePath1 -ErrorAction Stop - Log-Message "Download complete: 64-bit version of Chrome successfully downloaded to $filePath1" + Log-Message "Info: Download complete, 64-bit version of Chrome successfully downloaded to $filePath1" } catch { Log-Message "Error: 64-bit Chrome download failed - $_" } @@ -76,7 +97,7 @@ if ($config.options.enableRegularVersion) { $filePath2 = Join-Path -Path $filesFolder -ChildPath $fileName2 try { Invoke-RestMethod -Uri $url2 -OutFile $filePath2 -ErrorAction Stop - Log-Message "Download complete: 32-bit version of Chrome successfully downloaded to $filePath2" + Log-Message "Info: Download complete, 32-bit version of Chrome successfully downloaded to $filePath2" } catch { Log-Message "Error: 32-bit Chrome download failed - $_" } @@ -87,7 +108,7 @@ if ($config.options.enableForcedVersion) { if (-not (Test-Path $forceUpdateFolder)) { try { New-Item -Path $forceUpdateFolder -ItemType Directory -ErrorAction Stop - Log-Message "Directory creation: 'Chrome - VERSION_force_update' successfully created in $PSScriptRoot" + Log-Message "Info: Directory creation, 'Chrome - VERSION_force_update' successfully created in $PSScriptRoot" } catch { Log-Message "Error: Force update directory creation failed - $_" } @@ -96,7 +117,7 @@ if ($config.options.enableForcedVersion) { # Copy items from forced source folder to force update folder try { Copy-Item -Path "$sourceFolderForced\*" -Destination $forceUpdateFolder -Recurse -Force -ErrorAction Stop - Log-Message "Success: Forced Template successfully copied to $forceUpdateFolder" + Log-Message "Info: Forced Template successfully copied to $forceUpdateFolder" } catch { Log-Message "Error: Failed to copy Forced Template - $_" } @@ -107,7 +128,7 @@ if ($config.options.enableForcedVersion) { $filePath1 = Join-Path -Path $forceUpdateFolder -ChildPath $fileName1 try { Invoke-RestMethod -Uri $url1 -OutFile $filePath1 -ErrorAction Stop - Log-Message "Download complete: 64-bit version of Chrome successfully downloaded to force update folder at $filePath1" + Log-Message "Info: Download complete, 64-bit version of Chrome successfully downloaded to force update folder at $filePath1" } catch { Log-Message "Error: 64-bit Chrome download to force update folder failed - $_" } @@ -118,12 +139,12 @@ if ($config.options.enableForcedVersion) { if (Test-Path $filePath1) { try { Copy-Item -Path $filePath1 -Destination $forceUpdateFolder -Force -ErrorAction Stop - Log-Message "Success: 64-bit version of Chrome copied to force update folder at $forceUpdateFolder" + Log-Message "Info: 64-bit version of Chrome copied to force update folder at $forceUpdateFolder" } catch { Log-Message "Error: Failed to copy 64-bit installer to force update folder - $_" } } else { - Log-Message "Warning: 64-bit version of Chrome was not downloaded and could not be copied to force update folder." + Log-Message "Warn: 64-bit version of Chrome was not downloaded and could not be copied to force update folder." } } } diff --git a/README.md b/README.md index d142d47..da9d6e8 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ The `config.json` file should be structured as follows: "options": { "enableRegularVersion": true, "enableForcedVersion": false, - "enableNumberedVersion": false + "enableNumberedVersion": false, + "checkExist": false, }, "logDateFormat": "dd/MM/yyyy HH:mm:ss" } @@ -24,6 +25,7 @@ The `config.json` file should be structured as follows: - `enableRegularVersion`: A boolean flag to enable downloading and installing the regular version of Chrome. - `enableForcedVersion`: A boolean flag to enable downloading and installing the forced update version of Chrome. - `enableNumberedVersion`: A boolean flag to enable the automatic renaming of the folder to the newest version of Chrome. ⚠️ **This option requires administrative privileges when executing the script!** ⚠️ +- `checkExist`: A boolean flag to delete old Chrome folders when the script is executed. ⚠️ **This action will delete your Chrome folders, so ensure you have backups if you wish to retain them.** ⚠️ - `logDateFormat`: A string defining the format of timestamps in logs. The default format is `dd/MM/yyyy HH:mm:ss`. ### Date Configuration diff --git a/Rename.ps1 b/Rename.ps1 index c3c6c3d..cc8a45f 100644 --- a/Rename.ps1 +++ b/Rename.ps1 @@ -26,12 +26,12 @@ if ($config.options.enableRegularVersion -and -not $config.options.enableForcedV $newFolderName = "Chrome - $chromeVersion" try { Rename-Item -Path $destinationFolder -NewName $newFolderName -ErrorAction Stop - Log-Message "Success: Folder renamed to $newFolderName" + Log-Message "Info: Folder renamed to $newFolderName" } catch { Log-Message "Error: Failed to rename folder - $_" } } else { - Log-Message "Warning: Chrome version could not be determined. Folder was not renamed." + Log-Message "Warn: Chrome version could not be determined. Folder was not renamed." } } elseif ($config.options.enableForcedVersion -and -not $config.options.enableRegularVersion) { @@ -47,12 +47,12 @@ elseif ($config.options.enableForcedVersion -and -not $config.options.enableRegu $newFolderName = "Chrome - $chromeVersion" + "_force_update" try { Rename-Item -Path $forceUpdateFolder -NewName $newFolderName -ErrorAction Stop - Log-Message "Success: Folder renamed to $newFolderName" + Log-Message "Info: Folder renamed to $newFolderName" } catch { Log-Message "Error: Failed to rename folder - $_" } } else { - Log-Message "Warning: Chrome version could not be determined. Folder was not renamed." + Log-Message "Warn: Chrome version could not be determined. Folder was not renamed." } } elseif ($config.options.enableForcedVersion -and $config.options.enableRegularVersion) { @@ -71,7 +71,7 @@ elseif ($config.options.enableForcedVersion -and $config.options.enableRegularVe $newRegularFolderName = "Chrome - $chromeVersion" try { Rename-Item -Path $destinationFolder -NewName $newRegularFolderName -ErrorAction Stop - Log-Message "Success: Folder renamed to $newRegularFolderName" + Log-Message "Info: Folder renamed to $newRegularFolderName" } catch { Log-Message "Error: Failed to rename folder - $_" } @@ -80,11 +80,11 @@ elseif ($config.options.enableForcedVersion -and $config.options.enableRegularVe $newForcedFolderName = "Chrome - $chromeVersion" + "_force_update" try { Rename-Item -Path $forceUpdateFolder -NewName $newForcedFolderName -ErrorAction Stop - Log-Message "Success: Folder renamed to $newForcedFolderName" + Log-Message "Info: Folder renamed to $newForcedFolderName" } catch { Log-Message "Error: Failed to rename folder - $_" } } else { - Log-Message "Warning: Chrome version could not be determined. Folders were not renamed." + Log-Message "Warn: Chrome version could not be determined. Folders were not renamed." } } diff --git a/config.json b/config.json index 38da536..b8756d0 100644 --- a/config.json +++ b/config.json @@ -2,7 +2,8 @@ "options": { "enableRegularVersion": true, "enableForcedVersion": false, - "enableNumberedVersion": false + "enableNumberedVersion": false, + "checkExist": false }, "logDateFormat": "dd/MM/yyyy HH:mm:ss" } \ No newline at end of file