Deployment Installer Developer Overview - rpapub/WatchfulAnvil GitHub Wiki

πŸ› οΈ Watchful Anvil Installer – Developer Overview

The Watchful Anvil Installer is designed to:

  1. Support both admin and user installations (with or without UAC)
  2. Automatically detect the correct UiPath Studio rule target folders
  3. Install all Workflow Analyzer rule projects found in the repo output
    • e.g. CPRIMA.WorkflowAnalyzerRules.dll, XYZ.WorkflowAnalyzerRules.dll, etc.

πŸ—‚ Installer Layout

installer/
β”œβ”€β”€ WatchfulAnvil_Installer_Admin.iss      ← Uses UAC, installs to system paths
β”œβ”€β”€ WatchfulAnvil_Installer_User.iss       ← No UAC, installs to user-accessible paths
β”œβ”€β”€ Shared_Defines.iss                     ← App metadata (name, version, output paths)
β”œβ”€β”€ Shared_Code.iss                        ← Shared detection logic, wizard flow
β”œβ”€β”€ Shared_Files_DeployWrite.iss           ← Real file copy logic (enabled by default)
β”œβ”€β”€ Shared_Files_DebugReadonly.iss         ← Optional dry-run config (no writes)

βš™οΈ Behavior

  • The installer shows a wizard UI with two options:

    1. Auto-detect appropriate rule folder(s) based on installed UiPath Studio versions
    2. Let user select a folder manually (via folder picker)
  • If the user selects a folder, that folder is used as the only target (receiving a net6.0 DLL).

  • If auto-detect is used, the installer checks for known UiPath versions and installs the appropriate DLL(s) to all matching folders:

    • %ProgramFiles%\UiPath\Studio\Rules\net8.0
    • %ProgramFiles%\UiPath\Studio\Rules\net6.0
    • %ProgramFiles%\UiPath\Studio\net461\Rules
    • etc.
  • If no known folders are found, it falls back to: %Public%\Documents\UiPath\Rules (suitable for Studio’s β€œCustom Workflow Analyzer Rules location” setting)


πŸ§ͺ Development Mode (Low Priority)

During early development, the installer can be switched to a debug-only mode that simulates installation without writing files.

Controlled via:

#define MODE_DEBUG
// or
#define MODE_DISTRIBUTION

And used to conditionally include either:

  • Shared_Files_DebugReadonly.iss (simulated)
  • Shared_Files_DeployWrite.iss (real)