A practical standard for source control, install behavior, detection, dependencies, testing, and support of Win32 apps in Intune.
A package is a support contract
A Win32 app package is more than an installer wrapped for upload. It is a repeatable contract between an application owner, endpoint engineering, the deployment service, and support. That contract includes what is installed, in which context, how success is detected, what dependencies exist, how updates are handled, and what an operator should do when an installation fails.
Start with a controlled source directory and a recorded source. Keep vendor media, license material, and application secrets handled according to organizational policy; do not bake credentials or tenant-specific secrets into a package. Record the product, supported architecture and operating context, source version where known, vendor prerequisites, install and uninstall behavior, and the application owner. Store scripts and packaging notes under version control if the organization’s process supports it.
Prefer deterministic, silent install and uninstall commands with predictable exit behavior. Understand whether the installer launches child processes, requires a reboot, writes to a per-user location, or depends on a user session. A command that appears successful in an interactive administrator session may fail when the management agent runs it in a system context. Test the actual deployment context and representative device conditions.
Detection is the definition of installed
Detection rules are often the quiet source of repeated installs and false success. Choose a signal that represents the required state, not merely a file that can exist after a partial installation. A product code, versioned file, registry value, or custom detection script can be appropriate depending on the vendor and installation model. Document why the selected evidence is trustworthy and how it behaves after upgrade, repair, uninstall, and architecture changes.
If a script is used for detection, make its output and exit behavior unambiguous and test it with installed, absent, partially installed, and upgraded states. Keep the logic narrow and readable. Avoid relying on a file path or registry key that changes between releases unless the packaging process explicitly updates the rule. A detection rule is part of the release and must be reviewed whenever the application changes.
Test the combination of installer behavior and detection. A deployment may report success while the user cannot launch the application, or report failure after the product is installed because the detection signal is wrong. Capture both service-side reporting and device-side evidence. Do not “fix” a reporting problem by making detection broader until the user impact and actual state are understood.
- Use a controlled source and record package ownership and version intent.
- Test install and uninstall in the actual management context.
- Validate detection for absent, healthy, partial, upgraded, and removed states.
- Keep scripts free of secrets and make logs useful without exposing sensitive data.
Model dependencies and updates deliberately
Declare dependencies only when the order and relationship are real and testable. For example, if an application requires a runtime or a configuration component, define how that prerequisite is installed, detected, updated, and removed. A dependency chain adds operational coupling: if the prerequisite is unavailable or misdetected, the main app may never install. Document ownership and compatibility expectations.
Define supersedence or replacement behavior carefully. Test upgrade paths from the versions actually present in the organization, including whether user data and settings are preserved. Determine how the old version is removed, whether the vendor installer needs a specific sequence, and what happens if the upgrade is interrupted. Never assume that a new package automatically handles every historical install path.
For user-targeted and device-targeted apps, verify assignment intent and install context. A user application installed per-user may behave differently from a system-wide application. Consider shared devices, multiple profiles, device replacement, and users without local administrative rights. Confirm that licensing and access are handled through approved channels rather than embedding sensitive values in command lines or scripts.
Release with a test matrix and recovery plan
Test on clean and representative devices, with the intended architecture, network path, user context, and existing application state. Include at least one realistic upgrade or removal scenario. Record package hash or source revision where the internal process supports it, test date, device class, observed result, and known limitation. A one-device smoke test is useful, but it does not prove behavior across materially different populations.
Use a narrow assignment first and inspect the installation experience, reporting, and support route. Define whether an install failure blocks the user, whether a retry is safe, and what recovery steps are approved. If uninstall could remove user data or disrupt a business workflow, explain that risk and require appropriate owner approval before broad deployment.
When issues occur, change one variable at a time and preserve logs and timestamps. Correlate the deployment report with local installer evidence and the detection rule. Avoid asking users to run elevated commands or share complete logs containing personal data without an approved procedure. Once resolved, update the package notes and test case; otherwise the same failure is likely to be rediscovered by the next engineer.
Release checklist
The Intune Win32 app documentation explains packaging and management behavior, but supported installers and context differ by application. Review current platform requirements, file size and content preparation guidance, licensing, permissions, and tenant limits before release. Validate in a test scope and follow internal change controls. Application updates can affect critical workflows; do not widen an assignment solely because the portal shows a successful upload.
A defensible package lets another engineer answer what is being installed, why it is considered installed, who owns it, and how to recover. That clarity turns application delivery from a one-off craft exercise into a maintainable service.
- Source, commands, context, detection, dependencies, and owner are recorded.
- Install, upgrade, uninstall, and failure paths are tested on representative devices.
- Assignment begins with an approved pilot and a support-ready recovery path.
- Package documentation is updated with evidence and known limitations.
FURTHER READING
Microsoft Learn references
Use these product overviews alongside your tenant-specific validation. Microsoft documentation can evolve; confirm current prerequisites before making changes.