Deploying, installing, and managing applications is a key part of macOS device management for IT teams. While apps from the Apple App Store can be distributed using Apple VPP, organizations often need to deploy enterprise (in-house) applications or third-party installers such as Zoom or Firefox using PKG files.
Scalefusion simplifies this process through its Enterprise Store, enabling IT admins to securely distribute both signed and unsigned PKG files to managed macOS devices. This guide walks you through the complete process of uploading, configuring, publishing, and monitoring PKG-based application deployments using Scalefusion.
Pre-requisites
Scalefusion-managed macOS device.
Suitable Scalefusion Plan that supports Enterprise Store. To know more about this, please visit here.
PKG file of the app to be installed
On Scalefusion Dashboard, under Utilities, the option Install via Agent should be selected as PKG Installation method

Scalefusion MDM Client’s (agent app for macOS) latest version v5.11.14(574) or above should be installed on devices
Step 1: Uploading a PKG file
Once you have the app information, the next steps are very easy, and if you are familiar with the Scalefusion Enterprise store for other platforms, then they are pretty much the same. Follow the steps below,
Sign In to Scalefusion Dashboard. Navigate to Application Management > Enterprise Store
Click on Upload New App > Upload macOS App

In the Upload macOS app window, choose Upload PKG file to upload the pkg file.

In the Upload wizard, you can upload a local file from your computer or provide a link to an external downloadable PKG file hosted in Amazon S3 or some other cloud storage. Click Next once done, which would upload and parse the file for its validity.

If the PKG file being uploaded is signed, then you will see the following screen asking you to confirm the App Details. You can change or provide the app details that we obtained in Step 1 and click SAVE.

Make sure to update the App Name, Bundle ID, and App Version, If they are not correct, then the Installation will succeed, but the installed status will not be updated on the Scalefusion Dashboard.
The logo is an optional item and for your reference on the Dashboard only. It has NO IMPACT on installation.
Once the app is uploaded, it will appear in the list of applications
You can choose category for the app by selecting the category from drop-down below app title, on the right panel.

Step 2: Create Install Configurations
Now when apps are added, next step is to create install configurations for the app. To do so,
Click on View Details link below the app card, for which you want to create app configurations. This brings up the app panel on the right.
Here, you will see two tabs, viz.,
App Information: Contains a brief description of the app and a link to Create Install Configuration
Install Configs: If any configurations are created, they are listed here. It also contains CREATE link to create Install Configuration.
You can either click on Create Install Config button on App Information or CREATE button under Install Configurations. Both open the Configure app window wherein you specify details to create App Install configurations.

Configurations: Clicking on create brings up the Create New Install Config window. Following are the settings you need to configure for the app. Click Save after configuring the settings.
Install Settings

Install Configuration Name: Provide a name with which this configuration can be identified.
Application Installation Mode: Choose how applications are deployed:
Silently Install: Applications pushed from the dashboard will be installed silently without user interaction.
Add to Catalog: Applications will be added to the Application Catalog (displayed inside macOS agent), allowing end-users to install them at their convenience.
Note: Users can always view the application status in the catalog.

Always keep the app installed: If enabled, the app will reinstall any published applications that were deployed using the Silently Install method.
If uninstall is enabled at the time of publishing, this setting will be ignored.
Display progress in an alert: If enabled, an alert displaying the installation progress will be shown to the user. Note: This is supported on macOS 12 and above
Overwrite existing installation: If enabled, apps previously installed will be overwritten by the deployed version. If disabled, installed apps will not be overwritten.
The published version and installed version must match for this setting to be applied.
Ignore DND apps: If enabled, application installation will be skipped if any of the target apps have Do Not Disturb (DND) or Display Assertion set (e.g., Zoom during a call, PowerPoint during a presentation).
Show alert before beginning silent installation: If enabled, an alert message will be displayed to the user before a silent installation begins.

Allow users to defer the installation: If enabled, users will be allowed to postpone the installation for 24 hours. Deferred apps can be viewed in the Application Catalog (inside agent app for macOS).
Note: This option can only be enabled if Show alert before beginning silent installation is also enabled.
Installation Detection
Custom Installation Detection allows the agent to identify applications that cannot be reliably detected using a standard macOS Bundle ID. This is useful for command-line tools, frameworks, binaries, or applications installed in non-standard locations. By default, the agent detects applications using the Bundle ID configured for the app. Enable Custom Installation Detection only when the application does not use a standard .app bundle or requires a custom verification method.
When Custom Installation Detection is disabled, all settings in this section remain unavailable.
Installation Detection Rule
The Installation Detection Rule determines how the agent checks whether an application is installed on a device. Available detection methods include:
App Bundle Exists: Use this option to detect standard macOS applications packaged as
.appbundles. The agent verifies that the specified application bundle exists at the configured path.File Exists: Use this option to detect applications or tools installed as individual files or executables. The agent checks whether the specified file exists on the device.
Folder Exists: Use this option to detect software installed as a directory or framework. The agent checks whether the specified folder exists on the device.
Custom Script: Use this option when installation status must be determined through custom logic. The agent executes an uploaded bash script to determine whether the application is installed. The script:
Exits with code
0if the application is installedExits with code
1if the application is not installedInstallation Detection Script: Upload a
.shbash script containing the custom detection logic.

