Silent & unattended install

Every SphereHarness installer can be deployed with no window and no questions: msiexec /qn for the MSI, /quiet for the setup.exe. A silent install never accepts the licence agreement for you — the command line has to say ACCEPTEULA=1.

Which file to deploy

Each product comes in two forms, both on the Downloads page, both signed by PLM CAD UTILITIES AS (see Signed installers):

Productsetup.exeMSI
Autodesk InventorSphereHarness.Inventor.Setup.exeCADCoPilot.Inventor.Setup.msi
Siemens NXSphereHarness.NX.Setup.exeCADCoPilot.NX.Setup.msi
Solid EdgeSphereHarness.SolidEdge.Setup.exeCADCoPilot.SolidEdge.Setup.msi
AutoCADSphereHarness.AutoCAD.Setup.exeCADCoPilot.AutoCAD.Setup.msi
Desktop agent (no CAD add-in)SphereHarness.Agent.Setup.exeCADCoPilot.Agent.Setup.msi
  • setup.exe carries the Microsoft prerequisites inside it — the .NET 8 Windows Desktop, .NET and ASP.NET Core runtimes and the WebView2 runtime — and installs the ones the PC lacks before the MSI. It works offline. Use it when the PC may not have .NET 8.
  • The MSI is the same product without the prerequisites. It checks for .NET 8 and refuses, naming what to install, when a runtime is missing (see Microsoft .NET 8). Use it with deployment tools that want an MSI (Intune line-of-business app, Configuration Manager, Group Policy software installation) and push the .NET 8 runtimes as their own package first.

Every installer is per machine: run it elevated (as SYSTEM from a deployment tool, or from an administrator command prompt).

Accepting the licence agreement: ACCEPTEULA=1

An interactive install shows the licence agreement and cannot go on until you tick the box. A silent or reduced-UI install shows no such page, so it needs the acceptance on its command line:

