// Knowledge base of common Windows installer technologies and their silent // install/uninstall command lines. Command templates use placeholders: // {file} the installer file name/path // {productCode} the MSI product code (MSI/MSP) // {app} the installed app folder (operator fills in) // {packageName} the MSIX/AppX package name // Confidence reflects how reliably the technology can be inferred from a file // name alone; binary signature sniffing (Phase 5) raises it. export const INSTALLER_TECHNOLOGIES = [ { id: 'msi', label: 'Windows Installer (MSI)', extensions: ['.msi'], install: 'msiexec.exe /i "{file}" /qn /norestart', uninstall: 'msiexec.exe /x "{productCode}" /qn /norestart', psadtInstall: "Start-ADTMsiProcess -Action Install -FilePath '{file}'", psadtUninstall: "Start-ADTMsiProcess -Action Uninstall -ProductCode '{productCode}'", detection: 'msi', notes: 'MSI is silent with /qn. Use the product code for uninstall and detection.' }, { id: 'msp', label: 'Windows Installer Patch (MSP)', extensions: ['.msp'], install: 'msiexec.exe /p "{file}" /qn /norestart', uninstall: '', psadtInstall: "Start-ADTMsiProcess -Action Patch -FilePath '{file}'", detection: 'msi', notes: 'MSP applies a patch to an installed MSI.' }, { id: 'inno', label: 'Inno Setup', extensions: ['.exe'], hints: ['inno'], install: '"{file}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-', uninstall: '"%ProgramFiles%\\{app}\\unins000.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-'", detection: 'registry-uninstall', notes: 'Inno Setup uses /VERYSILENT; the uninstaller is unins000.exe in the install folder.' }, { id: 'nsis', label: 'NSIS (Nullsoft)', extensions: ['.exe'], hints: ['nsis'], install: '"{file}" /S', uninstall: '"%ProgramFiles%\\{app}\\uninstall.exe" /S', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '/S'", detection: 'registry-uninstall', notes: 'NSIS uses an uppercase /S for silent install.' }, { id: 'installshield', label: 'InstallShield', extensions: ['.exe'], hints: ['installshield'], install: '"{file}" /s /v"/qn"', uninstall: '"{file}" /s /x /v"/qn"', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '/s /v\"/qn\"'", detection: 'registry-uninstall', notes: 'InstallShield; older versions may require a recorded response file (.iss).' }, { id: 'wix-burn', label: 'WiX Burn bundle', extensions: ['.exe'], hints: ['bundle', 'burn'], install: '"{file}" /quiet /norestart', uninstall: '"{file}" /uninstall /quiet /norestart', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '/quiet /norestart'", detection: 'registry-uninstall', notes: 'WiX Burn bootstrapper uses /quiet /norestart.' }, { id: 'squirrel', label: 'Squirrel (Electron)', extensions: ['.exe'], hints: ['squirrel'], install: '"{file}" --silent', uninstall: '"{file}" --uninstall --silent', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '--silent'", detection: 'registry-uninstall', notes: 'Squirrel installers (many Electron apps) use --silent.' }, { id: 'msix', label: 'MSIX / AppX', extensions: ['.msix', '.msixbundle', '.appx', '.appxbundle'], install: 'Add-AppxProvisionedPackage -Online -PackagePath "{file}" -SkipLicense', uninstall: 'Remove-AppxProvisionedPackage -Online -PackageName "{packageName}"', psadtInstall: "Add-AppxProvisionedPackage -Online -PackagePath '{file}' -SkipLicense", detection: 'appx', notes: 'MSIX/AppX provisioned package; detection via Get-AppxPackage.' }, { id: 'exe', label: 'Generic EXE', extensions: ['.exe'], install: '"{file}" /S', uninstall: '', psadtInstall: "Start-ADTProcess -FilePath '{file}' -ArgumentList '/S'", detection: 'registry-uninstall', notes: 'Unknown EXE installer; confirm the silent switch with the vendor. Common switches: /S, /silent, /quiet, /VERYSILENT.' } ];