diff --git a/Chrome Downloader.ps1 b/Chrome Downloader.ps1
index 0116337..13b9ddd 100644
--- a/Chrome Downloader.ps1
+++ b/Chrome Downloader.ps1
@@ -2,12 +2,27 @@
$configPath = "$PSScriptRoot\config.json"
$config = Get-Content -Path $configPath | ConvertFrom-Json
+# Get the date format from the configuration, or use the default format if not provided
+$dateFormat = $config.logDateFormat
+if (-not $dateFormat) {
+ $dateFormat = "dd/MM/yyyy HH:mm:ss"
+}
+
+# Function to log messages with the specified date format
+function Log-Message {
+ param (
+ [string]$message
+ )
+ $timestamp = Get-Date -Format $dateFormat
+ Write-Output "[$timestamp] - $message" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+}
+
# Log the start of the script
-Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Script initiation: Chrome Downloader" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+Log-Message "Script initiation: Chrome Downloader"
# Check if both options are disabled and log a message
if (-not $config.options.enableRegularVersion -and -not $config.options.enableForcedVersion) {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Configuration error: Both Regular and Forced versions are disabled. Please enable at least one option to proceed." | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Configuration error: Both Regular and Forced versions are disabled. Please enable at least one option to proceed."
exit
}
@@ -32,18 +47,18 @@ if ($config.options.enableRegularVersion) {
if (-not (Test-Path $filesFolder)) {
try {
New-Item -Path $filesFolder -ItemType Directory -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Directory creation: 'Chrome - VERSION' and 'Files' folder successfully created in $PSScriptRoot" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Directory creation: 'Chrome - VERSION' and 'Files' folder successfully created in $PSScriptRoot"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: Directory creation failed - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: Directory creation failed - $_"
}
}
# Copy items from source folder to destination folder
try {
Copy-Item -Path $sourceFolderRegular\* -Destination $destinationFolder -Recurse -Force -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Success: Regular Template successfully copied to $destinationFolder" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Success: Regular Template successfully copied to $destinationFolder"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: Failed to copy Regular Template - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: Failed to copy Regular Template - $_"
}
# Download 64-bit Chrome installer
@@ -51,9 +66,9 @@ if ($config.options.enableRegularVersion) {
$filePath1 = Join-Path -Path $filesFolder -ChildPath $fileName1
try {
Invoke-RestMethod -Uri $url1 -OutFile $filePath1 -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Download complete: 64-bit version of Chrome successfully downloaded to $filePath1" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Download complete: 64-bit version of Chrome successfully downloaded to $filePath1"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: 64-bit Chrome download failed - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: 64-bit Chrome download failed - $_"
}
# Download 32-bit Chrome installer
@@ -61,9 +76,9 @@ if ($config.options.enableRegularVersion) {
$filePath2 = Join-Path -Path $filesFolder -ChildPath $fileName2
try {
Invoke-RestMethod -Uri $url2 -OutFile $filePath2 -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Download complete: 32-bit version of Chrome successfully downloaded to $filePath2" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Download complete: 32-bit version of Chrome successfully downloaded to $filePath2"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: 32-bit Chrome download failed - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: 32-bit Chrome download failed - $_"
}
}
@@ -72,18 +87,18 @@ if ($config.options.enableForcedVersion) {
if (-not (Test-Path $forceUpdateFolder)) {
try {
New-Item -Path $forceUpdateFolder -ItemType Directory -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Directory creation: 'Chrome - VERSION_force_update' successfully created in $PSScriptRoot" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Directory creation: 'Chrome - VERSION_force_update' successfully created in $PSScriptRoot"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: Force update directory creation failed - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: Force update directory creation failed - $_"
}
}
# Copy items from forced source folder to force update folder
try {
Copy-Item -Path "$sourceFolderForced\*" -Destination $forceUpdateFolder -Recurse -Force -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Success: Forced Template successfully copied to $forceUpdateFolder" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Success: Forced Template successfully copied to $forceUpdateFolder"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: Failed to copy Forced Template - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: Failed to copy Forced Template - $_"
}
# If the regular version is not enabled, download 64-bit Chrome installer directly to the force update folder
@@ -92,9 +107,9 @@ if ($config.options.enableForcedVersion) {
$filePath1 = Join-Path -Path $forceUpdateFolder -ChildPath $fileName1
try {
Invoke-RestMethod -Uri $url1 -OutFile $filePath1 -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Download complete: 64-bit version of Chrome successfully downloaded to force update folder at $filePath1" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Download complete: 64-bit version of Chrome successfully downloaded to force update folder at $filePath1"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: 64-bit Chrome download to force update folder failed - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: 64-bit Chrome download to force update folder failed - $_"
}
} else {
# If the regular version is enabled, copy the downloaded 64-bit installer to the force update folder
@@ -103,12 +118,12 @@ if ($config.options.enableForcedVersion) {
if (Test-Path $filePath1) {
try {
Copy-Item -Path $filePath1 -Destination $forceUpdateFolder -Force -ErrorAction Stop
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Success: 64-bit version of Chrome copied to force update folder at $forceUpdateFolder" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Success: 64-bit version of Chrome copied to force update folder at $forceUpdateFolder"
} catch {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Error: Failed to copy 64-bit installer to force update folder - $_" | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Error: Failed to copy 64-bit installer to force update folder - $_"
}
} else {
- Write-Output "[$(Get-Date -Format "dd/MM/yyyy HH:mm:ss")] - Warning: 64-bit version of Chrome was not downloaded and could not be copied to force update folder." | Out-File -Append -FilePath "$PSScriptRoot\Log.txt" -Encoding utf8
+ Log-Message "Warning: 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 10efb45..7bf1a70 100644
--- a/README.md
+++ b/README.md
@@ -10,15 +10,61 @@ The script reads its configuration from a JSON file named `config.json` located
- `enableRegularVersion`: Boolean flag to enable the downloading of the regular version of Chrome.
- `enableForcedVersion`: Boolean flag to enable the downloading of the forced update version of Chrome.
+- `logDateFormat`: A string defining the format of timestamps in log messages.
-### Configuration File (`config.json`)
+#### Date Configuration
+
+##### `yyyy`: This specifier represents the year portion of the date. It uses four digits to represent the year. For example, 2024.
+
+##### `MM`: This specifier represents the month portion of the date. It uses two digits to represent the month, with leading zeros if necessary. For example, 05 represents May.
+
+##### `dd`: This specifier represents the day portion of the date. It uses two digits to represent the day of the month, with leading zeros if necessary. For example, 23.
+
+##### `HH`: This specifier represents the hour portion of the time in 24-hour format. It uses two digits to represent the hour, ranging from 00 to 23. For example, 14 represents 2 PM in 24-hour format.
+
+
+More info on HH format
+
+##### `HH` (24-hour format): When HH is used, it represents the hour portion of the time in a 24-hour format, where the hour is represented with two digits from 00 to 23. The HH specifier does not use AM/PM designators since it covers the full 24-hour range. Example: HH:mm:ss might output 14:30:00, representing 2:30 PM in 24-hour format.
+
+##### `hh` (12-hour format): When hh is used, it represents the hour portion of the time in a 12-hour format, where the hour is represented with one or two digits from 1 to 12. The hh specifier is typically used alongside the tt specifier (AM/PM designator) to indicate whether the time is in the AM or PM. Example: hh:mm:ss tt might output 02:30:00 PM, representing 2:30 PM.
+
+
+
+
+##### `mm`: This specifier represents the minute portion of the time. It uses two digits to represent the minutes, with leading zeros if necessary. For example, 30.
+
+##### `ss`: This specifier represents the second portion of the time. It uses two digits to represent the seconds, with leading zeros if necessary. For example, 45.
+
+##### `tt`: This specifier represents the AM/PM designator in a 12-hour time format. It is typically used alongside the hh specifier to indicate whether the time is in the AM or PM. For example, AM or PM.
+
+### Examples
+
+```json
+"logDateFormat": "yyyy'/'MM'/'dd hh:mm:ss tt"
+```
+Output: 2024/06/29 03:19:30 p.m.
+
+```json
+"logDateFormat": "MM/dd/yyyy HH:mm:ss"
+```
+Output: 06.29.2024 15:19:30
+
+```json
+"logDateFormat": "dd-MM-yyyy HH:mm:ss"
+```
+Output: 29-06-2024 15:19:30
+
+
+## Configuration File (`config.json`)
```json
{
"options": {
"enableRegularVersion": true,
"enableForcedVersion": false
- }
+ },
+ "logDateFormat": "yyyy'/'MM'/'dd hh:mm:ss tt"
}
```
## Script Usage
diff --git a/config.json b/config.json
index ba5329b..28ca3ed 100644
--- a/config.json
+++ b/config.json
@@ -1,6 +1,7 @@
{
- "options": {
- "enableRegularVersion": true,
- "enableForcedVersion": false
- }
- }
\ No newline at end of file
+ "options": {
+ "enableRegularVersion": true,
+ "enableForcedVersion": false
+ },
+ "logDateFormat": "dd/MM/yyyy HH:mm:ss"
+}
\ No newline at end of file