# Custom Apps "Configuration" tab

*Applies to: Patch My PC Cloud Custom Apps*

The **Configuration** tab is where you configure various properties for the Custom App.

{% hint style="info" %}
**Note**

Mandatory fields are denoted by an asterisk ("<mark style="color:red;">**\***</mark>").
{% endhint %}

## Install Context

The **Install Context** setting (if available) configures the context in which the app is installed, either **System** or **User**.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FZLwTehK9dSMsas2r8rMt%2Fimage.png?alt=media&#x26;token=98257f4b-acce-4a2e-8f1f-242ac55c4826" alt="&#x27;Install Context&#x27; setting" width="563"><figcaption></figcaption></figure>

## Architecture

The **Architecture** setting (if available) configures the app's architecture.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FLt2ltNKygSVStwlN0ZGc%2Fimage.png?alt=media&#x26;token=263ee0f3-5fc3-4a8e-a74b-1ca412354de2" alt="&#x27;Architecture&#x27; setting" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

Detection uses this field to determine whether to look in the 32-bit or 64-bit registry keys:

`HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall`

or

`HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall`
{% endhint %}

## Version&#x20;

In the **Version** field, enter the version number for this app.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FZH0lBuz5r20jYt83V1BC%2Fimage.png?alt=media&#x26;token=e9be9667-acd1-4afb-8ec3-23466bd5fe9e" alt="&#x27;Version&#x27; setting" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

The number entered in this field is the version of the app as shown in **Add or remove programs**.

Detection uses this field to determine if the app is installed by looking for a matching **DisplayVersion** entry in the following registry key:

`HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall`
{% endhint %}

## Language&#x20;

In the **Language** field, either type the language for this app or select it from the dropdown list.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2Ftuw9s6B0SdqK5hZdqIMG%2Fimage.png?alt=media&#x26;token=fe63d538-71ce-4afb-9a57-427b5cbc3fc7" alt="&#x27;Language&#x27; setting" width="563"><figcaption></figcaption></figure>

## Installed Apps Name

In the **Installed Apps Name** field, type the name of the app as it appears in **Add or remove programs**.

{% hint style="info" %}
**Note**

If you type a version number in this field we replace it with "`%`".
{% endhint %}

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FIxPkXxfmw1hNSaK8I8cL%2Fimage.png?alt=media&#x26;token=c602562b-ec0f-4687-a2e2-a88b86439a90" alt="&#x27;Installed Apps Name&#x27; setting" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

Detection uses this field to determine if the app is installed by looking for a matching **DisplayName** entry in the following registry key:

`HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall`

As this field supports the `%` wildcard (matching any sequence of characters), limit your input to ASCII characters. If the **Installed Apps Name** contains non-ASCII characters or version numbers, consider replacing those with `%` to ensure proper matching.

This will allow App Detection and Update Requirement rules to detect older versions of the app on your endpoints.
{% endhint %}

{% hint style="danger" %}
**Important**

As the **Apps & Features Name** is used to determine applicability and detection, using an overly generic name may cause Intune Updates to be detected as required on devices without the software installed.
{% endhint %}

## Conflicting processes