Installation Detection Path: The Installation Detection Path specifies the file system location the agent uses to verify installation status. Provide the full path to the
.appbundle / file / folder.Version Detection: Version Detection controls how the agent determines the installed version of the application.
Auto-detect from Bundle (only for app bundle): Automatically reads the application version from the app bundle’s
Info.plistusingCFBundleShortVersionString.Run command: Runs a custom shell command to retrieve the installed version. When selected, a Version Command field becomes available.
Not required: Skips version detection. Applications configured with this option display the version as
N/Ain device status views.
Version Command: The Version Command defines the shell command the agent runs to retrieve the installed application version. Example:
terraform --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'This is required only when Run command is selected under Version Detection.

Scripts
From this section you can manage scripts related to pkg applications.
Pre-Install Script: Upload a pre-installation Bash script (.sh file extension) which will run before the application installation begins. Pre-install scripts are typically used for dependency checks, configuration setup, or cleanup tasks to ensure a smooth installation or update process. Click Browse to upload a script file.
Mark installation as failed if Pre-Install script fails: If checked, it will halt the installation process if the pre-install script encounters errors.
Post-Install Script: Upload a post-installation Bash script (.sh file extension) which will run after the application installation is complete. Post-install scripts are commonly used to start services, register the software with system components, or display completion messages.
Uninstall Script: Upload a Bash script (.sh file extension) which will run during the application uninstallation process. Uninstall scripts are typically used to remove application data or trigger the software's built-in uninstaller. If no uninstall script is provided, Scalefusion will only remove the application itself.
Important Notes on Scripting:
Verify Script Before Upload: Please review your script thoroughly before uploading it.
Script Size Limit: The maximum script file size is 5.0 MB.
Custom Property Expansion: You can leverage custom properties within your scripts. These properties will be dynamically replaced with corresponding device or user-specific values at runtime (enclosed by "%" symbols).

Step 3: Publishing the App & Viewing Status
Once the app is uploaded, it will appear in the list of applications and clicking on it will allow you to Publish the app.
The Publish window includes the following tabs:
Installation Targets
Installation & Management Options
Installation Targets
The Installation Targets allows you to select and review the Profiles, Groups, and Devices where the pkg will be published. When you select Device Profiles, you will get following options:
Show Selected: Enabling this displays only the device profiles that were selected during the app publishing process.
Show Published: When you enable Show Published, the list displays all profiles, including those where the app has already been published.
If the app is already published to a profile and you need to change the installation mode, go to Show Published, select the profile where the app is published, choose the new installation mode, and republish the app.

Installation & Management Options
The Installation & Management Options section controls how a PKG application is deployed, installed, and managed on devices.

Publish/Override this version on Devices with direct mappings: Enable this option to publish the selected application version even on devices that already have direct app mappings configured. When enabled, device-specific mappings are ignored and the selected version is published to all targeted devices using the standard publishing workflow. When disabled, existing direct device mappings continue to take precedence.
Configure Installation Mode: This setting determines how the application is made available to users and devices. At least one installation mode must be selected.
Silently Install: Installs the application automatically on target devices without requiring user interaction. Use this mode when applications should be deployed automatically in the background.
Add to Catalog: Makes the application available in the App Catalog for users to install manually. When enabled, users can browse and install the application from the app catalog available inside the macOS agent app on device.
Select at least one installation mode. You may also select both.

Provide Uninstall option in App Catalog: This setting controls whether users can uninstall the application directly from the App Catalog. The option is available only when Add to Catalog is enabled. When enabled, users will see an uninstall action for the application in the catalog.

Selected Installation Method: This displays the installation method you have selected in Utilities > Global Settings
Install Config: This setting allows you to apply a predefined installation configuration to the application. Available configurations include all install configurations created for the selected application.
Not Configured: No additional installation behavior or scripting is applied during installation.
Configured Install Profiles: When an install configuration is selected, the following settings are displayed as a summary of the configuration:
Always keep the app installed: Indicates whether the agent continuously ensures the application remains installed on the device.
Display progress in an alert: Indicates whether installation progress notifications are shown to the user.
Overwrite Appstore Apps: Indicates whether App Store versions of the application can be replaced by this deployment.
Ignore DND Apps: Indicates whether the installation can proceed even when Do Not Disturb-related restrictions are present.
Allow users to defer installation: Indicates whether users can postpone the installation.
Show alert before beginning silent installation: Indicates whether users receive a notification before a silent installation begins.
Custom Installation Detection: Indicates whether the install configuration uses custom logic to detect application installation status.
Configured Scripts: Displays the scripts configured as part of the installation workflow. Examples include:
Pre-Install
Post-Install
Uninstall
Multiple configured scripts are displayed as a comma-separated list. Example:
Pre-Install, Post-Install

If all required settings are valid, the platform applies the updated configuration and sends the relevant settings updates to targeted devices.
View Installation Status
With View Status, you can view the installation status and other info for the selected application. To do so,
Click on View Status in the side bar

This will open the Installed App Info dialog

Here,
Installation Options: Clicking on View Options under this opens another window displaying the installation options associated with a Device Profile / Group / Device

App Status: This column shows the current installation status of the application. It can be Installation Failed, Pending, Installed, Uninstalled
Reinstall: The Reinstall action retries application installation on selected devices.
Sync App Status: The Sync App Status action refreshes the installation status of the application on selected devices.