Windows Deployment — Xferity as a Native Binary on Windows Server
Windows Deployment
Section titled “Windows Deployment”Xferity is a single Go binary with no external runtime dependencies. It runs natively on Windows without any special installation or framework requirements.
This page covers the Windows-specific deployment considerations and the most common Windows-native patterns.
Why Windows deployment matters
Section titled “Why Windows deployment matters”Many teams replacing WinSCP scripts, scheduled transfer tasks, or legacy Windows-based MFT software want to keep the runtime on Windows. Xferity supports this path directly.
Common Windows deployment patterns:
- replacing a collection of WinSCP or PowerShell scripts with Xferity flows
- running as a Windows service (via NSSM, winsw, or Windows Task Scheduler)
- replacing legacy MFT server software with a single Go binary under explicit operational control
Running the binary on Windows
Section titled “Running the binary on Windows”Download or build the Windows binary. The binary is a standard Windows .exe. Run it from Command Prompt or PowerShell:
xferity.exe validatexferity.exe diag payroll-uploadxferity.exe run payroll-uploadxferity.exe run-service payroll-upload --interval-seconds 300The binary reads config from ./config/config.yaml by default or from a path specified with --config.
Configuration file paths on Windows
Section titled “Configuration file paths on Windows”Use forward slashes or double backslashes in config paths. Both work in YAML on Windows:
storage: base_path: C:/xferity/storage
logging: file: C:/xferity/logs/xferity.log
audit: path: C:/xferity/audit/audit.jsonlInstalling as a Windows service
Section titled “Installing as a Windows service”Using NSSM (Non-Sucking Service Manager)
Section titled “Using NSSM (Non-Sucking Service Manager)”nssm install Xferity C:\xferity\xferity.exenssm set Xferity AppParameters "run-service payroll-upload --interval-seconds 300"nssm set Xferity AppDirectory C:\xferitynssm set Xferity AppStdout C:\xferity\logs\service-stdout.lognssm set Xferity AppStderr C:\xferity\logs\service-stderr.lognssm start XferityUsing winsw
Section titled “Using winsw”Create a xferity-service.xml file:
<service> <id>xferity</id> <name>Xferity MFT</name> <description>Xferity Managed File Transfer</description> <executable>C:\xferity\xferity.exe</executable> <arguments>run-service payroll-upload --interval-seconds 300</arguments> <workingdirectory>C:\xferity</workingdirectory> <logpath>C:\xferity\logs</logpath> <log mode="roll-by-size"/></service>Using Windows Task Scheduler
Section titled “Using Windows Task Scheduler”For simpler on-demand flows, Windows Task Scheduler works well:
- Create a Basic Task
- Set the trigger (e.g., every 15 minutes)
- Set the action to run
xferity.exe run payroll-upload - Set the start-in directory to the Xferity working directory
Note: Task Scheduler is not the same as a persistent service-style runner. If the flow takes longer than the trigger interval, tasks may overlap unless you configure “Do not start a new instance if already running.”
For overlapping protection, use Xferity’s built-in flow locking (lock_wait) rather than relying on Task Scheduler deduplication alone.
PGP provider on Windows
Section titled “PGP provider on Windows”If flows use pgp.provider=gnupg or pgp.provider=auto, GnuPG must be installed and accessible. The default install location on Windows is:
C:\Program Files (x86)\GnuPG\bin\gpg.exeConfigure the path explicitly in the flow:
pgp: provider: auto gnupg_binary: "C:/Program Files (x86)/GnuPG/bin/gpg.exe"If GnuPG is not installed or not accessible, provider=gnupg will fail at startup validation and provider=auto will not be able to fall back.
SSH known_hosts on Windows
Section titled “SSH known_hosts on Windows”When using SFTP, the known_hosts file follows the same file: reference format as on Linux:
sftp: known_hosts: file:C:/xferity/config/known_hostsGenerate the initial known_hosts on Windows using the bundled ssh-keyscan from Git for Windows or OpenSSH for Windows:
ssh-keyscan -H sftp.partner.example >> C:\xferity\config\known_hostsLog file rotation on Windows
Section titled “Log file rotation on Windows”The logging configuration supports log file rotation:
logging: output: file file: C:/xferity/logs/xferity.log max_size: 100 # MB before rotation max_backups: 5 max_age: 30 # days compress: truePath length considerations
Section titled “Path length considerations”Windows has a default MAX_PATH of 260 characters. For deep directory structures, either:
- keep paths short
- enable long path support via Group Policy (
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1)
What Windows deployment does not include
Section titled “What Windows deployment does not include”- a pre-built Windows installer or MSI package
- a Windows GUI application
- Windows Event Log integration by default (redirect stdout/stderr to files via NSSM or winsw)
- automatic Windows service registration without a third-party service wrapper