Custom Packaging
Upload your own installers — EXE, MSI, or scripts — and let Robopack automatically detect install commands, uninstall commands, and detection methods. Packages are tested on a virtual machine before deployment.
How it works
- Click Convert Package and upload your installer
- Robopack detects the input type (executable, MSI, script) and the installer platform (WixBurn, InnoSetup, Nullsoft, etc.)
- Based on the platform, Robopack suggests a silent install command
- With Analyze and Test enabled, a virtual machine is provisioned to verify everything works
VM testing workflow
When you upload a custom app with Analyze and Test enabled, Robopack:
- Uploads to secure storage
- Scans for viruses
- Provisions a virtual machine
- Installs the app and verifies the install command works
- Discovers the uninstall command
- Uninstalls the app and verifies cleanup
- Generates a detection method for Intune
- Reports any leftover files after uninstall
If fewer than expected files are removed during uninstall, the QA test fails. You can Suppress error if you know the behaviour is acceptable.
Packages that require user interaction, specific drivers, network resources, or licensing activation during installation may fail QA testing. Installers that are not silent-capable cannot be deployed through Robopack.
Supported installer types
| Type | Examples |
|---|---|
| .exe | Any installer framework — WixBurn, InnoSetup, Nullsoft, InstallShield, etc. |
| .msi | Windows Installer packages |
| Scripts | PowerShell, batch files |
Adding new versions of custom apps
To add a new version of an existing custom app to a patch flow:
- Upload the new installer version
- Wait for QA testing to complete
- Add the new version to the patch flow
- Configure wave settings
It is not possible to update the installer file within an existing custom package. You must upload a new package for each version.
Custom App Settings
Custom App Settings let you define configuration that is applied to some or all versions of an app. This means you configure your app once and have it take effect for every future version.
- Per-app — all settings are defined per app
- Global or per-tenant — each setting can apply to all tenants in your organisation, or be scoped to specific tenants to override the global configuration
Custom App Settings are managed in App Settings in the left menu.
Only one Custom App Setting can be applied per app per tenant. You cannot have different settings for different user groups within the same tenant.
What you can configure
| Setting | Description |
|---|---|
| Target version | Pin to a specific version. Leave empty to apply to all future versions |
| Target architecture | Restrict to a specific architecture or allow any |
| Target scope | Machine or User scope |
| Script template | Override the script template for this app (or inherit from the organisation default) |
| Signing certificate | Override the signing certificate |
| Apps to close | List of processes that should be closed before installation. Specify process names without the .exe extension (e.g. chrome not chrome.exe). Used by the Welcome dialog in Script Templates |
| Installer customization | Override install and uninstall commands — either modify the parameters or replace the entire PowerShell command |
| Registry values | Set registry values during installation (HKLM, HKCU, HKCR, HKU) |
| Files | Include files to be deployed to the device (user profile or machine locations) |
| Script accessory files | Include auxiliary files (e.g. licence keys, configuration files, MST transform files) that are available during installation but not copied to the device. Reference these in scripts using {{[supportFiles]}} |
| PowerShell script commands | Add custom PowerShell commands that run during installation (pre-install, post-install). Robopack provides custom variables and supports both PSADT v3 and v4 commands |
| Dependency control | Optionally disable dependencies being included for an app |
Script Accessory Files
Script Accessory Files let you include files that are available during installation but are not deployed to the end device. Common uses:
- Licence files —
.licfiles referenced during setup - MST transform files — for MSI customisation (e.g. SnagIt licensing)
- Configuration files —
.ini,.cfg, or.xmlfiles used by the installer
Reference these files in your install commands or PowerShell scripts using the {{[supportFiles]}} variable:
{{[supportFiles]}}\config.ini
Script Accessory Files have a size limit of approximately 100 MB.
Handling dependencies
Robopack does not yet natively support app dependencies for custom apps. If your app requires a prerequisite (e.g. .NET Desktop Runtime), you can handle it in the pre-install PowerShell command in Custom App Settings:
- Detect if the prerequisite is already installed
- If not, install it from a file included in Script Accessory Files
Detection methods
Robopack supports multiple detection methods for Intune:
- File-based — detect by file path and version
- Registry-based — detect by registry key and value
- MSI product code — detect by MSI product code
- PowerShell script — use a custom PowerShell script for detection. Scripts are automatically signed when uploaded to Intune using the same certificate as the installation script.
Detection operator
The default detection operator is Equals (exact version match). You can change this to Greater than or equals to in the patch flow settings if you want Intune to consider any version at or above the deployed version as detected.
App documentation
After testing, Robopack generates documentation including:
- Tested install command
- Tested uninstall command
- Detection method (file, registry, or MSI)
- Install and uninstall logs from the VM
- Leftover files report
Related
- Tutorial: Deploying Custom Apps
- Tutorial: Configure Custom App Settings
- Script Templates — customise the PSADT templates used for packaging
- Known Limitations