Package Installer Service

Prev

Feature Overview

The primary use case of the Package Installer Service is to allow the user to have a suite of tools to perform upgrades from a centralized source. Typically, http://{MasterAddress}/Baze.PackageInstaller.Web.

View Installed Packages (and their versions)

Install Packages

Use Manual Mode to Control Versions for Manual Installs

View Logs Remotely

IT Architecture Prerequisites

These arrows ARE directional. So, if you see an arrow pointing to the service, it needs to be reachable on that port.

In practice, the buffer DataEngine and buffer package installer service will be on the same machine so no new firewall rules are needed.

IMPORTANT NOTES:

  • The minimum master dataengine version needed is Data HistorianCore - 3.11.92 for this version. For direct communication (legacy) master version is not necessary

    These appsettings need to be present on the master node in order for it to reverseproxy to itsself

    <add key="ExternalNodeId" value="<Master node DE guid>" />

    <add key="ExternalNodeAddress" value="localhost" />

    <add key="EnableReverseProxyService" value="true" />

  • For on prem customers, they may not be able to reach the Package Repository hosted by bazefield so we will need to install that and follow procedure here - FUTURE WORK

Package Installer Service — AppSettings Reference

Web UI

Key

Type

Default

Description

WebPort

int

11032

TCP port the web UI and REST API listen on.

AdditionalPorts

string

(empty)

Comma-separated list of extra ports to bind, in addition to WebPort.

WebInstallerUI_Password

string

(empty)

Shared password that gates the web UI and /api/installer/* endpoints. Blank = open to anyone on the network (legacy behavior). When set, the SPA shows a login screen and all API calls require a session cookie. In a multi-site farm, set this only on the master/overview node — leave subordinate nodes blank so cross-site status polling works.

WebInstallerUI_SessionLifetimeHours

int

8

How long a successful login stays valid before re-authentication is required. No sliding renewal — the clock starts at login time.

Log Viewer

Key

Type

Default

Description

LogViewerEnabled

bool

true

When true, the in-browser Logs tab is visible and /api/installer/logfiles endpoints serve content. When false, the tab is hidden and endpoints return 403.

LogViewerMaxFileSizeMb

int

200

Maximum log file size (MB) the viewer will return as a whole. Files larger than this are rejected with HTTP 413; users are told to view the file directly on the server. The /logfiles/{name}/search endpoint streams the full file regardless, so search still works on huge logs.

Package Storage and Updates

Key

Type

Default

Description

PackageSavePath

string

.\Packages

Directory where downloaded packages are stored. Relative paths resolve against the service's base directory. Created at startup if missing.

AutoDownloadUpdates

bool

true

When true, available package updates are downloaded automatically in the background.

AutoInstallUpdates

bool

false

When true, downloaded updates are installed automatically (no operator confirmation). Off by default.

ForceUpdateOfPIS

bool

true

When true, the Package Installer Service auto-updates itself when a newer version is available.

InstalledModulesRefreshIntervalM

int

60

How often (minutes) to re-scan the local machine for installed modules.

RemoteRepositoryRefreshIntervalM

int

60

How often (minutes) to poll the central repository for new package versions.

Download Tuning

Key

Type

Default

Description

MinChunkSize

int

1024

Minimum download chunk size (bytes).

MaxChunkSize

int

1048576

Maximum download chunk size (bytes, default 1 MB).

IdealChunkPaceS

int

5

Target number of seconds per chunk. The downloader auto-tunes chunk size between MinChunkSize and MaxChunkSize to hit this pace.

SleepIntervalMS

int

100

Background worker idle sleep (milliseconds).

DataEngine Integration

Key

Type

Default

Description

DataEngineHostname

string

localhost

Hostname of the DataEngine REST API. Ignored if DataEngineAddress is set.

DataEnginePort

int

42020

Port of the DataEngine REST API. Ignored if DataEngineAddress is set.

DataEngineAddress

string

(empty)

Full base address of the DataEngine API (e.g. https://win-host:42020/api/). Takes precedence over DataEngineHostname + DataEnginePort when set.

DataEngineSecret

string

(empty)

API key for authenticating with the DataEngine REST API.

Central Repository / AMQP Reverse Proxy

Key

Type

Default

Description

BazeRepoEndpoint

string

(empty)

Endpoint for the central Baze repository. Master nodes: WCF service URL (e.g. https://repo.bazefield.com/.../rest). Buffer nodes: master's PIS repo-proxy (e.g. http://WIN-HOST:11032/api/repo-proxy). When CentralRepositoryNodeId is set, this URL is sent as the absolute target through the AMQP reverse proxy.

CentralRepositoryNodeId

string

(empty)

DataEngine node ID (GUID) of the master node that can reach the central Baze repository. When set, all repository requests are forwarded via AMQP reverse proxy to the PIS on this node instead of calling the repo directly. Must be the GUID from the BazeNode table, not the hostname.

ReverseProxyBaseUrlName

string

PackageInstaller

Logical name sent in the X-Proxy-BaseUrl header through the AMQP reverse proxy. The DataEngine resolves this to an actual URL via baseUrls in reverseproxy.whitelist.json.

RepositorySiteId

string (GUID)

(none)

This site's identifier in the central repository. Required — the service throws on startup if missing.

Outbound HTTP Proxy

Key

Type

Default

Description

ProxyAddress

string

(empty)

Outbound HTTP proxy for connections to the central Baze repository. Blank = direct connection. When set, applies only to the RepositoryProvider HttpClient — local and intranet calls (RepoProxy, DataEngine) bypass the proxy.

ProxyUsername

string

(empty)

Username for proxy authentication.

ProxyPassword

string

(empty)

Password for proxy authentication.

ProxyDomain

string

(empty)

Windows/NTLM domain for proxy authentication. Required only when the proxy uses NTLM/Kerberos with a domain account. Ignored unless ProxyUsername and ProxyPassword are also set.