Documentation / Knowledge Base
Enclave appears installed twice on Windows¶
Symptoms¶
After updating Enclave, two entries appear in Apps > Installed apps (also known as Programs and Features or Add or Remove Programs on older versions of Windows):
| Entry | Installer type |
|---|---|
| Enclave | Added by the Interactive GUI installer, or by the Unattended EXE installer |
| Enclave Agent | Added by the Unattended MSI installer |
Only one copy of Enclave is actually installed on the system. Enclave is functioning correctly and running the newer version.
Cause¶
Enclave provides two installation methods on Windows. The interactive installer (setup.exe) is designed for individual workstations and includes a GUI that walks the user through setup where there is no centralised management tooling available, and an unattended installer is also available as either an MSI package or EXE, designed for automated deployment at scale via RMM platforms, Group Policy, or via the Enclave PowerShell deployment script. The two methods also differ in how updates are handled: the interactive installer prompts end users when a new version is available, whereas unattended installations suppress update notifications and expect updates to be managed by an administrator's deployment tooling. See Automatic Updates for more details.
Each installer registers itself under a different name and product code in the Windows registry:
| Interactive installer | Unattended EXE | Unattended MSI | |
|---|---|---|---|
| Product display name | Enclave |
Enclave |
Enclave Agent |
| Product code | {fec09b33-daa5-40ad-86c8-a02f50cd35f2} |
Unique per build | Unique per build |
| Registry location | HKLM\...\Uninstall\ |
HKLM\...\WOW6432Node\...\Uninstall\ |
HKLM\...\Uninstall\ |
The interactive installer checks for an existing unattended installation and blocks if one is found. However, the unattended MSI does not check for an existing interactive or unattended EXE installation. When the unattended MSI runs on a system where Enclave was originally installed by either the interactive installer or the unattended EXE, it successfully installs the new version but leaves the previous installer's registry entry behind.
The result is two entries pointing to the same single installation of Enclave. Both reference the same location on disk (C:\Program Files\Enclave Networks\Enclave\Agent\bin\enclave.exe) and only the newer version is present. This is an oversight and we plan to resolve this issue in a future version of the unattended installer.
How to confirm¶
First, verify that the unattended installer is present and Enclave is running the expected version. Open an administrator Command Prompt and run: enclave version. Confirm the version shown matches the version listed against the Enclave Agent entry in Apps > Installed apps, if it does not and there are two versions of Enclave installed, please contact the Enclave support team.
If the version shown by enclave version matches the reported version of Enclave Agent in Installed Apps, the orphaned entry is from a previous installer type. There are two possible sources depending on how Enclave was originally installed.
Check for an orphaned interactive installer entry¶
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{fec09b33-daa5-40ad-86c8-a02f50cd35f2}" /v DisplayName
- If this returns
Enclave, that is the orphaned entry from the interactive installer, which is now superseded by the unattended installation. Follow Resolution — Interactive installer below to remove it.
Check for an orphaned unattended EXE entry¶
If the interactive installer key was not found, the orphaned entry may be from a previous installation using the unattended EXE. Because the unattended EXE generates a unique product code per build, search for it by name:
reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /s /f "Enclave"
If this returns a key with DisplayName: Enclave and a BundleCachePath referencing enclave-installer-win-x64.exe in the Package Cache, that is the orphaned entry from the unattended EXE. Note the GUID shown in the key path and follow Resolution — Unattended EXE below to remove it.
Resolution¶
No restart is required and Enclave does not need to be stopped. After removing the orphaned entry, refresh Apps > Installed apps to confirm that only the Enclave Agent entry remains.
Interactive installer¶
If the confirmation steps identified an orphaned interactive installer entry, remove it by running:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{fec09b33-daa5-40ad-86c8-a02f50cd35f2}" /f
Unattended EXE¶
If the confirmation steps identified an orphaned unattended EXE entry, remove it using the GUID shown in the registry search results. For example, if the search returned a key under {4690cf85-c134-4525-a21e-b404f664ffe5}:
reg delete "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{4690cf85-c134-4525-a21e-b404f664ffe5}" /f
Replace the GUID with the one found on your system.
Applying the fix at scale¶
If you are managing multiple endpoints and need to clean up orphaned entries across your fleet, you can add the following script to your RMM platform as a remediation task, or append it to your existing Enclave deployment script:
# Remove the interactive installer's orphaned registry entry, if present
$interactiveInstallerKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{fec09b33-daa5-40ad-86c8-a02f50cd35f2}"
if (Test-Path $interactiveInstallerKey) {
Remove-Item -Path $interactiveInstallerKey -Force
Write-Host "Removed orphaned 'Enclave' entry (interactive installer)."
}
# Remove the unattended EXE's orphaned registry entry, if present
$wow6432Uninstall = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
Get-ChildItem -Path $wow6432Uninstall | ForEach-Object {
$displayName = (Get-ItemProperty -Path $_.PSPath -Name "DisplayName" -ErrorAction SilentlyContinue).DisplayName
$bundleCache = (Get-ItemProperty -Path $_.PSPath -Name "BundleCachePath" -ErrorAction SilentlyContinue).BundleCachePath
if ($displayName -eq "Enclave" -and $bundleCache -like "*enclave-installer*") {
Remove-Item -Path $_.PSPath -Recurse -Force
Write-Host "Removed orphaned 'Enclave' entry (unattended EXE): $($_.PSChildName)"
}
}
This is safe to run on all endpoints. On systems without an orphaned entry, the script will do nothing.
Having problems? Contact us at support@enclave.io or visit our support options.
Published July 29, 2026