WebDAV Drive Configuration File Reference

The functionality described in this article is supported in WebDAV Drive App v9.4 (WebDAV Ajax Library v6.2) and later versions.

Overview

This article is a complete reference for the WebDAV Drive App deployment configuration file. It describes the file location, the full set of supported parameters, and how to configure multiple drives.

For a step-by-step deployment guide, see WebDAV Drive App Deployment via Intune.

Configuration File Location

The configuration file path is generated dynamically based on the AppID value:

C:\ProgramData\<AppID>\webdavdrive-config.json

In the PowerShell script the path is built as follows:

$ConfigFile = "$env:ProgramData\$AppID\webdavdrive-config.json"

For example, if $AppID = 'WebDAVDrive', the resulting path is:

C:\ProgramData\WebDAVDrive\webdavdrive-config.json

Important: $AppID must match the AppID value defined in the application's appsettings.json.

Top-Level Configuration Parameters

The configuration file has the following top-level fields:

  • SettingsVersion — configuration format version. Use "2.0" for the structure described in this article.
  • License — Integrated Bundle License XML that activates both the IT Hit User File System Engine and the IT Hit WebDAV Client Library for .NET. A single license string covers both products.
  • Drives — array of drives to mount. Each entry is mounted as a separate sync root and can have its own URL, mount folder, and per-drive settings.

Per-Drive Parameters

Each entry in the Drives array supports the parameters listed below. Only WebDAVServerURL is required. Any omitted parameter falls back to the default value bundled with the application's appsettings.json.

  • WebDAVServerURL — WebDAV server URL to mount for this drive (required).
  • UserFileSystemRootPath — local mount folder. Supports environment variables such as %USERPROFILE%.
  • AutoLockTimeoutMs — automatic lock timeout in milliseconds.
  • ManualLockTimeoutMs — manual lock timeout in milliseconds. Use -1 for infinity.
  • SyncIntervalMs — outgoing synchronization and hydration/dehydration interval in milliseconds.
  • TrayMaxHistoryItems — number of events kept in the tray window.
  • FolderInvalidationIntervalMs — folder content invalidation period in milliseconds.
  • IncomingSyncMode — incoming synchronization mode. Allowed values: Off, SyncId, CRUD, TimerPooling, Auto.
  • MaxTransferConcurrentRequests — throttling for create/update/read requests.
  • MaxOperationsConcurrentRequests — throttling for list/delete/move requests.
  • AutoLock — automatically lock the file in remote storage when it is opened for writing.
  • SetLockReadOnly — mark documents locked by other users as read-only.
  • ThumbnailGeneratorUrl — URL template for Windows Explorer thumbnail mode.
  • RequestThumbnailsFor — file extensions to request thumbnails for, separated by |, or * for all files.
  • Compare — map of file extension to compare command for the Compare context menu.
  • CustomColumns — map of column id to display name for the mounted drive.

Mounting Multiple Drives

To mount several drives on the same machine, add more entries to the $Drives array. Each drive becomes a separate sync root and can override its own per-drive parameters independently.

$Drives = @(
    @{
        WebDAVServerURL        = 'https://company.example.com/webdav/'
        UserFileSystemRootPath = '%USERPROFILE%\CompanyDrive'
        AutoLock               = $true
        SetLockReadOnly        = $true
    }
    @{
        WebDAVServerURL        = 'https://team.example.com/webdav/'
        UserFileSystemRootPath = '%USERPROFILE%\TeamDrive'
        SyncIntervalMs         = 5000
        IncomingSyncMode       = 'Auto'
    }
)

Complete Example

The script below creates a configuration file with two drives and the full set of recommended parameters for each drive.

# === REQUIRED ===
# Integrated Bundle License XML (covers IT Hit User File System + IT Hit WebDAV Client .Net).
$License = '<LICENSE_XML_HERE>'

# One or more drives to mount.
$Drives = @(
    @{
        WebDAVServerURL        = 'https://company.example.com/webdav/'
        UserFileSystemRootPath = '%USERPROFILE%\CompanyDrive'
        AutoLockTimeoutMs      = 20000
        ManualLockTimeoutMs    = -1
        SyncIntervalMs         = 10000
        IncomingSyncMode       = 'Auto'
        AutoLock               = $true
        SetLockReadOnly        = $true
    }
    @{
        WebDAVServerURL        = 'https://team.example.com/webdav/'
        UserFileSystemRootPath = '%USERPROFILE%\TeamDrive'
        SyncIntervalMs         = 5000
        IncomingSyncMode       = 'Auto'
    }
)

# Must match "AppID" in appsettings.json.
$AppID = 'WebDAVDrive'

$ConfigFile = "$env:ProgramData\$AppID\webdavdrive-config.json"

New-Item -ItemType Directory -Path (Split-Path $ConfigFile) -Force -ErrorAction SilentlyContinue | Out-Null

$drivesJson = @()
foreach ($d in $Drives) {
    $drive = [ordered]@{}
    foreach ($key in $d.Keys) { $drive[$key] = $d[$key] }
    $drivesJson += $drive
}

$config = [ordered]@{
    SettingsVersion = '2.0'
    License         = $License
    Drives          = $drivesJson
}

$json = $config | ConvertTo-Json -Depth 10
$json = $json `
    -replace '\\u003c', '<' `
    -replace '\\u003e', '>' `
    -replace '\\u0026', '&' `
    -replace '\\u0027', "'"

$json | Set-Content -Path $ConfigFile -Encoding UTF8
Write-Host "Config saved to: $ConfigFile ($($drivesJson.Count) drive(s))"