I'm deploying several products through Intune and need a dependable way to detect whether Win32 apps installed successfully, including checking the installed version. For example, I packaged Kyocera printer drivers as a Win32 app. The installation works when launched manually, but Intune reports the deployment as failed because I haven't found a detection rule that reliably identifies the installation.
I'd prefer not to detect only a file or folder, since that doesn't provide good version control. I'm looking for a reusable approach for PowerShell-based installers and other applications that don't provide an MSI. How do you normally design detection rules across an organization? Would creating and checking a registry key with an application version be a good solution?
2 Answers
For printer deployments, a PowerShell-based package can install the printer and then create a consistent registry value containing the product name and version. The detection script can check that registry path and compare the stored version with the version being deployed. This is more reliable than checking whether a random folder or file exists, and it works well for applications that aren’t MSI-based.
A common pattern is to have the installer script write a custom registry key when installation completes successfully, for example under a dedicated application-management path. Store the application name, architecture, and semantic version there, then use a PowerShell detection script to return success only when the key exists and the installed version is equal to or newer than the required version. Make sure the install script exits with a failure code if setup does not complete, so Intune doesn’t write a successful detection marker prematurely.
For the printer example, the same method can be combined with the printer’s actual installation or driver version if that information is available. The custom registry value should be treated as the deployment marker, while the script remains responsible for validating that the underlying installation succeeded.

That’s the kind of organization-wide approach I was looking for. Using a registry value with a controlled version seems much more reusable than checking individual files.