In this guide, you’ll learn how to deploy Actifile through the Acronis Cyber Protect Cloud platform using a PowerShell script.
Step 1. Log in to your Acronis Portal. Navigate to Monitoring and click on Manage Service. This action will take you to the Acronis Cyber Protect Cloud management portal.

Step 2. In the Customer Picker, select All Customers to ensure the script is accessible to all required accounts.

Step 3. Navigate to Management > Script Repository and click Create Script by using AI.
Step 4. Copy the script below and paste its content into the script editor.
Give the script a name, such as “Deploy Actifile,” or choose a name that follows your organization’s naming conventions. Click Save.

Script:
# IMPORTANT: Place each customer's unique install key (from Actifile portal) in the arguments field.
#
#
# Actifile Powershell Download and Installation Script for Acronis Cyber Protect Cloud
# Requires TLS1.2 support
# Place each customer's unique install key (from Actifile portal) in the arguments field.
param (
[string]$key
)
# Optional Replace __INSTALL_KEY__ with your tenant's install key. Must be in the format 1234-1234-1234-1234.
# IMPORTANT: Each customer has their own unique key (and thus their own script): DO NOT mix keys between tenants!
$InstallKey = "__INSTALL_KEY__"
# Installation Locations and Names (usually don't need to change these....)
$InstallerName = "Actifile Install.msi"
$InstallerPath = Join-Path $Env:TMP $InstallerName
$DownloadURL = "https://app.actifile.com/Home/DownloadAgentMsi"
# Append messages and errors to installation top the following log file...
$DebugLog = Join-Path $Env:TMP ActifileInstall.log
$ActifileMSILog = Join-Path $Env:TMP ActifileMSI.log
function Get-TimeStamp {
return "[{0:yyyy/MM/dd} {0:HH:mm:ss}]" -f (Get-Date)
}
function LogMessage ($msg) {
Add-Content $DebugLog "$(Get-TimeStamp) $msg"
Write-Host "$(Get-TimeStamp) $msg"
}
function CheckAdmin {
$oIdent= [Security.Principal.WindowsIdentity]::GetCurrent()
$oPrincipal = New-Object Security.Principal.WindowsPrincipal($oIdent)
if(!$oPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator )){
$err = "Please start script with Administrator rights - Quitting!"
LogMessage $err
throw $ScriptFailed + " " + $err
exit 1
}
}
# Replace InstallKey with key from command line parameters (if exist)
# and check for proper install Key (must be in form 1234-1234-1234-1234)
function Check-InstallKey {
if ( ! [string]::IsNullOrEmpty($key) ) {
$InstallKey = $key.Trim()
}
LogMessage $InstallKey
if ($InstallKey -eq "__INSTALL_KEY__") {
$err = "InstallKey not set - Quitting!"
LogMessage $err
LogMessage "Command Line Usage: `".\deployActifile.ps1 1234-1234-1234-1234`""
LogMessage "or Replace script macro __INSTALL_KEY__ with your tenant key."
LogMessage "Replace 1234-1234-1234-1234 with the correct tenant install key"
LogMessage " "
throw $ScriptFailed + " " + $err
exit 1
} elseif ($InstallKey.length -ne 19) {
$err = "Invalid InstallKey specified (incorrect length - should be in format 1234-1234-1234-1234) - Quitting!" + $InstallKey
LogMessage $err
throw $ScriptFailed + " " + $err
exit 1
}
LogMessage "InstallKey: '$InstallKey'"
return $InstallKey
}
# Check if installer already installed - and if not download
function Check-MSI {
if (! (Test-Path $InstallerPath)){
LogMessage "Downloading from: '$DownloadURL' to: '$InstallerPath'"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($DownloadURL, $InstallerPath)
if (! (Test-Path $InstallerPath)) {
$err = "Failed to Download Installer!"
LogMessage $err
throw $ScriptFailed + " " + $err
exit 1
}
} else {
LogMessage "Actifile Installer Previously Downloaded - continuing..."
}
}
# Check if product already installed
function Check-Actifile-Installed {
$ProductRegKey = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\`{0D13F554-E542-4590-AACB-AA60CAE75A64`}"
if (Test-Path $ProductRegKey){
$err = "Product Already Installed - Quitting!"
LogMessage $err
throw $ScriptFailed + " " + $err
} else {
LogMessage "Actifile not previously installed - continuing..."
}
}
# Create the command line arguments and install Actifile
function Install-Actifile {
$MSIArguments = @(
"/i"
"`"$InstallerPath`""
"installkey=$InstallKey"
"/quiet"
"/l*v $ActifileMSILog"
)
LogMessage "Now executing: MSIEXEC.EXE $MSIArguments"
Start-Process msiexec.exe -Wait -ArgumentList $MSIArguments
}
try {
LogMessage "Actifile Download and Installation Script"
LogMessage "v0.15"
CheckAdmin
$InstallKey = Check-InstallKey
Check-Actifile-Installed
Check-MSI
Install-Actifile
}
catch {
$ErrorMessage = $_.Exception.Message
LogMessage $ErrorMessage
exit 1
}
Step 5. Go to the Script Repository and locate the script you just created. Use the ・・・ button next to the script and select Clone. In the dialog box, set the status to Approved and click Clone.

Step 6. Choose the customers to which you want to deploy Actifile and click Clone again to confirm. You should see a success message indicating that the script has been cloned successfully.

Step 7. To deploy Actifile, you’ll need to provide an Actifile Install Key for each script:
- If the customer doesn’t already exist in Actifile, create the customer account.
- Copy the Install Key from your Actifile tenant list.

Step 8. Change the script name to reflect the customer it will be used with, and paste the customer’s Install Key into the Arguments section of the script. Click Save.

Step 9. Navigate to the customer account and go to Management > Script Repository. Locate the script, click on the ・・・ button next to it, and select Script Quick Run.

Step 10. Choose the workloads for which you want to run the script. Click Run Now to start the deployment.
Step 11. To track the script’s progress, navigate to Monitoring > Activities and look for status indicators (succeeded or error).
For failed deployments, download the output (stdout) to investigate the issue and resolve it.
