Skip to main content

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

  1. Click Convert Package and upload your installer
  2. Robopack detects the input type (executable, MSI, script) and the installer platform (WixBurn, InnoSetup, Nullsoft, etc.)
  3. Based on the platform, Robopack suggests a silent install command
  4. 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:

  1. Uploads to secure storage
  2. Scans for viruses
  3. Provisions a virtual machine
  4. Installs the app and verifies the install command works
  5. Discovers the uninstall command
  6. Uninstalls the app and verifies cleanup
  7. Generates a detection method for Intune
  8. 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.

note

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

TypeExamples
.exeAny installer framework — WixBurn, InnoSetup, Nullsoft, InstallShield, etc.
.msiWindows Installer packages
ScriptsPowerShell, batch files

Adding new versions of custom apps

To add a new version of an existing custom app to a patch flow:

  1. Upload the new installer version
  2. Wait for QA testing to complete
  3. Add the new version to the patch flow
  4. Configure wave settings
info

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.

warning

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

SettingDescription
Target versionPin to a specific version. Leave empty to apply to all future versions
Target architectureRestrict to a specific architecture or allow any
Target scopeMachine or User scope
Script templateOverride the script template for this app (or inherit from the organisation default)
Signing certificateOverride the signing certificate
Apps to closeList 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 customizationOverride install and uninstall commands — either modify the parameters or replace the entire PowerShell command
Registry valuesSet registry values during installation (HKLM, HKCU, HKCR, HKU)
FilesInclude files to be deployed to the device (user profile or machine locations)
Script accessory filesInclude 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 commandsAdd custom PowerShell commands that run during installation (pre-install, post-install). Robopack provides custom variables and supports both PSADT v3 and v4 commands
Dependency controlOptionally 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.lic files referenced during setup
  • MST transform files — for MSI customisation (e.g. SnagIt licensing)
  • Configuration files.ini, .cfg, or .xml files used by the installer

Reference these files in your install commands or PowerShell scripts using the {{[supportFiles]}} variable:

{{[supportFiles]}}\config.ini
note

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:

  1. Detect if the prerequisite is already installed
  2. 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