> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getprimo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Find the right program name for Automatic Install

> How to identify the exact software name to use in your auto-install detection query on Windows and Linux.

When you enable Automatic Install on a `.exe`, `.ps1`, `.deb`, `.rpm`, `.sh`, or `.tar.gz` custom package, Primo pre-fills a best-effort osquery using the software name you provided. Fleet's auto-install semantics require this query to **return at least one row when the software is installed** — otherwise the agent will keep re-installing the package on every check.

Edit the `LIKE '%...%'` value in the pre-filled query so it matches the **exact name the operating system reports** for the installed program.

## Windows (`.exe`, `.ps1`)

Pre-filled query:

```sql theme={null}
SELECT 1 FROM programs WHERE name LIKE '%<software name>%'
```

How to find the exact name:

* **Fleet host details** → installed programs list
* **Apps & features** in Windows Settings
* PowerShell: `Get-Package | Where-Object Name -Like '*<name>*'`

Example — installer is `FalconSensor_Windows.exe`, Windows reports the program as `CrowdStrike Windows Sensor`:

```sql theme={null}
SELECT 1 FROM programs WHERE name LIKE '%CrowdStrike Windows Sensor%'
```

## Linux Debian / Ubuntu (`.deb`)

Pre-filled query:

```sql theme={null}
SELECT 1 FROM deb_packages WHERE name LIKE '%<software name>%'
```

How to find the exact name:

* `dpkg -l | grep <name>` — the first column shows the package name
* Match the **package** name (e.g. `google-chrome-stable`), not the human-readable display name

## Linux RPM (`.rpm`)

Pre-filled query:

```sql theme={null}
SELECT 1 FROM rpm_packages WHERE name LIKE '%<software name>%'
```

How to find the exact name:

* `rpm -qa | grep <name>`
* Use the bare package name (without version / arch suffix)

## Linux scripts / archives (`.sh`, `.tar.gz`)

For installer scripts and archives, the installed artifact is whatever the script drops on disk. Inspect the script (or its README) to determine:

* Whether it registers a package in `deb_packages` / `rpm_packages` — if yes, query that table
* Otherwise, check whether a known binary or directory is created — use `file` or `osquery_info` to query for it

## Common mistakes

* Using the **installer filename** (`Setup.exe`) instead of the **registered program name** (`MyApp`) — Fleet will never detect it as installed and will re-install on every run
* Forgetting the wildcards (`'%name%'`) — exact-match queries miss version suffixes
* Using a name that matches multiple unrelated programs — tighten the `LIKE` pattern with more characters or use `=` for exact match

## Verify before saving

In the software card, after editing the query, target a small device group first and confirm the install behaves as expected before rolling it out fleet-wide.