ACCEPTEULA=1
  • Without it, a silent install stops and installs nothing. The install log holds the reason: “A silent or reduced-UI installation of … needs ACCEPTEULA=1 on the command line. By setting it you accept the SphereHarness licence agreement (https://sphereharness.io/eula).” The exit code is 1603.
  • It applies to every UI level that skips the licence page: /qn, /qb, /qr and /passive for the MSI, /quiet and /passive for setup.exe.
  • Setting it is accepting the agreement on behalf of the organisation that deploys it. Read it first at sphereharness.io/eula.
  • Repair and uninstall do not need it. An upgrade does: it installs the newer version as a new installation, so keep ACCEPTEULA=1 in the upgrade line too.
  • When the licence terms change later, the desktop agent asks each person to accept the new terms; a silent install does not answer that for them.

The MSI: msiexec

Install, with a verbose log (always keep the log — it is the first thing support asks for):

msiexec /i CADCoPilot.Inventor.Setup.msi ACCEPTEULA=1 /qn /norestart /l*v C:\Logs\SphereHarness-Inventor.log

Uninstall and repair, with the MSI file or with its product code ({ProductCode}, in the uninstall entry of the registry):

msiexec /x CADCoPilot.Inventor.Setup.msi /qn /norestart /l*v C:\Logs\SphereHarness-Inventor-remove.log
msiexec /fa CADCoPilot.Inventor.Setup.msi /qn /norestart /l*v C:\Logs\SphereHarness-Inventor-repair.log

An upgrade is the newer MSI run with the same install line: it removes the older version of that product first. An older MSI never replaces a newer installed one; it stops with exit code 1638 instead.

Leaving parts out

Every CAD MSI has the same features (the agent-only MSI has all but ClientFeature). Choose them with the standard ADDLOCAL / REMOVE properties:

FeatureWhat it isCan be left out
ClientFeatureThe CAD add-in (not in the agent-only MSI)No — it is the product
CommonFeatureShared configuration and the knowledge folderNo
AgentFeatureThe desktop agent — the chat every add-in opensNo
AgentAutostartFeatureStart the agent when a person signs in to WindowsYes
RagFeatureThe document indexing service on this PCYes

The default is everything. To leave the optional parts out, name them with REMOVE — here the start-at-sign-in entry and the document index:

msiexec /i CADCoPilot.Inventor.Setup.msi ACCEPTEULA=1 REMOVE=AgentAutostartFeature,RagFeature /qn /l*v C:\Logs\sh.log

The install folder is not a choice, silently or in the wizard: everything goes to %ProgramFiles%\SphereHarness and %ProgramData%\SphereHarness, because all the installers share their common parts by path. Do not pass a folder property.

Public properties

PropertyValueWhat it does
ACCEPTEULA1Accepts the licence agreement. Required for every silent or reduced-UI install (above).
SH_SKIP_DOTNET_CHECK1Installs even though a .NET 8 runtime is missing, for a deployment that pushes the runtimes after SphereHarness in the same run. Without the runtimes the product does not start.
TENANT_SERVER_URLURLEnrols the PC with your organisation server. Writes HKLM\Software\Policies\SphereHarness\Tenant, the key a Group Policy would write.
TENANT_SIGNIN_MODEwindows, entra or keyHow the PC signs in to the organisation server. Any other word stops the install.
TENANT_KEY_FILEpathKey sign-in: the path of a copy of the server's key file. The key itself never goes on a command line, into the log or into the registry.
TENANT_IDnameThe tenant's short name.
TENANT_SYNC_INTERVAL_MINminutesOverrides the administrator's sync interval on this PC.
TENANT_ENTRA_TENANT, TENANT_ENTRA_CLIENT, TENANT_ENTRA_SCOPEIDsMicrosoft Entra ID sign-in only.
DOCINDEX_URL, DOCINDEX_MODE, DOCINDEX_AUTH, DOCINDEX_TENANT, DOCINDEX_ENTRA_TENANT, DOCINDEX_ENTRA_CLIENT, DOCINDEX_ENTRA_SCOPE, DOCINDEX_ALLOW_USER_OVERRIDEsee Document Index: IT SetupPoints the PC at an organisation document index. Writes HKLM\Software\Policies\SphereHarness\DocumentIndex.
Remembered and not remembered. The TENANT_* values are remembered: an upgrade or repair without them keeps the PC enrolled. The DOCINDEX_* values are not: pass them again on every upgrade, or set them by Group Policy instead.

A PC enrolled with an organisation server at install time:

msiexec /i CADCoPilot.Inventor.Setup.msi ACCEPTEULA=1 TENANT_SERVER_URL=https://orgserver.corp.example:8644 TENANT_SIGNIN_MODE=windows /qn /l*v C:\Logs\sh.log

The setup.exe: /quiet

SphereHarness.Inventor.Setup.exe /quiet /norestart /log C:\Logs\SphereHarness-Inventor.log ACCEPTEULA=1
  • /quiet shows nothing; /passive shows progress only. Both need ACCEPTEULA=1.
  • /log <file> writes the setup.exe's log and one log per package beside it.
  • These properties are passed on to the MSI: ACCEPTEULA, SH_SKIP_DOTNET_CHECK, every TENANT_* property, and DOCINDEX_URL, DOCINDEX_MODE, DOCINDEX_AUTH, DOCINDEX_TENANT. For the other document-index properties or to choose features (ADDLOCAL / REMOVE), deploy the MSI.
  • Uninstall and repair:
    SphereHarness.Inventor.Setup.exe /uninstall /quiet /log C:\Logs\sh-remove.log
    SphereHarness.Inventor.Setup.exe /repair /quiet /log C:\Logs\sh-repair.log
    The uninstall entry's QuietUninstallString runs the cached copy of the setup.exe, so the original file is not needed to remove it.
  • The Microsoft runtimes it installs stay when SphereHarness is uninstalled: other software may use them.

Exit codes

Both forms return Windows Installer's standard codes:

CodeMeaningWhat to do
0Success—
3010Success; a restart is needed to finish (usually a Microsoft runtime)Restart when convenient. Count it as success in your deployment tool.
1641Success; the installer started a restartOnly without /norestart.
1602Cancelled—
1603The install stoppedRead the log: the reason is there in plain words — no ACCEPTEULA=1, a .NET 8 runtime missing, a wrong TENANT_SIGNIN_MODE, or a newer version already installed.
1618Another installation is runningRetry later; most deployment tools retry 1618 by themselves.
1605Uninstall of a product that is not installedNothing to do.
1638Another version of this product is installed — this one is olderDeploy the current version instead.
1619The package could not be openedCheck the path and that the file was copied completely (compare its SHA-256 with the Downloads page).

Deployment tools

  • Microsoft Intune: add the MSI as a line-of-business app with the command-line arguments ACCEPTEULA=1, or wrap the setup.exe as a Win32 app with the install command SphereHarness.Inventor.Setup.exe /quiet /norestart ACCEPTEULA=1 and the uninstall command SphereHarness.Inventor.Setup.exe /uninstall /quiet.
  • Configuration Manager: the MSI line above as the installation program; return code 3010 as soft reboot.
  • Group Policy software installation cannot pass properties on its own: build a transform (.mst) that sets ACCEPTEULA=1, or deploy with a startup script instead.
  • Close the CAD applications first, or install at start-up: an add-in registers while the CAD system starts, and files in use force a restart.

Tenant administrators: the organisation server, unattended

The organisation server is installed by install-organisation-server.ps1, elevated, on the server. Every step runs without a prompt when nothing has to be typed:

powershell -ExecutionPolicy Bypass -File .\install-organisation-server.ps1 -SourceDir .\pub -TenantId acme -Port 8644 -GenerateAdminPassword
  • -DryRun prints every step and changes nothing — run it first.
  • -GenerateAdminPassword makes the tenant administrator password for you and nothing is typed; it is saved to organisation-server-admin-password.txt in the data folder, readable by Administrators only, and never printed. -SetAdminPassword with the password on redirected standard input also runs unattended; the password is never a parameter.
  • Channel tokens (-TwilioAuthToken, -TelegramBotToken, -SphereHarnessRelayToken) are read from redirected standard input when there is no console; -CertificatePassword takes a SecureString.
  • Over remote PowerShell (Invoke-Command) there is no console to prompt on: use -GenerateAdminPassword.
  • Exit code 0 is success; any failure prints the reason and exits 1.

Remove the server silently:

powershell -ExecutionPolicy Bypass -File .\install-organisation-server.ps1 -Uninstall

That stops and deletes the service, removes its firewall rules and the program folder. The data folder (%ProgramData%\SphereHarness\OrganisationServer: the tenant database, the key, passwords and channel secrets) is kept unless you add -RemoveData, which cannot be undone. The server's configuration (sign-in mode, tenant and the key the PCs use) is kept beside it, and the next install restores it, so an uninstall followed by a reinstall does not re-key the enrolled PCs. If you installed with a non-default -InstallDir or -DataDir, pass the same ones to -Uninstall. Running -Uninstall where nothing is installed is not an error.

Team Import

sphereharness-team-import.exe loads a library pack into the organisation server. It is copied, not installed (delete the folder to remove it), and runs without a prompt with --yes:

sphereharness-team-import --pack C:\Packs\frame-tools.sphereharness-pack --server https://orgserver.corp.example:8644 --token <token> --yes

Exit code 0: everything imported; 1: some items failed; 2: nothing imported. --help prints the options.

Then point the PCs at the server with the TENANT_* properties above or by Group Policy — see Tenant Mode.

See also