Skip to content

Commit 7baef56

Browse files
committed
Release v1.1.1 app icon
1 parent 0038546 commit 7baef56

7 files changed

Lines changed: 54 additions & 8 deletions

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## v1.1.1 - 2026-05-06
4+
5+
Icon polish release.
6+
7+
### Added
8+
9+
- Custom multi-size Windows icon for the tray app, Start Menu shortcuts, and Apps and Features entry.
10+
- 256px PNG preview source for the app icon under `assets`.
11+
12+
### Changed
13+
14+
- Tray app now loads `assets\gw-router-logger.ico` instead of the generic Windows application icon.
15+
- Installer now copies the icon assets and applies the icon to created shortcuts and uninstall metadata.
16+
317
## v1.1.0 - 2026-05-06
418

519
Tray application release.

GW-Router-Logger.Tray.ps1

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ param(
1212
# original CLI script intact for users who prefer the menu-driven terminal flow.
1313

1414
$script:AppName = 'GW Router Logger'
15-
$script:Version = '1.1.0'
15+
$script:Version = '1.1.1'
1616
$script:Publisher = 'Ghostwheel'
1717
$script:DefaultUdpPort = 514
1818
$script:DefaultTcpPort = 514
@@ -104,6 +104,24 @@ function Get-AppLogPath {
104104
return Join-Path -Path (Get-AppLogRoot) -ChildPath 'app.log'
105105
}
106106

107+
function Get-AppIconPath {
108+
return Join-Path -Path (Join-Path -Path (Get-ScriptRootPath) -ChildPath 'assets') -ChildPath 'gw-router-logger.ico'
109+
}
110+
111+
function Get-AppIcon {
112+
$iconPath = Get-AppIconPath
113+
if (Test-Path -LiteralPath $iconPath) {
114+
try {
115+
return New-Object System.Drawing.Icon($iconPath)
116+
}
117+
catch {
118+
Write-AppLog -Message ('App icon load failed: {0}' -f $_.Exception.Message) -Diagnostic
119+
}
120+
}
121+
122+
return [System.Drawing.SystemIcons]::Application
123+
}
124+
107125
function Rotate-AppLog {
108126
$path = Get-AppLogPath
109127
if (-not (Test-Path -LiteralPath $path)) {
@@ -281,6 +299,10 @@ function Sync-StartupShortcut {
281299
$shortcut.Arguments = '-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Sta -File "{0}"' -f $PSCommandPath
282300
$shortcut.WorkingDirectory = Get-ScriptRootPath
283301
$shortcut.Description = 'Start GW Router Logger in the notification area'
302+
$iconPath = Get-AppIconPath
303+
if (Test-Path -LiteralPath $iconPath) {
304+
$shortcut.IconLocation = $iconPath
305+
}
284306
$shortcut.Save()
285307
}
286308
catch {
@@ -1621,7 +1643,7 @@ try {
16211643

16221644
Build-ContextMenu
16231645
$script:NotifyIcon = New-Object System.Windows.Forms.NotifyIcon
1624-
$script:NotifyIcon.Icon = [System.Drawing.SystemIcons]::Application
1646+
$script:NotifyIcon.Icon = Get-AppIcon
16251647
$script:NotifyIcon.Text = $script:AppName
16261648
$script:NotifyIcon.ContextMenuStrip = $script:ContextMenu
16271649
$script:NotifyIcon.Visible = $true

GW-Router-Logger.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ catch {
1414
# These script-scoped values act as the main tuning points for future maintenance.
1515
# Keeping them together makes it easier to adjust behavior without searching the file.
1616
$script:AppName = 'GW Router Logger'
17-
$script:Version = '1.1.0'
17+
$script:Version = '1.1.1'
1818
$script:MaxCompressedBytes = 100MB
1919
$script:ActiveLogRotateBytes = 5MB
2020
$script:ActiveLogRotateMinutes = 60

Install-GWRouterLogger.ps1

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ param(
99

1010
$ErrorActionPreference = 'Stop'
1111
$appName = 'GW Router Logger'
12-
$version = '1.1.0'
12+
$version = '1.1.1'
1313
$publisher = 'Ghostwheel'
1414

1515
function Test-IsAdministrator {
@@ -30,6 +30,7 @@ function New-AppShortcut {
3030
param(
3131
[string] $ShortcutPath,
3232
[string] $TargetScript,
33+
[string] $IconPath,
3334
[switch] $StartListener
3435
)
3536

@@ -44,6 +45,9 @@ function New-AppShortcut {
4445
$shortcut.Arguments = $arguments
4546
$shortcut.WorkingDirectory = Split-Path -Parent $TargetScript
4647
$shortcut.Description = 'Run GW Router Logger in the notification area'
48+
if (-not [string]::IsNullOrWhiteSpace($IconPath) -and (Test-Path -LiteralPath $IconPath)) {
49+
$shortcut.IconLocation = $IconPath
50+
}
4751
$shortcut.Save()
4852
}
4953

@@ -77,11 +81,17 @@ foreach ($file in $files) {
7781
Copy-Item -LiteralPath $source -Destination (Join-Path -Path $installRoot -ChildPath $file) -Force
7882
}
7983

84+
$sourceAssets = Join-Path -Path $sourceRoot -ChildPath 'assets'
85+
if (Test-Path -LiteralPath $sourceAssets) {
86+
Copy-Item -LiteralPath $sourceAssets -Destination (Join-Path -Path $installRoot -ChildPath 'assets') -Recurse -Force
87+
}
88+
8089
$programs = [Environment]::GetFolderPath('Programs')
8190
$shortcutFolder = Ensure-Directory -Path (Join-Path -Path $programs -ChildPath 'GW Router Logger')
8291
$trayScript = Join-Path -Path $installRoot -ChildPath 'GW-Router-Logger.Tray.ps1'
83-
New-AppShortcut -ShortcutPath (Join-Path -Path $shortcutFolder -ChildPath 'GW Router Logger.lnk') -TargetScript $trayScript
84-
New-AppShortcut -ShortcutPath (Join-Path -Path $shortcutFolder -ChildPath 'GW Router Logger - Start Listener.lnk') -TargetScript $trayScript -StartListener
92+
$iconPath = Join-Path -Path (Join-Path -Path $installRoot -ChildPath 'assets') -ChildPath 'gw-router-logger.ico'
93+
New-AppShortcut -ShortcutPath (Join-Path -Path $shortcutFolder -ChildPath 'GW Router Logger.lnk') -TargetScript $trayScript -IconPath $iconPath
94+
New-AppShortcut -ShortcutPath (Join-Path -Path $shortcutFolder -ChildPath 'GW Router Logger - Start Listener.lnk') -TargetScript $trayScript -IconPath $iconPath -StartListener
8595

8696
$uninstallScript = Join-Path -Path $installRoot -ChildPath 'Uninstall-GWRouterLogger.ps1'
8797
$uninstallCommand = '"{0}" -NoProfile -ExecutionPolicy Bypass -File "{1}"' -f "$env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe", $uninstallScript
@@ -102,7 +112,7 @@ New-ItemProperty -Path $uninstallRoot -Name DisplayName -Value $appName -Propert
102112
New-ItemProperty -Path $uninstallRoot -Name DisplayVersion -Value $version -PropertyType String -Force | Out-Null
103113
New-ItemProperty -Path $uninstallRoot -Name Publisher -Value $publisher -PropertyType String -Force | Out-Null
104114
New-ItemProperty -Path $uninstallRoot -Name InstallLocation -Value $installRoot -PropertyType String -Force | Out-Null
105-
New-ItemProperty -Path $uninstallRoot -Name DisplayIcon -Value "$env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force | Out-Null
115+
New-ItemProperty -Path $uninstallRoot -Name DisplayIcon -Value $iconPath -PropertyType String -Force | Out-Null
106116
New-ItemProperty -Path $uninstallRoot -Name UninstallString -Value $uninstallCommand -PropertyType String -Force | Out-Null
107117
New-ItemProperty -Path $uninstallRoot -Name QuietUninstallString -Value ($uninstallCommand + ' -Quiet') -PropertyType String -Force | Out-Null
108118
New-ItemProperty -Path $uninstallRoot -Name EstimatedSize -Value $estimatedSize -PropertyType DWord -Force | Out-Null

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
`GW Router Logger` is a PowerShell syslog collector for Windows, designed for home labs, residential routers, and small-network troubleshooting.
44

5-
Current release: `v1.1.0`
5+
Current release: `v1.1.1`
66

77
It focuses on the things that usually break first on normal Windows machines: elevation, pathing, firewall access, bind-address selection, log rollover, and clear on-screen status.
88

assets/gw-router-logger-256.png

13.1 KB
Loading

assets/gw-router-logger.ico

26 KB
Binary file not shown.

0 commit comments

Comments
 (0)