Scappman enables you to bring your own custom applications to the party and enjoy all of our predefined automation logic.
To upload your own app in Scappman, simply browse to the Scappman portal and sign in.
Open the App Store and click "New App".
The upload your own app UI has 5 steps that have to be completed.
Step 1: General information
|App Name||The name of the application that will be used to display it in the Scappman portal and in the Scappman detection rules.||7-zip|
|Vendor||The vendor name of the application that will be used to display it in the Scappman portal and in the Scappman detection rules||Igor Pavlov|
|Language||The language for the configuration you're creating. This language will be used in the filter on the Scappman portal and in the Scappman detection rule||English|
|Icon||The icon that will be used for the application in the Scappman portal and in Microsoft Endpoint Manager. PNG's and JPEG's are supported with a max file size of 200KB and 256x256 pixels.||icon.png|
|Description||The description of the application in Scappman and Microsoft Endpoint Manager||
7-Zip is a free and open-source file archiver.
|Notes||Anything you would like to keep track of about the application. This parameter is only avaialble in the Scappman portal||This application only works on Dell devices.|
|Hardcoded license||Some private applications have a hardcoded license key.||Checked|
|Programmable license||The license key for some applications can be provided in the install or post-install command.||Unchecked|
Step 2: Configuration
|Install Context||The context from which the application will be executed. Some applications require to be install in user context, most work in System context. This parameter will also be set in Microsoft Endpoint Manager||System|
|Bitness||The Bitness for the application. If 64-bit is selected, the application will be configured to require 64-bit OS in Microsoft Endpoint Manager. If 32-bit is selected both 32-bit and 64-bit will be enabled in Microsoft Endpoint Manager||32-bit|
Scappman will check these processes to see if the application is running, if so, we show a notification to the user.
Process names should be comma separated.
|Apps & Features name||When an application is made available, Scappman will push a secondary update app that checks to see if it can find a previous version of that application. That check is based on the name of the application in Apps & Features. The parameter accepts wildcards (*). If this parameter is left empty you will not be able to selected Available as assignment type for this application.||7-Zip *|
|Enable Dependency||When this is checked, the UI will suggest to create a dependency for the specific app. The text in the textbox is what will be displayed when creating the installation.||This application has a dependency on xxxx. Please create an installation for xxxx first and link it here.|
Step 3: Files
Browse to the installation files. Select the primary installation file and add any additional files that may be required.
Step 4: Installation Commands
The installation commands will be injected into the Scappman PSADT template. Some examples have been added for your convenience, but any Powershell command will work. Check this PSADT cheatsheet for more inspiration (3rd party, so act accordingly).
Step 5: Detection rules
On this step the detection rules that will be used by Microsoft Endpoint Manager can be configured. The script detection rule cannot be used in conjunction with other detection rule types and only 1 MSI detection rule can be created.
An easy way to get the MSI product code is by running this script:
$path = "pathto.msi"
$comObjWI = New-Object -ComObject WindowsInstaller.Installer
$MSIDatabase = $comObjWI.GetType().InvokeMember("OpenDatabase","InvokeMethod",$Null,$comObjWI,@($Path,0))
$Query = "SELECT Value FROM Property WHERE Property = 'ProductCode'"
$View = $MSIDatabase.GetType().InvokeMember("OpenView","InvokeMethod",$null,$MSIDatabase,($Query))
$View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null)
$Record = $View.GetType().InvokeMember("Fetch","InvokeMethod",$null,$View,$null)
$Value = $Record.GetType().InvokeMember("StringData","GetProperty",$null,$Record,1)
Scappman also uses placeholders that are replaced by the API upon package creation to simplify updates and changes.
|<PACKAGENAME>||Value in App Name field in step 1|
|<PACKAGEVENDOR>||Value in Vendor field in step 1|
|<VERSION>||Value in Version field in step 2|
|<ARCHITECTURE>||x86 or x64, based on the toggle selected in step 2|
|<PRODUCTCODE>||Value in MSI Product code detection in step 5|
|<INSTALLERFILE>||Name of the primary installer file in step 3|
|<LANGUAGE>||2 letter language code for the language selected in step 1|