Perform silent installation of AVEVA Integration Service
- Last UpdatedNov 05, 2025
- 7 minute read
- Engineering
- Integration Service 4.0
- Integrators
You can perform silent installation of AVEVA™ Integration Service (Service) that requires least manual configuration and time saving.
Before beginning the silent installation of Service, ensure that the System Requirements have been fulfilled.
Perform these steps to execute silent installation:
-
Run the AVEVA Integration service Setup.exe as mentioned below in the command prompt window:
<path of the setup.exe> /silentnoreboot <path of the responsefile.txt> /skiprebootunblockmsg
-
Run the configuration script to setup DB password and encryption keys into PCS.
Import-Module WebAdministration
try {
# Path to the .exe file
$exePath = "C:\Program Files (x86)\AVEVA\Shared\APIMigration\AVEVA.IntegrationService.TaskRunner.exe"
# Check if the file exists
if (-Not (Test-Path $exePath)) {
throw "Executable not found at path: $exePath"
}
Write-Host "Starting process: $exePath"
# Start the process and wait for it to complete
$process = Start-Process -FilePath $exePath -Wait -PassThru
# Output the exit code
Write-Host "Process completed successfully with exit code: $($process.ExitCode)"
}
catch {
Write-Error "An error occurred while executing the process: $_"
}
# Path to the .exe file you want to execute
$exeFilePath = "C:\Program Files (x86)\AVEVA\Shared\APIMigration\AVEVA.IntegrationService.KeyUpdater.exe"
# Parameters to pass to the executable
$params = "-DBPWD <Please provide valid password>"
# Check if the .exe file exists
if (Test-Path $exeFilePath) {
Write-Host "Executing $exeFilePath..."
# Run the .exe file
Start-Process -FilePath $exeFilePath -ArgumentList $params -Wait
} else {
Write-Host "Error: $exeFilePath not found."
}
Notes:
-
To run the config script you must specify valid credentials.
-
Ensure the TaskRunner.exe and KeyUpdater.exe files are present in the installed location.
-
PowerShell version: 5.1 or higher (Windows default is fine).
-
Database password must be updated in the script: $params = "-DBPWD <Please provide your valid credentials>"
-
-
Run the AVEVA Integration Service configuration script.
# Path to the AVEVA.IntegrationService.Extend.config config file
$configFilePath = "C:\Program Files (x86)\AVEVA\Shared\AVEVA Integration Service\AVEVA.IntegrationService.Extend.config"
# Load the XML content
[xml]$config = Get-Content $configFilePath
$hostName = $env:COMPUTERNAME
# Define key-value pairs you want to update
$updates = @{
"ConfigAPIURI" = "https://$hostName"+":60920/"
"DataAPIURI" = "https://$hostName"+":60930/"
"RESTAPIURI"="https://$hostName"+":8080/"
"WebAdminURI"="https://$hostName"+"/"
"ConnectedToWebAdmin"="True"
"ConnectedToRestAPI"= "True"
"ConnectedToDataStore"= "True"
"ConnectedToConfig"="True"
"PCSConfigured"="True"
"IsUEInstalled"= "True"
"AVEVA_CONNECT_AUTHORITY_URL" ="https://signin.connect.aveva.com"
"AVEVA_CONNECT_LOGIN"= "True"
"AVEVA_SERVICE_AUTHENTICATION_TYPE"= "<AuthenticationType>"
}
# Iterate over each add element under appSettings
foreach ($setting in $config.ServiceConfigExtend.ChildNodes) {
$key = $setting.Name
write-Host $key
write-Host $setting
if ($updates.ContainsKey($key)) {
$setting.InnerText = $updates[$key]
Write-Host "Updated key '$key' to '$($updates[$key])'"
}
}
# Save the updated config file
$config.Save($configFilePath)
Write-Host "AVEVA.IntegrationService.Extend.config Config file updated successfully!"
#section 2 For updating Data API and Config API Json and WedAdmin Josn files- Begin
# Path to the AISDataAPI appsettings.json file
$appSettingsPath = "C:\Program Files (x86)\AVEVA\Shared\AISDataAPI\appsettings.json"
# Read the content of the appsettings.json file
$jsonContent = Get-Content -Path $appSettingsPath -Raw | ConvertFrom-Json
$jsonContent.AllowedOrigins = "https://$hostName"+""
$jsonContent.ConnectionStrings.ConfigAPI_DataSources = "https://$hostName"+":60920/config"
# Convert the updated content back to JSON format
$updatedJson = $jsonContent | ConvertTo-Json -Depth 10
# Save the updated content back to the appsettings.json file
$updatedJson | Set-Content -Path $appSettingsPath
Write-Host "Data API appsettings.json has been updated successfully."
# Path to the AISConfig appsettings.json file
$appSettingsPath = "C:\Program Files (x86)\AVEVA\Shared\AISConfig\appsettings.json"
# Read the content of the appsettings.json file
$jsonContent = Get-Content -Path $appSettingsPath -Raw | ConvertFrom-Json
$jsonContent.AllowedOrigins = "https://$hostName"+""
$jsonContent.ConnectionStrings.DataAPI_DataSources = "https://$hostName"+":60930/api/v1.2/datasources"
# Convert the updated content back to JSON format
$updatedJson = $jsonContent | ConvertTo-Json -Depth 10
# Save the updated content back to the appsettings.json file
$updatedJson | Set-Content -Path $appSettingsPath
Write-Host "Config API appsettings.json has been updated successfully."
# Path to the WedADmin appsettings.json file
$appSettingsPath = "C:\Program Files (x86)\AVEVA\Shared\IntegrationServiceWebAdmin\remote-admin\assets\app-settings.json"
# Read the content of the appsettings.json file
$jsonContent = Get-Content -Path $appSettingsPath -Raw | ConvertFrom-Json
$jsonContent.RestApiUrl = "https://$hostName"+":8080/"
$jsonContent.ConfigApiUrl = "https://$hostName"+":60920/"
$jsonContent.DataApiUrl = "https://$hostName"+":60930/"
# Convert the updated content back to JSON format
$updatedJson = $jsonContent | ConvertTo-Json -Depth 10
# Save the updated content back to the appsettings.json file
$updatedJson | Set-Content -Path $appSettingsPath
Write-Host "Wed ADmin appsettings.json has been updated successfully."
#update the web.config file in REST API
# Path to your .config file
$configFilePath = "C:\Program Files (x86)\AVEVA\Shared\IntegrationServiceRESTAPI\Web.config"
# Load the XML content from the config file
[xml]$configXml = Get-Content -Path $configFilePath
# Replace value for a specific key
# For example, replace the value for <add key="SomeKey" value="SomeValue" />
$keyToFind = "AIS_Cors_AllowedOrigins"
$newValue = "https://$hostName"+""
# Find the element containing the key and update its value
$configXml.configuration.appSettings.add | Where-Object { $_.key -eq $keyToFind } | ForEach-Object { $_.value = $newValue }
# Save the changes back to the .config file
$configXml.Save($configFilePath)
Write-Host "Updated the value for $keyToFind to $newValue"
# Section-2 - Updating the josn file - End
#section-3 For updating Apppools and IIS Sites - Begin
Import-Module WebAdministration
Set-ItemProperty "IIS:\AppPools\RESTAPIPOOL" -Name enable32BitAppOnWin64 -Value $false
$userNameText = '<ServiceUsername>'
$passwordText = '<Password>'
Set-ItemProperty IIS:\apppools\RESTAPIPOOL -name processModel -value @{userName=$userNameText;password=$passwordText;identitytype=3}
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "userName" -value $userNameText
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "password" -value $passwordText
Start-Sleep -Seconds 5
## updating user name and password for Data API
Set-ItemProperty IIS:\apppools\AISDataAPIPool -name processModel -value @{userName=$userNameText;password=$passwordText;identitytype=3}
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "userName" -value $userNameText
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "password" -value $passwordText
Start-Sleep -Seconds 5
#updating user name and password for Config API
Set-ItemProperty IIS:\apppools\AISConfigPool -name processModel -value @{userName=$userNameText;password=$passwordText;identitytype=3}
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "userName" -value $userNameText
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter `
"system.applicationHost/sites/site[@name=IntegrationServiceRESTAPI]/application[@path='/']/virtualDirectory[@path='/']" `
-name "password" -value $passwordText
Start-Sleep -Seconds 5
# Function to stop all IIS sites one by one
function Stop-AllIISSites {
$sites = Get-Website
foreach ($site in $sites) {
try {
Write-Host "Stopping site: $($site.Name)"
Stop-Website -Name $site.Name
Start-Sleep -Seconds 15 # Optional: Wait for a few seconds before stopping the next site
} catch {
Write-Host "Failed to stop site: $($site.Name). Error: $_"
}
}
}
# Function to start all IIS sites one by one
function Start-AllIISSites {
$sites = Get-Website
foreach ($site in $sites) {
try {
Write-Host "Starting site: $($site.Name)"
Start-Website -Name $site.Name
Start-Sleep -Seconds 20 # Optional: Wait for a few seconds before starting the next site
} catch {
Write-Host "Failed to start site: $($site.Name). Error: $_"
}
}
}
# Main script execution
Write-Host "Stopping all IIS sites..."
Stop-AllIISSites
Write-Host "Operation completed for IIS sites stop."
Write-Host "Starting all IIS sites..."
Start-AllIISSites
Write-Host "Operation completed for IIS sites start."
#Define the list of application pools you want to manage
$applicationPools = @(
"AISConfigPool",
"AISDataAPIPool",
"RESTAPIPOOL"
)
# Function to stop application pools
function Stop-ApplicationPools {
param (
[string[]]$pools
)
foreach ($pool in $pools) {
Write-Host "Stopping application pool: $pool"
Stop-WebAppPool -Name $pool
if ($?) {
Write-Host "$pool stopped successfully."
Start-Sleep -Seconds 60 # Wait for 20 seconds between starts
} else {
Write-Host "Failed to stop $pool."
}
}
}
# Function to start application pools
function Start-ApplicationPools {
param (
[string[]]$pools
)
foreach ($pool in $pools) {
Write-Host "Starting application pool: $pool"
Start-WebAppPool -Name $pool
if ($?) {
Write-Host "$pool started successfully."
Start-Sleep -Seconds 60 # Wait for 20 seconds between starts
} else {
Write-Host "Failed to start $pool."
}
}
}
# Stop the application pools
Stop-ApplicationPools -pools $applicationPools
Write-Host "Operation completed for stopping IIS application pools.."
# Start the application pools
Start-ApplicationPools -pools $applicationPools
Write-Host "Operation completed forstarted IIS application pools.."
Start-Sleep -Seconds 180
$svc=Get-CimInstance win32_service -Filter 'Name="InterOpIntegrationWinService"'
$svc|Invoke-CimMethod -MethodName Change -Arguments @{StartName='<ServiceUsername>';StartPassword='<Password>'}
Start-Sleep -Seconds 120
## Belwo code/script is to start/stop if InterOpIntegrationWinService
##Clear-Host
##$svc = Get-Service
##$serviceName = "InterOpIntegrationWinService"
##foreach ($service in $svc) {
## if ($service.Name -eq $serviceName) {
## if ($service.Status -eq 'Stopped') {
## Start-Service -Name $service.Name -PassThru
## Write-Host "$($service.Name) has been started."
## } elseif ($service.Status -eq 'Running') {
## Stop-Service -Name $service.Name -Force -PassThru
## Write-Host "$($service.Name) has been stopped."
## }
## }
##}
$ServiceName = 'InterOpIntegrationWinService'
$arrService = Get-Service -Name $ServiceName
# Check if the service is running
if ($arrService.Status -eq 'Running')
{
# Stop the service if it is running
Stop-Service -Name $ServiceName
Write-Host "$ServiceName is stopped."
Start-Sleep -seconds 60
}
else
{
Write-Host "$ServiceName is not running"
}
$svc=Get-CimInstance win32_service -Filter 'Name="InterOpIntegrationWinService"'
$svc|Invoke-CimMethod -MethodName Change -Arguments @{StartName='<ServiceUsername>';StartPassword='<Password>'}
Start-Sleep -Seconds 120
$ServiceName = 'InterOpIntegrationWinService'
$arrService = Get-Service -Name $ServiceName
while ($arrService.Status -ne 'Running')
{
Start-Service $ServiceName
write-host $arrService.status
write-host 'Service starting'
Start-Sleep -seconds 60
$arrService.Refresh()
if ($arrService.Status -eq 'Running')
{
Write-Host $ServiceName 'Service is now Running'
}
}
# Section-3 - Updating the IIS and APPPools - End
-
This script automates the setup and configuration tasks required to initialize the Service.
-
Ensures all necessary configurations are properly applied before the service is started and accessed.
-
-
Before executing the script, ensure the following configuration values that are present in the script are correctly updated:
Parameter
Description
Action Required
AVEVA_CONNECT_AUTHORITY_URL
Defines the Aveva Connect Authority endpoint.
Update this with your Connect Stage URL.
AVEVA_SERVICE_AUTHENTICATION_TYPE
Determines the authentication method for the service.
Set the value to either NTLM or Connect, depending on your environment.
$userNameText
The username of the account under which the service will run.
Replace with the service account username.
$passwordText
The password of the service account.
Replace with the service account password.
StartName
The service logon username.
Replace with the same service account username used above.
StartPassword
The service logon password.
Replace with the corresponding service account password.
-
Run the script as an Administrator.
-
Launch Windows PowerShell ISE as an Administrator.
-
Load and execute .ps1.
-
Launch the configurator manually.
Once the above script execution is successfully completed.To start the Service, perform the following steps:
-
Press Windows key and search for Configurator.
-
Launch the Configurator application.
-
In the Configurator window, navigate to the Installation Complete section.
-
Select Start the Aveva Integration Service checkbox.
-
Launch Web Administration when prompted.
-
Click Finish.
The CONNECT pop-up window appears.
-
Specify your AVEVA credentials (User Name and Password).
Upon successful authentication, the AVEVA Integration Service starts and is ready for use.
-