Detectieregels in Intune uitgelegd
Hoe ziet Intune of een Win32-app geïnstalleerd is? De vier typen detectieregels (MSI, bestand, register, script), wanneer je welke kiest en valkuilen.
Bijgewerkt op · 3 min. lezen
Een detectieregel vertelt Microsoft Intune hoe het kan controleren of een Win32-app op een apparaat staat. Intune gebruikt die regel vóór de installatie (staat de app er al?) en erna (is het gelukt?). Is de regel verkeerd, dan krijg je de bekende klachten: een app die als "mislukt" wordt gemeld terwijl hij gewoon werkt, of een installatie die elke paar uur opnieuw start.
De vier typen
1. MSI-productcode
Elke MSI heeft een unieke productcode in de vorm {12345678-ABCD-1234-ABCD-1234567890AB}. Intune kijkt of dat product geïnstalleerd is, en optioneel of de versie gelijk of hoger is.
- Gebruik bij: MSI-installers. Dit is de betrouwbaarste regel.
- Let op: bij een nieuwe versie verandert de productcode vaak. Pas de regel dan aan.
2. Bestand of map
Intune controleert of een bestand of map bestaat, of vergelijkt eigenschappen zoals de bestandsversie, grootte of wijzigingsdatum.
- Voorbeeld: map
C:\Program Files\MijnApp, bestandapp.exe, controle Bestandsversie groter of gelijk aan 2.4.0. - Gebruik bij: EXE-installers met een vaste installatiemap.
- Let op: een 32-bit app op 64-bit Windows staat in
C:\Program Files (x86). Zet dan de optie 32-bit locatie op 64-bit systemen aan, of gebruik direct het juiste pad. Omgevingsvariabelen als%ProgramFiles%mogen ook.
3. Register
Intune kijkt naar een registersleutel of -waarde, bijvoorbeeld onder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<app>. Je kunt controleren of de sleutel bestaat, of een waarde vergelijken als tekst, getal of versie.
- Gebruik bij: installers die een eigen registersleutel met versienummer aanmaken.
- Let op: ook hier bestaat de 32-bit-variant (
WOW6432Node).
4. PowerShell-script
Voor lastige gevallen schrijf je zelf een controle. De app geldt als geïnstalleerd als het script exitcode 0 geeft én iets naar STDOUT schrijft:
$exe = 'C:\Program Files\MijnApp\app.exe'
if ((Test-Path $exe) -and ([version](Get-Item $exe).VersionInfo.FileVersion -ge [version]'2.4.0')) {
Write-Output 'Geïnstalleerd'
exit 0
}
exit 1
- Let op: een script kan niet gecombineerd worden met andere regels. Het draait standaard als 64-bit proces onder SYSTEM.
Meerdere regels
Bij de typen MSI, bestand en register kun je meerdere regels toevoegen. Ze moeten dan allemaal kloppen (EN). Handig om bijvoorbeeld zowel een bestand als een registerwaarde te controleren.
Welke kies je?
| Situatie | Beste detectieregel |
|---|---|
| MSI-installer | MSI-productcode, met versie ≥ |
| EXE met vaste installatiemap | Bestand, met bestandsversie ≥ |
| App zonder versie in het bestand | Register (Uninstall-sleutel, DisplayVersion) |
| Per-gebruiker installatie of complexe logica | PowerShell-script |
Tip: controleer altijd op de versie en niet alleen op het bestaan. Anders ziet Intune een oude versie als "geïnstalleerd" en werkt een update via supersedence niet goed.
Veelgemaakte fouten
- Controleren op een pad dat per taal of gebruiker verschilt.
- De versie in de regel niet bijwerken na een update.
- Een script dat wel exitcode 0 geeft, maar niets naar STDOUT schrijft (Intune ziet dat als "niet gevonden").
Program FilesversusProgram Files (x86)door elkaar halen.
Automatisch goed ingesteld
Rol je apps uit via App-Packager, dan worden detectieregels voor WinGet-apps automatisch ingesteld op basis van de catalogusgegevens. Bij een eigen MSI lezen we de productcode en versie zelf uit en stellen we de detectieregel voor. Voor eigen apps kies je in een formulier uit alle vier de typen, inclusief versievergelijking en 32-bit-opties. Zie ook Win32-app maken voor Intune.
Laat App-Packager het werk doen
Kies een app uit 15.000+ WinGet-apps of upload je eigen installer. Wij verpakken, uploaden en houden hem up-to-date in Intune.
