2. Client Pre-Requisites
Please review all steps in the sections that correspond with each device type you would like to manage in FileWave.
- Android Client Pre-Requisites
- Apple Client Pre-Requisites
- Chromebook Client Pre-Requisites
- Windows Client Pre-Requisites
Android Client Pre-Requisites
Obtaining JSON File
Android EMM (Enterprise Mobility Management) is built into FileWave as of version 13.1. This feature requires activation. Activation may be generated from the following link:
Add the FileWave Server Activation Code in the Customer ID box and select Generate Key. On doing so, the required JSON file will need to be downloaded and saved.
This process cannot be repeated. If you have an issue with activation, please contact support.
Setup
Requirements
- Server and Admin running FileWave Version 13.1.0 +
- Android 8 or newer Device(s) as of FileWave 15.3.0 (Requirements may change, confirm with latest release notes)
- Generated JSON key (see above)
- Network Port 443 inbound and outbound between FileWave server and Google (See Default TCP and UDP Port Usage for full list and topology)
- A standard Google account or G-Suite account
- Perform the changes in FileWave as the fwadmin user specifically because some steps will not be able to be accomplished without doing so
A Google account may only be registered to a single EMM instance:
Unlike standard Google or Gmail accounts, a G Suite administrator manages all accounts associated with each of these editions. G Suite provides access to a core set of apps that include Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Google+, Hangouts Meet, Hangouts Chat, Sites, and Groups.
You are not required to setup Google Cloud Messaging (GCM/Firebase) for Android EMM to work. Any references to it are for Chromebooks.
Configure Service Account
Open FileWave Admin 'Preferences' > 'Google' tab and click 'Configure Enterprise' under the EMM Configuration section. If the Google tab is not yet apparent, the FileWave server service will require a restart after requesting the JSON.
- Proceed by selecting the 'Choose File' button in the 'Set Up an Android Management Enterprise' window
- Select service account file, then press 'Upload'
- When requested, enter a display name for your enterprise and 'Sign Up'. This is merely an internal identifier but will be visible on devices.
- Press 'Click here' link to finalize the setup. The link opens a browser, navigating to Google Play website. Finalize enterprise creation using the chosen Google account.
- On registration completion, the browser should redirect to the FileWave server website informing success. 'Enterprise "[display name]" successfully created.'
The FileWave Admin should now display the successfully configured Android EMM account:
Enrolling Android Devices
You are now set to enroll Android devices as described here: Android Enrollment
Apple Client Pre-Requisites
Now that we have the FileWave basics taken care of, let us start integrating the Apple services into FileWave. This section will cover creating an APNS certificate and syncing FileWave with Apple's DEP and VPP.
Apple Push Notification Service (APNS) Certificate
The Apple Push Notification Service Certificate or "APNS Cert" is what allows FileWave to send out Push Notifications to Apple devices including macOS, iOS, and tvOS. This step is absolutely critical for any Apple management within FileWave.
To create and upload an APNS certificate follow the instructions at one of the following links depending on your platform macOS or Windows. If you have a macOS machine available, the process is usually found to be easier on the Mac versus a Windows machine since macOS includes the built-in Keychain Assistant.
Since the APNS certificate must be renewed annually, we recommend you create calendar reminders 45, 30, and 15 days before the expiration. The FileWave Admin's Dashboard can also be configured to give you an alert of expiration via email.
When renewing your APNS certificate, be sure to use the same Apple ID that was used to originally create it. Creating a new certificate, or creating a certificate with a different Apple ID, rather than renewing the existing one used by FileWave, will break MDM communication with your mobile devices and require un-enrollment and re-enrollment. Take the following precaution to prevent this.
|
|
Apple Device Enrollment Program (DEP)
Now that we have the APNS created and imported, let us leverage Apple's Device Enrollment Program to automate the enrollment of our macOS, iOS, and tvOS devices.
Add new MDM Server to Apple
-
Log into Apple School Manager (ASM) or Apple Business Manager (ABM) using your organization's Administrator account.
-
Navigate to "Settings" in the lower left-hand corner.
-
Select "Device Management Settings" from the middle pane.
-
Click "Add MDM Server" from the right pane.
-
Change the "MDM Server Name" to "FileWave" or something distinguishable.
-
Navigate to "FileWave Admin > Preferences > VPP & DEP", click "Download Certificate" from the bottom "Device Enrollment Program" section, and authenticate.
-
Navigate back to ASM/ABM and "Choose File" to select the recently downloaded "FileWave DEP.pem".
-
Click "Save".
Sync Apple DEP within FileWave
-
After creating new MDM Server, select the new server from the list.
-
Click "Download Token" and accept the warning message.
-
Navigate to "FileWave Admin > Preferences > VPP & DEP", click "Configure accounts" from the bottom "Device Enrollment Program" section, and authenticate.
-
Click the "[+]" button in the lower left-hand corner and select the recently downloaded "FileWave_Token_XXXX-XX-XXTXX-XX-XXZ_smime.p7m" token file.
-
If data is populated in all of the columns of the "DEP Accounts" window, the token import was successful.
Assign devices from ASM/ABM to FileWave MDM Server
-
Select "Devices" from the left-hand pane within ASM/ABM.
-
Search for devices by Serial Number (comma separated) or use the Filter icon to choose all "Unassigned" devices.
-
With the device(s) selected, click "Edit Device Management" and select the newly created FileWave MDM Server.
-
Navigate to "FileWave Admin > Assistants > DEP Association Management"
-
Hold down the Option or Alt key on your keyboard and click the "Synchronize (full sync)" button in the lower right-hand corner.
-
You should now see all devices assigned in Step 3 within FileWave's DEP Associations window.
Create DEP Profile and enroll Apple Devices
- These workflows will be covered in the DEP Enrollment section.
Apple Volume Purchase Program (VPP)
The Apple Volume Purchase Program (VPP) is integrated into Apple School Manager and Apple Business Manager and allows you to purchase and deploy applications from the App Store. When purchasing (free or paid) VPP licenses you will need to assign the licenses to a "Location" within ASM/ABM and each "Location" within ASM/ABM corresponds with a VPP Token. You will import each VPP Token into FileWave to sync the licenses assigned to the particular "Location".
If you are just starting out with ASM/ABM, you'll most likely just have one "Location" and therefore one VPP Token. If you are currently using a VPP Token in another MDM it is recommended to create a new "Location" for the evaluation of FileWave. This is recommended because importing a VPP Token that is used in another MDM will result in the automatic revoking of any deployed VPP licenses from that MDM. If you are not concerned with the licenses being revoked, please feel free to continue to import the existing VPP Token.
This section will not cover creating a new "Location" in ASM/ABM but more information can be found here from Apple School Manager User Guide or found here from Apple Business Manager User Guide.
Download VPP Token from ASM/ABM
- Log into Apple School Manager (ASM) or Apple Business Manager (ABM) using your organization's Administrator account.
- Navigate to "Preferences" in the lower left-hand corner.
- Select "Payments and Billing" from the middle pane.
- Find the desired "Location" name from the "My Server Tokens" section.
- Click "Download".
Import VPP Token into FileWave Admin
VPP Token Permission
If you do not see the added VPP Token this is because your FileWave Admin account has not been granted permission to the VPP Token. Please consult the "Allow new users to access existing VPP Tokens" section to grant permission to the VPP Token.
VPP Ownership
If you receive a message about the VPP Token being owned by another VPP tool, please inform your FileWave SE and they can assist in taking ownership of the VPP Token. Taking ownership of the VPP Token will result in the revoking of any previously deployed VPP licenses from another MDM so please proceed with caution. If you want to avoid licenses being revoked, please create a new "Location" within ASM/ABM and purchase new license or assign existing license to the new "Location".
Purchase VPP Licenses from ASM/ABM
Please consult Apple School Manager User Guide or Apple Business Manager User Guide for more in-depth information regarding purchasing Apps and Books.
- Log into Apple School Manager (ASM) or Apple Business Manager (ABM) using your organization's Administrator or Content Manager account.
- Select "Apps and Books" from the left pane.
- Search for the application name you wish to purchase and verify its intended platform (iOS App vs. macOS App).
- Select the desired "Location" from the "Assign to" drop-down menu.
- Specify the quantity of licenses you'd like to purchase.
- Please enter a reasonable amount of licenses to cover your future device population but not too many (100,000+) as it may slow down the VPP sync process.
- Click "Get" button to complete your purchase.
- Licenses will usually be available within 5 minutes of purchase and you will be emailed by Apple when your licenses are available.
Sync VPP Licenses into FileWave
Now that we have at least one VPP Token imported into FileWave and licenses purchased, we can sync VPP within FileWave and automatically create Filesets for each VPP application.
Open FileWave Admin and navigate to "License Management" from the left pane.
- Click the "Synchronize VPP" button in the black menu bar.
- FileWave syncs with VPP automatically every 5 minutes but this will force a VPP synchronization and "Refreshes" the view.
- You should receive a pop up message asking if you'd like to automatically create Filesets for your VPP applications. Click "OK".
- You should now see the VPP License information in the "License Management" section and a new Fileset in the "Filesets" section.
- If you'd like to change where the VPP Filesets are imported to, please refer to this section of "Software Group Structure".
Enrollment Credentials
If you choose, you can prompt the user to authenticate the enrollment with a generic account name and password or with your AD/Okta/Google Credentials. You can also turn off authentication completely if you want a more streamlined process.
- Okta Credentials:IdP Setup: Okta
- Google Credentials:IdP Setup: Google
- Microsoft Entra AD: IdP Setup: Microsoft Entra ID
- LDAP Credentials: Using LDAP to enroll macOS/iOS/Android devices
Generic Username/Password:
-
From the server type one of the following, depending on your enrollment strategy:
Manual Enrollment(OTA)sudo fwcontrol mdm adduser [name]
Device Enrollment Program (DEP):
sudo fwcontrol mdm adddepuser [name]
Where [name] is the name of the account
-
Enter your server’s root password
-
Enter a password for this account
No Authentication:
-
From the server type the following:
cp /usr/local/filewave/apache/conf/mdm_auth.conf.example_no_auth /usr/local/filewave/apache/conf/mdm_auth.conf
-
When asked to overwrite the original, enter 'y' for yes
-
Restart the apache service to put the new configuration into place
/usr/local/filewave/apache/bin/apachectl graceful
Chromebook Client Pre-Requisites
Before beginning the setup of the Chromebooks, we must first provide you with a temporary Activation Code to license the amount Chromebooks you currently have under management in Google Admin Console. Please email the total number of "Provisioned" Chromebooks to your FileWave Account Executive or FileWave Systems Engineer, and we will send the Activation Code to you as soon as possible.
If you are unsure whether or not you are able to use Chromebooks with FileWave, please click to see the resources below.
List of countries where Chrome OS Management licenses are sold directly by Google to end customers:
Go to https://eduproducts.withgoogle.com/ , click 'contact sales', and then look at the drop-down menu 'Country' - if the country is in the list, it's supported.
Even if the country is not listed under the link above, a local google partner might be able to help :
https://www.google.com/a/partnersearch
Chromebook features
-
Location Tracking
-
Disable / Deprovision device
-
Historical user login activity
-
FileWave and Google Custom Fields
-
Google OU creation, renaming, and move device
-
Full hardware and software (extensions) Inventory reporting
- Powerwash & Wipe Users
- Reboot
Setup
Required Items
-
Google Domain
-
Admin rights within the Google Domain
-
At least one Chromebook
-
Chromebooks Enterprise enrolled
-
Pre-existing Google Organizational Unit structure (RECOMMENDED)
-
-
Running FileWave Server
-
Enough FileWave Chromebook licenses to cover every Chromebook in the Google OU
-
FileWave Server must use a root trusted SSL certificate and not a self-signed one
Google Cloud Messaging / Firebase Setup
First, you’ll need to configure Google Cloud Messaging (GCM/Firebase) so that FileWave can send push notifications to your Chromebook devices. The following steps will help you get your FileWave server setup with Google Cloud Messaging which is required for Android and Chromebook support.
-
Go to console.firebase.google.com in your web browser
-
Sign into your Google Account
-
Accept the user agreement (if necessary)
-
Select "Get started with a Firebase Project"
Enter name for the project and Agree to Terms – then click Create Project. Note below the fwx.io is the organization. Make sure the right organization is there or click on it and you can select the organization. Some types of accounts may not offer to let you pick an organization.
Choose to Disable Google Analytics for this project and then let it create the project.
Once the project creation has been completed, select Continue and you'll be on to the next steps.
Configuring Google Chromebooks to Sync with FileWave
The following processes and steps will walk you through setting up your FileWave server to manage Chromebooks. Current functionality will allow you to pull/query inventory data and utilize our location tracking feature in FileWave.
Enable Access to APIs
1. Go to the below address to start the process: https://console.developers.google.com/flows/enableapi?apiid=admin,calendar,classroom,drive,driveactivity.googleapis.com,gmail,groupssettings,licensing,plus,contacts,firebase.googleapis.com,fcm.googleapis.com If you just completed the Google Cloud Messaging / Firebase Setup, the project will already be selected and will use the project created during the GCM setup (this MUST be set up to continue). If it's not automatically selected, select the drop-down at the top of the screen and choose the correct project. You can also create a new one if you'd like. My Project is called 'FileWave Chromebooks'. 2. Confirm the Project and Enable the APIs for the project |
Creating a Service Account and Credentials
1. Now a service account has to be created, click the hamburger icon in the top left corner and select Credentials under APIs & Services 2. Select Create Credentials > Service Account 3. Give the Service Account a name. I use the same name as my project but you may name it whatever you want 4. Select 'Create and Continue' 5. Grant this service account OWNER privileges under Basic 6. Click 'Continue' 7. Skip the next section by selecting 'Done' 8. On the next screen, click 'Manage Service Accounts' 9. Click the menu on the right side of the Service Account you just created and then click Manage keys 10. Select 'ADD KEY', then 'Create New Key' and download the JSON file Save this JSON file. We'll use it later. |
Adding a Delegated User
|
OAuth Client ID & Authorizing API Scopes
1. In the same Service Accounts window (IAM & Admin > Service Accounts), click on the Action menu next to your Service Account and select 'Manage Details' 3. Select 'Advanced Settings' to expand 4. Copy Client ID under Domain-wide Delegation, we'll use it in the next section. |
1. Open another tab or browser and navigate to Google Admin, admin.google.com 2. In the main menu, select Security > Access and data control 3. Select API Controls 4. Click Manage Domain Wide Delegation 5. Select Add New 6. Paste the copied Client ID from the previous step in this section into the Client Name field 7. Copy and paste the following into the One or More API Scopes field all at once then hit Authorize https://www.googleapis.com/auth/admin.directory.device.chromeos, https://www.googleapis.com/auth/admin.directory.customer, https://www.googleapis.com/auth/admin.directory.orgunit |
Sync Google with FileWave
1. Be sure you have already set up Google Cloud Messaging / Firebase Setup 2. Open your FileWave Admin Preferences and select the Google Tab 3. Once there, click the Configure OAuth token button at the top, you will be prompted for your credentials 4. After authenticating simply type in the Google Account you associated with the service account 5. The last step will be to import the .json file you saved at the beginning of this document 6. After you press OK FileWave will sync automatically with Google |
|
Now if you go into the Clients section in FileWave you will see a Chromebooks group with the same structure and devices you have in your Google Admin. This may take some time. |
Deploying FileWave Inventory Extension to Chromebooks
1. In FileWave Admin open Preferences
|
Changing check-in frequency
If you want to change the frequency of check-in, you can modify the following attribute in the JSON to reflect check-in frequency (in minutes). The default is 1440, or once per day.
"UpdateIntervalInMinutes": {
"Value": 1440
}
Location Tracking Permissions
If you're wanting to use Location Tracking, you will need to "Allow sites to detect Users' geolocation" in Google Admin. You will find this option in Devices > Chrome > Settings, on the page that loads it will be under Security > Geolocation. For this setting, you want to ensure that you set it at the level in the organization that it should apply. In the image below we only enabled it for Foundry Chromebooks but did not set it for all. If you would like to enable Geolocation for all devices then make sure you set it at the domain level and also make sure that none of your OUs are set to ignore the inheritance of this setting. Simply check the setting on each OU and you will see what it is set to.
Just like with the Extensions, it is important that the OUs that you enable this on either be all of them or, at a minimum, you need to enable it for both the User and Device OUs that you will be using with FileWave.
Congratulations, you can now manage your Chromebooks with FileWave!
Troubleshooting
If for any reason you experience issues seeing your ChromeOS devices in FileWave or issues with reporting then see the notes in our Chrome Troubleshooting Guide
Windows Client Pre-Requisites
All you need to do to enroll a Windows Client is to deploy a customized FileWave Client MSI to your machines. We typically recommend using an existing tool capable of deploying a MSI such as Group Policy. This customized MSI can also be "baked" into a Windows image that can be deployed via FileWave's Imaging Virtual Server (IVS) so that freshly imaged Windows machines will automatically enroll into FileWave. Lastly, the FileWave Client MSI can be manually distributed and installed on any Windows machine that has local Administrator privileges.
If your organization uses Microsoft Entra ID and your users authenticate using Microsoft Entra ID credentials into their Windows machines, please consider enrolling your Windows machines into FileWave via Microsoft Entra ID. This will also allow for Windows MDM management within FileWave. Learn more on our Windows MDM article.
Generating a custom FileWave Client MSI
- Open the FileWave Customer Installer Builder for Windows.
- Fill out the settings accordingly.
- Click the "Build" button and wait for the automatic download.
- Extract ZIP and install the customized FileWave Client MSI.
Mandatory Settings |
Product Version = Your FileWave Server Version |
Sync Computer Name = Windows Hostname will be FileWave Client Name (recommended) |
Server Name = Fully Qualified Domain Name of your FileWave Server (required) |
Server Port = 20015 (do not modify) |
Client Password = Password used to modify client preferences remotely (not used in FW 16.0+) |
Note: The default Server Port setting above is 20015. However, SSL is now required, and the system will automatically use port 20017 instead when 20015 is entered. Do not manually set the port to 20017. Always enter 20015, and the system will handle the SSL port change for you.
Optional Settings |
Is Tracking = Is Location Tracking Enabled for Windows Clients |
Monitor Port = Port used for FileWave Client Monitor - 20010 (do not modify but also this port is no longer used as of FileWave 16.0.0) |
Remotecontrol Enabled = Screen-sharing enabled for Windows Clients |
Remotecontrol Prompting = Whether or not to Prompt the end-user before starting screen-sharing session |
Server Certificate = Self-Signed Certificate only; not required for CA-signed certificate |
Server Publish Port = 20005 (do not modify) |
Tickle Interval = Idle time for Windows Clients before checking for new Model Update (do not modify) |
Vnc Relay Port = 20030 (do not modify) |
Vnc Server Port = 20031 (do not modify) |
Booster Settings |
Initially you may want to make an installer that does not include Boosters. Read more about them here: Boosters |
Deploying the FileWave Client with Group Policy (Startup Script)
If you have no other way to easily deploy the FileWave Client to Windows sytems, but they are all tied to an Active Directory then leveraging Group Policy (GPO) can allow you to rapidly deploy the client with very little effort.
- Save the script shown below and save it to Deploy‑FileWave.ps1 on your desktop.
- You will want to make sure you edit it to point at the correct server location for the MSI installer that you created from https://custom.filewave.com to use for the install and make sure that the computer has permission to access the file.
-
Open \<your‑domain>\SYSVOL\<your‑domain>\Policies\{YourGPO_GUID}\Machine\Scripts\Startup in File Explorer (or use the GPMC “Show Files…” button on the Startup Scripts pane) to put the script in your domain.
-
The machine’s computer account (DOMAIN\COMPUTER$) must have read permission on \\server\share\FileWaveCustom.msi. If it doesn’t, the copy step will fail—so be sure your share ACLs allow Domain Computers or the specific computer objects.
- Open Group Policy Management in the Active Directory.
-
Create a GPO and navigate to Computer Configuration >> Policies >> Windows Settings >> Scripts (Startup/Shutdown) >> Startup
-
Double‑click Startup, then click the PowerShell Scripts tab.
-
Click Add…, then Browse… and pick Deploy‑FileWave.ps1 from the Startup folder.
-
Click OK to close out all dialogs and link the GPO where you need it. (Please test against 1 machine first)
-
Open Group Policy Management in the Active Directory
-
Navigate to Computer Configuration >> Policies >> Administrative Templates >> Windows Components/Windows PowerShell >> Turn on Script Execution: Set to Enabled and click OK.
The script checks if the FileWave Client (fwcld) is running, if not it will copy the installer from the share, install and generate a log file under C:\temp. If anything goes wrong (missing share access, MSI failure, etc.), you’ll see errors in C:\temp\Deploy‑FileWave.log, trimmed and rotated down to the last 100 KB on each reboot.
<#
.SYNOPSIS
Deploys the FileWave agent via a Group Policy startup script, always logging output.
.DESCRIPTION
Checks whether the FileWave process is running; if not, copies the MSI from the network share
to a persistent local directory and installs it in silent mode. All verbose, warning, and error output
is logged to C:\temp\Deploy-FileWave.log, trimmed to the last 100 KB at each run.
.NOTES
- Verbose output is forced by setting $VerbosePreference = 'Continue'.
#>
# Force verbose output so all Write-Verbose messages appear in transcript
$VerbosePreference = 'Continue'
# Define directories and log files
$logDir = 'C:\temp'
$logFile = Join-Path -Path $logDir -ChildPath 'Deploy-FileWave.log'
$maxBytes = 100KB
# Persistent MSI cache location
$cacheDir = 'C:\ProgramData\FileWave\MSICache'
$msiName = 'FileWaveCustom.msi'
$installerLocalPath = Join-Path -Path $cacheDir -ChildPath $msiName
$installerSharePath = '\\server\share\FileWaveCustom.msi' # Update to your actual UNC path
# Ensure the log directory exists
if (-not (Test-Path -Path $logDir)) {
try {
New-Item -Path $logDir -ItemType Directory -Force | Out-Null
} catch {
Write-Error "Failed to create log directory '$logDir': $_"
Exit 1
}
}
# Trim existing log to last 100 KB
if (Test-Path -Path $logFile) {
try {
$fs = [System.IO.File]::Open($logFile, 'Open', 'ReadWrite')
if ($fs.Length -gt $maxBytes) {
$buffer = New-Object byte[] $maxBytes
$fs.Seek(-$maxBytes, 'End') | Out-Null
$fs.Read($buffer, 0, $maxBytes) | Out-Null
$fs.SetLength(0)
$fs.Write($buffer, 0, $maxBytes)
}
$fs.Close()
} catch {
Write-Warning "Failed to trim log file: $_"
}
}
# Start transcript logging
Start-Transcript -Path $logFile -Append
Write-Verbose "Transcript started at '$logFile'."
# Check if FileWave agent is already running
$ProcessName = 'fwcld'
Write-Verbose "Checking for process '$ProcessName'..."
try {
Get-Process -Name $ProcessName -ErrorAction Stop | Out-Null
Write-Verbose "Process '$ProcessName' is currently running."
$isRunning = $true
} catch {
Write-Verbose "Process '$ProcessName' not found. Proceeding with installation."
$isRunning = $false
}
if (-not $isRunning) {
Write-Verbose "Deploying FileWave agent..."
# Ensure the MSI cache directory exists
if (-not (Test-Path -Path $cacheDir)) {
try {
New-Item -Path $cacheDir -ItemType Directory -Force | Out-Null
Write-Verbose "Created MSI cache directory: $cacheDir"
} catch {
Write-Error "Failed to create MSI cache directory '$cacheDir': $_"
Stop-Transcript
Exit 1
}
}
# Copy MSI from network share if not already present
if (-not (Test-Path -Path $installerLocalPath)) {
Write-Verbose "Copying MSI from '$installerSharePath' to '$installerLocalPath'..."
try {
Copy-Item -Path $installerSharePath -Destination $installerLocalPath -Force
Write-Verbose "Successfully copied MSI to local cache."
} catch {
Write-Error "Failed to copy installer: $_"
Stop-Transcript
Exit 1
}
} else {
Write-Verbose "MSI already cached locally at '$installerLocalPath'."
}
# Install MSI silently and log output
$installLog = Join-Path -Path $env:TEMP -ChildPath 'FileWaveInstall.log'
$msiArgs = "/i `"$installerLocalPath`" /qn /norestart /l*vx `"$installLog`""
Write-Verbose "Starting MSI installation. Command: msiexec.exe $msiArgs"
$process = Start-Process -FilePath 'msiexec.exe' -ArgumentList $msiArgs -Wait -PassThru
if ($process.ExitCode -eq 0) {
Write-Verbose "Installation completed successfully (exit code 0). Log: '$installLog'."
} else {
Write-Error "MSI installation failed (exit code $($process.ExitCode)). See '$installLog'."
Stop-Transcript
Exit $process.ExitCode
}
Write-Verbose 'FileWave installation process finished.'
} else {
Write-Verbose "Skipping deployment; '$ProcessName' already running."
}
# Stop transcript logging
Stop-Transcript
Write-Verbose "Transcript stopped. Log written to '$logFile'."