In the **Conflicting processes** field, type a comma-separated list of executables that may interfere with the installation of this app. This field populates the list for the [Manage Conflicting Processes](https://patchmypc.com/manage-conflicting-processes-when-updating-third-party-applications) right-click feature.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2Fw07eaEhph5zjs5NVl5qY%2Fimage.png?alt=media&#x26;token=28560bd8-71e6-4ee6-9aeb-2e4773999603" alt="&#x27;Conflicting processes&#x27; setting" width="563"><figcaption></figcaption></figure>

## Silent Install Parameters

In the **Silent Install Parameters** field, enter the command-line arguments (up to a maximum of 2,048 characters) used to install the app silently (i.e. the user is not aware of the installation occurring).

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2F2WtBncqPimt3FERVnOWg%2Fimage.png?alt=media&#x26;token=fcef588b-6e88-4cd7-8703-54f0932ee093" alt="&#x27;Silent Install Parameters&#x27; setting" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

Providing `msiexec.exe /i` for MSI installations is not required. Using `/qn` will be adequate for most MSI installations.

Also, see [Supported Variables in Publisher and PMPC Cloud](https://docs.patchmypc.com/patch-my-pc-product-reference/supported-variables) for a list of the variables we support in this field.
{% endhint %}

## MSI Product Code

In the **MSI Product Code** field, enter the MSI product code for this app, which is used for detection.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FRTnDAYmJfHg5O6GVckYu%2Fimage.png?alt=media&#x26;token=a8efa6a3-b90d-4d0b-a077-6a0a21dd9287" alt="&#x27;MSI Product Code&#x27; setting" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

This setting only applies to MSI installers.

If the MSI Product Code for your installer does not update between versions, the Custom Apps Detection and Applicability rules will:

* Not detect any changes and no updates will not be installed.
* Detect the MSI app, even if an older version is installed.

To work around this issue, change the MSI Product Code to all **0**'s (`00000000-0000-0000-0000-0000`) when creating the Custom App. This forces the detection and applicability scripts to fall back to DisplayName and DisplayVersion detection.
{% endhint %}

## Uninstall Command

There are two options for customizing the uninstall command:

* **Auto Discovered (selected by default)**
  * During uninstall, **PatchMyPC-Scriptrunner** scans the *Uninstall* registry key and looks for a subkey that matches the application name.
    * Once found, it uses the `QuietUninstallString` command from that subkey to perform the uninstall. If this String Value doesn't exist, then the information from `UninstallString` will be used.&#x20;
    * If no match is found, the process will exit with return code 65535 (see `PatchMyPC-ScriptRunner.log` for details).
  * If you specify **Additional Silent Uninstall Parameters**, these will be appended to the `UninstallString`—not to the main installation file.
* Use Custom (in development)
  * This option is currently under development and expected in late 2025.
  * Once available, it will allow you to provide custom scripts to handle the uninstall of a custom app.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FpgEfGA2x3JlJgqHagfUK%2Fimage.png?alt=media&#x26;token=ae274a74-5e57-4b0c-b8ca-7cf88f6bcf14" alt="&#x27;Auto Discovered&#x27; setting" width="563"><figcaption></figcaption></figure>

## Requirements

The **Requirements** section allows you to configure custom optional requirements (including requirement rules) that must be met for the app to be deployed to the target audience.

This includes:

* [Standard Requirements](#standard-requirements)
* [OS Architecture Requirements](#os-architecture-requirements)
* [Additional Requirements Rules](#additional-requirements-rules)

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2Fnmw2JigVntAsJvo7KFCA%2Fimage.png?alt=media&#x26;token=5b4de373-4cc7-4b5d-9514-33c96b5a07d9" alt="Requirements section" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

Configuring Requirements is optional.
{% endhint %}

### Standard Requirements

#### Minimum operating system

From the **Minimum operating system** dropdown, select the minimum operating system required by this app.

{% hint style="info" %}
**Note**

The default **Minimum operating system** value is set to match the first value in the dropdown, which corresponds to the oldest version of Windows still supported by Microsoft. As Microsoft deprecates a Windows version, this value and the values in the dropdown list will automatically update to the oldest version still supported by Microsoft.
{% endhint %}

{% hint style="success" %}
**Tip**

We recommend leaving the **Minimum operating system** dropdown at its default unless you need to configure a specific value. If an app/deployment is configured for a specific Windows version, when Microsoft retires that version, you will no longer be able to deploy the app unless you update this field to a supported Windows version.
{% endhint %}

#### Min RAM memory (MB)

Configure the minimum amount of RAM required to run this app.

#### Minimum CPU speed (MHz)

Configure the minimum CPU speed required to run this app.

#### Minimum number of logical processors

Configure the minimum number of logical processors required to run this app.

### OS Architecture Requirements

The *OS Architecture Requirements* section lets you specify which operating system (OS) architectures the app can be deployed to.

By default, the relevant checkbox is checked based on the value configured in the **Architecture** field.

{% hint style="info" %}
**Note**

For example, if **Architecture** is configured:

* As **64-bit**, the **32-bit** checkbox under **OS Architecture Requirements** will be unchecked and cannot be checked.
* As **32-bit**, the **32-bit** checkbox under **OS Architecture Requirements** will be checked and cannot be unchecked. As this is a 32-bit app, the **64-bit** checkbox is checked by default, but it can be checked.

You also cannot uncheck the checkbox in the **OS Architecture Requirements** section that corresponds to the selected **Architecture**.

The **ARM** checkbox in the **OS Architecture Requirements** section can always be checked/unchecked, regardless of the configured **Architecture**.
{% endhint %}

Configure the relevant settings as required.

### Additional Requirements Rules

Using the **Additional Requirements Rule** section, you can create up to 10 optional requirement rules based on the following:

* File
* Registry
* Script

To configure an Additional Requirement Rule:

1. Click **Add** in the **Additional Requirements Rules** section.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FHFl4PoV109SlQFrpY6aa%2Fimage.png?alt=media&#x26;token=09abfaa6-8919-4f5b-9298-ed2192c60464" alt="Clicking ‘Add’ in the ‘Additional Requirements Rules’ section" width="563"><figcaption></figcaption></figure>

2. On the **Add Requirement Rule** screen, select the relevant type of rule from the **Rule Type** dropdown, then configure the required options as required.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FlsW2RGcweGSCrOYbwRWz%2Fimage.png?alt=media&#x26;token=52c5eb93-b813-4acf-82ce-22174a8d120d" alt="Selecting the required ‘Rule Type’" width="449"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

To configure a script-based Requirement Rule requires the PowerShell script to already exist.
{% endhint %}

<table><thead><tr><th width="112.888916015625" valign="top">Rule Type</th><th valign="top">Available Options</th></tr></thead><tbody><tr><td valign="top">File</td><td valign="top"><ul><li><strong>Path –</strong> The path to the folder you are checking for.</li><li><strong>File or Folder –</strong> The folder containing the file you are checking for.</li><li><strong>Property –</strong> Various options, such as whether the item exists or does not, the date it was created, modified, etc.</li></ul></td></tr><tr><td valign="top">Registry</td><td valign="top"><ul><li><strong>Key Path –</strong> The path to the Registry key.</li><li><strong>Value name (optional) –</strong> The name of a value contained within the specified Key Path that you want to check for.</li><li><strong>Registry key requirement –</strong> Various options, such as whether the key exists or does not, comparisons, etc.</li></ul></td></tr><tr><td valign="top">Script</td><td valign="top"><ul><li><strong>Script Name –</strong> The name of the script, which you can leave blank if you want to use the name of the script you are going to import.</li><li><strong>Import Script –</strong> Allows you to browse to an existing PowerShell script to import.</li></ul><p><mark style="color:blue;"><strong>NOTE</strong></mark><br>If the script is unsigned, you will see the <strong>Script was detected as unsigned</strong> warning.</p><ul><li><strong>Script –</strong> Shows the script’s content.</li></ul><p><mark style="color:blue;"><strong>NOTE</strong></mark><br>You cannot modify the script in the <strong>Script</strong> window.</p><ul><li><strong>Select output data type -</strong> Various options, such as type, version, etc.</li></ul></td></tr></tbody></table>

3. Configure the following additional options based on the type of rule you are creating.

<table><thead><tr><th width="140.6666259765625" valign="top">Rule Type</th><th valign="top">Additional Options</th></tr></thead><tbody><tr><td valign="top">File or Registry</td><td valign="top"><ul><li><strong>Associated with a 32-bit app on 64-bit clients –</strong> If enabled, allows the rule to expand any path environment variables in the 32-bit context on 64-bit endpoints.</li></ul></td></tr><tr><td valign="top">Script</td><td valign="top"><ul><li><strong>Run script as 32-bit process on 64-bit clients –</strong> If enabled, allows the script to be run in a 32-bit process on 64-bit clients. If disabled, the script runs in a 64-bit process on 64-bit clients and in a 32-bit process on 32-bit clients.</li><li><strong>Run this script using the logged on credentials -</strong> Run the script using the credentials signed in to the device.</li><li><strong>Enforce signature check –</strong> If enabled, verifies that the script is signed by a trusted publisher, allowing the script to run without warnings or prompts. The script will run unblocked. If disabled, will require the end user to confirm they are happy for the script to run, but without signature verification.</li></ul><p><mark style="color:blue;"><strong>NOTE</strong></mark><br>If the script imported is unsigned, you will be unable to enable this option.</p></td></tr></tbody></table>

{% hint style="info" %}
**Note**

In terms of Scripts, in the current version:

* We only support PowerShell (.ps1) scripts
* You can only import a single script per Requirement Rule.
* We do not sign your scripts if we use them in one of our deployments. If this is a requirement, you will need to sign the scripts yourself.
  {% endhint %}

4. Click **Add Rule** to add the requirement rule.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FZfb9BoOth72gj773EeHa%2Fimage.png?alt=media&#x26;token=16c43b6a-9cd5-4176-ac73-aae4c105ded3" alt="Clicking ‘Add Rule’ to add the requirement rule" width="450"><figcaption></figcaption></figure>

The rule is added to the list of requirement rules.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FIwPhxqMnB10Vf5wBBvNQ%2Fimage.png?alt=media&#x26;token=442fa5aa-47a4-4d17-b912-fd7f583ab8b7" alt="Rule added to the list of requirement rules" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
**Note**

You can:

* Edit a Requirements Rule by clicking the pencil icon beside the relevant rule, making the required changes, then clicking **Save Rule** to save the changes.
* Delete a Requirements Rule by clicking the red trash can beside the relevant rule to remove it from the list of rules.
  {% endhint %}

5. Repeat the steps in this section to add any additional requirement rules.

## Return Codes

A *Return Code* (also referred to as an *exit code*), is a numeric value a program, process or function passes back to the calling entity (such as the operating system or another program) to indicate the outcome of the operation.

If you do not want to modify the **Return Codes** for this app, go to [Next Steps](#next-steps).

{% hint style="info" %}
**Note**

See the [Return Codes (optional)](https://docs.patchmypc.com/patch-my-pc-cloud/custom-apps/create-a-custom-app/broken-reference) section of [Deploy an App](https://docs.patchmypc.com/patch-my-pc-cloud/deployments/deploy-app) for details on managing the Return Codes for a Deployment.

Also, if a Return Code defined in a Custom App has the same value but a different **Code type** to that defined in the deployment, the settings in the deployment take precedence.
{% endhint %}

### Add A New Return Code

If you do not want to add a new Return Code, proceed to [Edit a Return Code](#edit-a-return-code).

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2F4zj4DNXdiJdHyWiaVA4S%2Fimage.png?alt=media&#x26;token=008d8e65-ca59-4904-9267-ced8567e0b72" alt="Adding a new Return Code" width="563"><figcaption></figcaption></figure>

To add a new Return Code for this Custom App, enter the numerical value in the **Return Code** field, select its meaning from the **Code type** dropdown, then click **Add**.

{% hint style="info" %}
**Note**

A Return Code must be a unique integer up to 10 digits long. You can add as many Return codes as your app supports. In the current release, you cannot edit or specify your own Code type as these are managed in Intune.
{% endhint %}

The new Return Code is added to the list.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FDW6ASmcEyM04k9p40Zkq%2Fimage.png?alt=media&#x26;token=4b6427a9-54e3-4887-aa6a-acb47786ca37" alt="New Return Code added to the list." width="563"><figcaption></figcaption></figure>

### Edit a Return Code

If you do not want to edit a Return Code, go to [Delete a Return Code](#delete-a-return-code).

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FgNHitiLmLRIDhtnW6Byu%2Fimage.png?alt=media&#x26;token=8fe7f719-9354-479a-8f85-d096f8426045" alt="Clicking the pencil icon beside a Return Code to edit it." width="563"><figcaption></figcaption></figure>

To edit a Return Code, click the pencil icon beside it, then choose the correct **Code type** for this Return Code from the dropdown list.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2Flk1TDUemEDgspVPvE4Z9%2Fimage.png?alt=media&#x26;token=17b8a0b8-68ef-4db8-ad26-f17d90efbbdd" alt="Choosing the correct &#x27;Code type&#x27; from the dropdown list" width="563"><figcaption></figcaption></figure>

Next, click the green tick to save your changes.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FgOXfhQITF83f5aGK0uBR%2Fimage.png?alt=media&#x26;token=5971d041-2e57-4a3f-aed6-2dbe0e922c1c" alt="Clicking the green tick" width="563"><figcaption></figcaption></figure>

The **Code type** field is updated.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FJtGio3aa8xkbZmKEMdpc%2Fimage.png?alt=media&#x26;token=6d6f306c-d0a2-4a27-92ce-198c905209ac" alt="&#x27;Code type&#x27; field updated." width="563"><figcaption></figcaption></figure>

### Delete a Return Code

If you do not want to delete a Return Code, go to [Next Steps](#next-steps).

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FaRof5p1Q9GHcm1eeykWi%2Fimage.png?alt=media&#x26;token=b98b94e6-09e3-4b91-be92-cdff008e02fd" alt="Deleting a Return Code" width="563"><figcaption></figcaption></figure>

To delete a Return Code, click the red trash can beside the relevant code.

The code is deleted from the list.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FQePdfvDDhk3JS1OtVpio%2Fimage.png?alt=media&#x26;token=c66dec89-1a25-4dd2-8091-b1d3fefa1345" alt="Code deleted from the list" width="563"><figcaption></figcaption></figure>

## App Info

The **App Info** section enables you to define default values for items that will be included in the app’s metadata when it is packaged to Intune. Any values set for the following items will appear in the app’s properties when viewed in the Intune admin center:

* **Owner –** The name of the owner of this app.
* **Intune Notes –** Notes about the app that we send to Intune when we create a deployment.
* **Information URL -** Link to a website or documentation that has more information about the app.
* **Privacy URL -** A link for people who want to learn more about the app's privacy settings and terms
* **Developer –** The name/contact details of the developer as this is a plain text field.

<figure><img src="https://3773699522-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MX7dvS0r_4fc0AikgJS%2Fuploads%2FfkivodIQpCcuI88TRCqN%2Fimage.png?alt=media&#x26;token=dfc313cf-99c9-48d8-850c-a0aceee7cf65" alt="‘App Info’ section" width="563"><figcaption></figcaption></figure>

## Next Steps

If you want to configure Native Detection Rules for this app, click **Next** to go to the [Detection Rules](https://docs.patchmypc.com/patch-my-pc-cloud/custom-apps/create-a-custom-app/custom-apps-detection-rules-tab) tab.\
\
If you do not want to configure Native Detection Rules, click **Next** twice to go to the [Summary ](https://docs.patchmypc.com/patch-my-pc-cloud/custom-apps/create-a-custom-app/custom-apps-summary-tab)tab.
