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.
This commit is contained in:
Olai Vike Bøe 2024-05-28 13:54:23 +02:00
parent 8dbd6d8d16
commit 55863336f0
4 changed files with 44 additions and 20 deletions

View file

@ -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."
}
}
}

View file

@ -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

View file

@ -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."
}
}

View file

@ -2,7 +2,8 @@
"options": {
"enableRegularVersion": true,
"enableForcedVersion": false,
"enableNumberedVersion": false
"enableNumberedVersion": false,
"checkExist": false
},
"logDateFormat": "dd/MM/yyyy HH:mm:ss"
}