Bug Report: Duplicate Uninstall Entry After Auto-Update on Windows
Bug Report: Duplicate Uninstall Entry After Auto-Update on Windows
Report ID: (to be assigned)
Zotero Version: 9.0.4 (x64 en-US)
OS: Windows 11 (Build 26200)
Installation Path: D:\ProgramFiles\Zotero
---
Summary
After Zotero auto-updated from 9.0.3 to 9.0.4, the old uninstall registry entry under HKLM was not removed, while a new entry was written under HKCU. This causes third-party uninstaller tools (e.g., Geek Uninstaller) and Windows "Apps & Features" to display two separate Zotero entries for what is actually a single installation.
---
Steps to Reproduce
1. Install Zotero 9.0.3 (x64 en-US) on Windows 11 to a custom directory (D:\ProgramFiles\Zotero).
2. Allow Zotero to auto-update to 9.0.4 via Help -> "Check for Updates" or automatic background update.
3. Open Geek Uninstaller (or Windows Settings -> Apps -> Installed apps).
4. Observe that two Zotero entries appear, with different version numbers.
---
Expected Behavior
Only one uninstall entry should exist, reflecting the currently installed version (9.0.4).
---
Actual Behavior
Two entries are present:
Registry Hive 1: HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
Subkey Name: Zotero 9.0.3 (x64 en-US)
Version: 9.0.3
Install Location: D:\ProgramFiles\Zotero
Registry Hive 2: HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
Subkey Name: Zotero 9.0.4 (x64 en-US)
Version: 9.0.4
Install Location: D:\ProgramFiles\Zotero
Both entries point to the same installation directory and share the same UninstallString:
D:\ProgramFiles\Zotero\uninstall\helper.exe
---
Evidence
Screenshot: Attached image shows the duplicate entries in Geek Uninstaller.
Registry Verification (PowerShell):
HKLM entry (old version):
PS> Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall" |
Get-ItemProperty | Where-Object { $_.DisplayName -like "*Zotero*" } |
Select-Object PSChildName, DisplayVersion, InstallLocation
Result:
PSChildName DisplayVersion InstallLocation
----------- -------------- ---------------
Zotero 9.0.3 (x64 en-US) 9.0.3 D:\ProgramFiles\Zotero
HKCU entry (current version):
PS> Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall" |
Get-ItemProperty | Where-Object { $_.DisplayName -like "*Zotero*" } |
Select-Object PSChildName, DisplayVersion, InstallLocation
Result:
PSChildName DisplayVersion InstallLocation
----------- -------------- ---------------
Zotero 9.0.4 (x64 en-US) 9.0.4 D:\ProgramFiles\Zotero
---
Impact
- User confusion: Appears as if Zotero is installed twice.
- Uninstaller risk: Users may accidentally trigger uninstallation thinking they are removing a duplicate, when both entries reference the same program.
- Registry clutter: Old entries accumulate over multiple update cycles.
---
Workaround (for users)
Manually delete the stale HKLM registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Zotero 9.0.3 (x64 en-US)
Or use Geek Uninstaller's "Delete Entry" function on the older version (avoids running the actual uninstaller).
---
Suggested Fix
The updater should ensure that when a new uninstall entry is written (especially under a different hive like HKCU), the previous entry under HKLM is removed if it points to the same installation directory. Alternatively, the installer/updater should consistently use the same registry hive for uninstall entries.
---
Additional Context
- This is a single-user Windows installation with Zotero installed to a non-default drive (D:\).
- The issue appeared immediately after the auto-update from 9.0.3 to 9.0.4.
- This behavior is reminiscent of Firefox/Gecko-based updater behavior, where registry cleanup during updates can be inconsistent.
Report ID: (to be assigned)
Zotero Version: 9.0.4 (x64 en-US)
OS: Windows 11 (Build 26200)
Installation Path: D:\ProgramFiles\Zotero
---
Summary
After Zotero auto-updated from 9.0.3 to 9.0.4, the old uninstall registry entry under HKLM was not removed, while a new entry was written under HKCU. This causes third-party uninstaller tools (e.g., Geek Uninstaller) and Windows "Apps & Features" to display two separate Zotero entries for what is actually a single installation.
---
Steps to Reproduce
1. Install Zotero 9.0.3 (x64 en-US) on Windows 11 to a custom directory (D:\ProgramFiles\Zotero).
2. Allow Zotero to auto-update to 9.0.4 via Help -> "Check for Updates" or automatic background update.
3. Open Geek Uninstaller (or Windows Settings -> Apps -> Installed apps).
4. Observe that two Zotero entries appear, with different version numbers.
---
Expected Behavior
Only one uninstall entry should exist, reflecting the currently installed version (9.0.4).
---
Actual Behavior
Two entries are present:
Registry Hive 1: HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
Subkey Name: Zotero 9.0.3 (x64 en-US)
Version: 9.0.3
Install Location: D:\ProgramFiles\Zotero
Registry Hive 2: HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
Subkey Name: Zotero 9.0.4 (x64 en-US)
Version: 9.0.4
Install Location: D:\ProgramFiles\Zotero
Both entries point to the same installation directory and share the same UninstallString:
D:\ProgramFiles\Zotero\uninstall\helper.exe
---
Evidence
Screenshot: Attached image shows the duplicate entries in Geek Uninstaller.
Registry Verification (PowerShell):
HKLM entry (old version):
PS> Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall" |
Get-ItemProperty | Where-Object { $_.DisplayName -like "*Zotero*" } |
Select-Object PSChildName, DisplayVersion, InstallLocation
Result:
PSChildName DisplayVersion InstallLocation
----------- -------------- ---------------
Zotero 9.0.3 (x64 en-US) 9.0.3 D:\ProgramFiles\Zotero
HKCU entry (current version):
PS> Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall" |
Get-ItemProperty | Where-Object { $_.DisplayName -like "*Zotero*" } |
Select-Object PSChildName, DisplayVersion, InstallLocation
Result:
PSChildName DisplayVersion InstallLocation
----------- -------------- ---------------
Zotero 9.0.4 (x64 en-US) 9.0.4 D:\ProgramFiles\Zotero
---
Impact
- User confusion: Appears as if Zotero is installed twice.
- Uninstaller risk: Users may accidentally trigger uninstallation thinking they are removing a duplicate, when both entries reference the same program.
- Registry clutter: Old entries accumulate over multiple update cycles.
---
Workaround (for users)
Manually delete the stale HKLM registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Zotero 9.0.3 (x64 en-US)
Or use Geek Uninstaller's "Delete Entry" function on the older version (avoids running the actual uninstaller).
---
Suggested Fix
The updater should ensure that when a new uninstall entry is written (especially under a different hive like HKCU), the previous entry under HKLM is removed if it points to the same installation directory. Alternatively, the installer/updater should consistently use the same registry hive for uninstall entries.
---
Additional Context
- This is a single-user Windows installation with Zotero installed to a non-default drive (D:\).
- The issue appeared immediately after the auto-update from 9.0.3 to 9.0.4.
- This behavior is reminiscent of Firefox/Gecko-based updater behavior, where registry cleanup during updates can be inconsistent.
Upgrade Storage