Table of Contents
admin

Deployment Guide

This guide explains common ways to deploy an MSI package, from interactive installation to fully automated rollout.

<PRODUCTNAME> is "idgard Sync". <USERNAME> is the Windows username of the target user.

Best practices

  • Keep deployment steps predictable and repeatable
  • Use logging for unattended installs
  • Validate the installation result after rollout

Installation

Full UI Installation (Next → Next → Finish)

Use this when a user installs manually on a workstation (user needs admin-rights).

Steps

  1. Double-click the .msi file.
  2. Follow the installer wizard.
  3. Click Next through the dialogs.
  4. Click Finish at the end.
Note

Best for

  • manual installs
  • Small-scale business
  • IT-assisted guided setup

Silent Installation (msiexec with no UI)

Use this for unattended deployment via scripts, Intune, SCCM, GPO, or RMM tools.

msiexec /i "setup.msi" /qn /norestart

Useful options

  • /i = install package
  • /qn = no UI (silent)
  • /norestart = do not restart automatically
  • /l*v "C:\Temp\install.log" = verbose logging

Example with logging:

msiexec /i "setup.msi" /qn /norestart /l*v "C:\Temp\install.log"
Note

Best for

  • installs requiring detailed logging
  • Mid-scale business
  • IT-centralized setup

Install with Custom Properties

Use MSI public properties (must be in UPPERCASE) to control installer behavior.

See Installer Custom Variables (MSI Public Properties) to see all custom properties of idgard Sync.

Example: Silent install with boolean MY_BOOLEAN_PROPERTY=1 - 1 to enabled a property (yes, true)

msiexec /i "setup.msi" /qn MY_BOOLEAN_PROPERTY=1

Example: Silent install with boolean MY_BOOLEAN_PROPERTY=0 - 0 to disable a property (no, false)

msiexec /i "setup.msi" /qn MY_BOOLEAN_PROPERTY=0

Example: Silent install with string MY_STRING_PROPERTY - wrap the entire NAME=Value pair in double quotes "NAME=My Value" when the value contains spaces

msiexec /i "setup.msi" /qn "MY_STRING_PROPERTY=Lorem Ipsum"

Common patterns

  • MY_BOOLEAN_PROPERTY=1 or MY_BOOLEAN_PROPERTY=0 (boolean)
  • "MY_STRING_PROPERTY=Lorem Ipsum" (string with spaces — quote the whole pair)

Post-Deployment Configuration via Config Files

After MSI deployment, apply environment-specific settings using config files.

We have a special config folder C:\Users\<USERNAME>\AppData\Local\<PRODUCTNAME>\config.

Typical flow

  1. Deploy MSI package.
  2. Copy configuration file(s) (for example: .json, .config, .xml, .ini) to config folder.
  3. Set secure values (certs, tokens, endpoints) via secret management/tooling.
  4. Restart app.

Example script flow

msiexec /i "setup.msi" /qn /norestart
Copy-Item "C:\IT\configs\my-config.json" "C:\Users\<USERNAME>\AppData\Local\<PRODUCTNAME>\configs\my-config.json" -Force

# Restart Application, over the start menu

Uninstallation

Interactive Uninstallation by the Application User

When the logged-on user uninstalls idgard Sync for themselves — via Settings → Apps or the Control Panel — all user-specific data is cleaned up automatically:

  • Sync root registration
  • Registry entries
  • idgard Sync drive
  • Context menu extension

This is the recommended uninstall path for end users.

Silent Uninstallation or Uninstallation by a Different User

When the application is uninstalled silently (e.g. via Intune, SCCM, GPO, or msiexec /qn) or by an administrator who is not the idgard Sync user, the MSI runs without access to the user session and cannot clean up user-specific data.

The following user-specific data remains on the machine for every user who was actively using idgard Sync on that machine and must be removed separately for each of them:

  • Sync root registration
  • Registry entries under HKCU
  • idgard Sync drive
  • Context menu extension

Silent uninstall command

msiexec /x "setup.msi" /qn /norestart

Manual Cleanup per User Account

Perform the following steps for each affected user in an elevated PowerShell session.

Note

Replace <USERNAME> with the Windows user name and <SID> with their security identifier.
To list all local users with their SIDs: Get-LocalUser | Select-Object Name, SID

1. Delete application data

Remove-Item "C:\Users\<USERNAME>\AppData\Local\<PRODUCTNAME>" -Recurse -Force

2. Remove registry settings

If the user is not currently logged on, load their hive first:

& "C:\Windows\System32\reg.exe" load "HKU\<SID>" "C:\Users\<USERNAME>\NTUSER.DAT"
Note

The name given in reg.exe load (here <SID>) must be used consistently in all subsequent commands. You may use any unique name — using the SID avoids conflicts.

Delete the application settings and the autostart entry:

& "C:\Windows\System32\reg.exe" delete "HKU\<SID>\Software\<PRODUCTNAME>" /f
& "C:\Windows\System32\reg.exe" delete "HKU\<SID>\Software\Microsoft\Windows\CurrentVersion\Run" /v "<PRODUCTNAME>" /f
& "C:\Windows\System32\reg.exe" delete "HKU\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run" /v "<PRODUCTNAME>" /f

Unload the hive afterwards if you loaded it manually:

& "C:\Windows\System32\reg.exe" unload "HKU\<SID>"

3. Remove the context menu extension

Get-AppxPackage -Name "Idgard.Sync.WinShell" -User <SID> | Remove-AppxPackage -User <SID>

4. Unregister the sync root

The sync root registration is stored in HKLM and can be deleted directly by an administrator. The key name follows the pattern idgard!<SID>!<USERNAME>:

& "C:\Windows\System32\reg.exe" delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\idgard!<SID>!<USERNAME>" /f

5. Remove stale sync root namespace entry

After uninstall, a stale entry may remain in the user's shell namespace registry, causing Explorer to show a ghost entry in the navigation pane.

First, list all entries under the NameSpace key to identify the idgard entry by its display name:

New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS -ErrorAction SilentlyContinue | Out-Null
Get-ChildItem "HKU:\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace" |
    ForEach-Object {
        [PSCustomObject]@{
            GUID        = $_.PSChildName
            DisplayName = (Get-ItemProperty $_.PSPath).'(default)'
        }
    }

Note the GUID of the idgard entry from the output, then delete it:

& "C:\Windows\System32\reg.exe" delete "HKU\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\<GUID>" /f