Skip to main content

MSI Configuration

A guide for administrators: how to deploy the YuChat desktop app across an organization, preconfigure the server connection, and manage updates.

Download the installers from the official website: https://yuchat.ai/downloads. For Windows, there is an MSI package for centralized deployment and an EXE installer.

Choosing a Deployment Method

ScenarioMethodInstall locationAdministrator rights
Install for all users of a computer: Group Policy assigned to computers, SCCM or Intune in device contextMSI packageC:\Program Files\YuChatRequired
Users have no administrator rights: Group Policy assigned to users, SCCM or Intune in user contextMSI package with MSIINSTALLPERUSER=1%LOCALAPPDATA%\Programs\YuChatNot required
Users have no administrator rights, and the app should update itselfEXE installer with /currentuser%LOCALAPPDATA%\Programs\YuChatNot required

MSI Package

Silent Installation

msiexec /i YuChat….msi /qn

With no additional properties, the package installs for all users of the computer into C:\Program Files\YuChat. This requires administrator rights: run the command from an elevated command prompt. When assigned through Group Policy, the installation runs as the system account, which is sufficient.

An interactive installation also defaults to installing for all users.

To get a detailed installation log, add /l*v:

msiexec /i YuChat….msi /qn /l*v C:\Temp\yuchat-msi.log

Deploying with Group Policy

  1. Copy the MSI package to a network share that domain computers can read, for example \\dc01\software\YuChat\. The installation runs as the computer account, so the package must be on a share, not on a local disk.
  2. In Group Policy Management, edit the Group Policy Object linked to the organizational unit of the target computers.
  3. Go to Computer Configuration → Policies → Software Settings → Software installation.
  4. Select New → Package, point to the package by its network (UNC) path, and choose the Assigned deployment method. To set installation parameters, choose Advanced instead and add a transform on the Modifications tab.
  5. On the client computer, run gpupdate /force and restart it. The app installs during startup without user involvement.
caution

A transform can only be added when the package is created in the policy; it cannot be added later.

Upgrading with Group Policy

  1. Put the MSI package of the new version into the same network share.
  2. In the same Group Policy Object, create a package for it and add the same transform, if one was used.
  3. On the Upgrades tab of the new package, add the previous YuChat package and select Package can upgrade over the existing package.
  4. Run gpupdate /force and restart the computers: the new version replaces the previous one.

A new version installs over the previous one and removes it; installing an older version over a newer one is blocked. Use stable releases: each next version number must be strictly greater than the previous one.

Installing into a User Profile Without Administrator Rights

The same MSI package can be installed into a user profile. To do so, set the MSIINSTALLPERUSER=1 property:

msiexec /i YuChat….msi /qn MSIINSTALLPERUSER=1

The app is installed into %LOCALAPPDATA%\Programs\YuChat. No administrator rights are needed, and there is no User Account Control (UAC) prompt.

Any tool that runs in user context can perform this installation:

  • Group Policy assigned to users: User Configuration → Policies → Software Settings → Software installation;
  • SCCM installing for the user;
  • Microsoft Intune with the "User" install behavior.

Group Policy does not pass command-line parameters to the package, so in that case set the property in a transform.

Without MSIINSTALLPERUSER, the installation stays per-machine, and existing policies assigned to computers keep working as before.

Limitations of a per-user installation
  • A user can have only one installation. If the app is already installed, running the package again as the same user in the other scope does not create a second copy: the command succeeds, but the existing installation stays as it was. To change the installation scope, uninstall the app first.
  • An outdated entry remains in the list of programs after the app updates itself. Even a per-user installation registers the package in Programs and Features for the whole computer. The app updates without asking for administrator rights and therefore cannot remove that entry: the new version installs and works, but an entry with the previous version remains in the list, and only an administrator can remove it. If you rely on the app updating itself, use the EXE installer: it registers only in the user's profile.

Install Directory

All app files are installed into a single directory set by the APPLICATIONFOLDER property. The desktop and Start menu shortcuts point to the same directory, so one property is enough to relocate the installation:

msiexec /i YuChat….msi /qn APPLICATIONFOLDER="C:\apps\YuChat"

The property works in both installation scopes and applies from the command line as well as from a transform, including Group Policy deployments.

  • For an installation for all users, choose a directory with restrictive permissions. A new folder at the root of a drive inherits permissions that let standard users write files into it.
  • For a per-user installation, the user must be able to write to the chosen directory.
  • Do not install the app into one directory in different scopes. If you need to reuse a directory, uninstall the previous installation first.

MSI Transform (.mst)

When assigned through Group Policy, the package receives no command-line parameters. Installation properties are set in a transform — an .mst file that modifies the package's Property table.

You can prepare a transform in any MSI table editor, for example Orca from the Windows SDK: create a new transform for the MSI package, add rows with the properties and values you need to the Property table (for example, SERVER with the value https://yuchat.yourcompany.com), and save the transform as an .mst file.

To check a transform outside Group Policy:

msiexec /i YuChat….msi TRANSFORMS=YuChat….mst /qn
caution

Add the transform to the package of every new version. A package without a transform installs the app with default parameters: into C:\Program Files\YuChat and for all users. An existing settings.json file is not reset.

MSI Package Properties

Connection and app behavior parameters are set with package properties. During installation, the package writes them to the settings.json file: an existing file is updated, and only the keys you set are changed.

MSI propertysettings.json keyValue
SERVERserverServer URL
LANGlangInterface language
AUTOUPDATEautoUpdateAutomatic update checks: on or off
AUTOSTARTautoStartStart with the system: on or off
CHANGE_URLchangeURLAllow connecting to a different server: on or off
PROXYproxyProxy server URL
USE_SYSTEM_CAuseSystemCaTrust certificates from the system store: on or off
CA_CERTS_FILEcaCertsFilePath to a PEM file with additional trusted certificates
SENTRYLOGSsentryLogsSend error reports: on or off

Where the package writes the file depends on the account the installation runs as:

  • as the system account (Group Policy assigned to computers, SCCM in device context) — to the machine-wide file C:\ProgramData\YuChat\settings.json;
  • as a user — to that user's %APPDATA%\YuChat\settings.json.
caution

If an administrator installs the package manually from the command line, the parameters go into the administrator's own profile, not to other users of the computer. For them, deploy the machine-wide settings.json separately.

The following properties control only the installation and are not written to settings.json:

MSI propertyPurpose
MSIINSTALLPERUSER1install into the user profile
APPLICATIONFOLDERInstall directory

Example of an installation with parameters:

msiexec /i YuChat….msi /qn SERVER=https://yuchat.yourcompany.com LANG=en CHANGE_URL=off

What the Package Writes to the System

  • App files go only into the install directory; shortcuts go to the desktop and the Start menu.
  • In the registry: the standard Windows Installer registration (the Programs and Features entry and product information) and one value of its own, MsiInstallLocation, under Software\e6b01cde-8e15-5168-8ae5-99734e533509 — in HKEY_LOCAL_MACHINE for an installation for all users and in HKEY_CURRENT_USER for a per-user one. The update mechanism uses this value, and it is removed together with the app.
  • On startup, the app may write an InstallLocation value to the same key, which the update mechanism also uses.

Uninstalling

  • With Group Policy: Software installation → package → All Tasks → Remove → Immediately uninstall the software from users and computers. The app is removed on the next computer startup.
  • Manually: msiexec /x YuChat….msi /qn. A per-user installation is removed by the same user who installed it.

The settings.json file is not deleted when the app is uninstalled.

EXE Installer

The EXE installer suits cases where users have no administrator rights and the app should update itself. To install into the user profile:

YuChat….exe /S /currentuser
SwitchPurpose
/SSilent installation without windows
/currentuserInstall into the current user's profile, %LOCALAPPDATA%\Programs\YuChat
/allusersInstall for all users of the computer. Requires administrator rights
/D=pathInstall directory
YuChat….exe /S /currentuser /D=C:\apps\YuChat
caution

Put /D= last and without quotes, even if the path contains spaces.

An app installed into a user profile updates itself without asking for administrator rights.

Any tool that runs in user context can perform the installation: a Group Policy logon script, SCCM installing for the user, or Microsoft Intune with the "User" install behavior. In a logon script, check whether the app is already installed, for example by the presence of %LOCALAPPDATA%\Programs\YuChat\YuChat.exe.

Connection parameters for such an installation are set with the machine-wide settings.json.

settings.json File

The settings.json file sets connection and app behavior parameters. The app reads it on every start, so changes apply after a restart. Place the file before the first start so that the user connects to the right server right away.

File location:

  • Windows, for one user: %APPDATA%\YuChat\settings.json
  • Windows, for all users of the computer: C:\ProgramData\YuChat\settings.json
  • macOS: ~/Library/Application Support/YuChat/settings.json
  • Linux: ~/.config/YuChat/settings.json
caution

If a user has their own %APPDATA%\YuChat\settings.json, the machine-wide file is not read at all: values from the two files are not merged. For a fully managed deployment, do not deploy a per-user file.

You can deploy the machine-wide file with Group Policy Preferences — Computer Configuration → Preferences → Windows Settings → Files — or with SCCM. The file applies regardless of which installer installed the app.

Example settings.json:

{
"server": "https://yuchat.yourcompany.com",
"lang": "ru",
"autoUpdate": "off",
"changeURL": "off",
"proxy": "protocol://username:password@proxy_host:proxy_port"
}
KeyDescription
serverServer URL used to sign in
langInterface language: ru, en, de, es, fr, it, pt, zh, zh-TW. Defaults to the system language
autoUpdateAutomatic update checks: on (default) or off
autoStartStart with the system: on or off
changeURLAllow connecting to a different server: on or off
proxyProxy server URL
useSystemCaTrust certificates from the system store: on (default) or off
caCertsFileAbsolute path to a PEM file with additional trusted certificates, such as your organization's root certificate
sentryLogsSend error reports: on (default) or off

Managing Updates

"autoUpdate": "off" (or the AUTOUPDATE=off property) turns off automatic update checks — on startup and periodic ones. The Check for Updates item remains in the app: if a user runs the check manually, the update is downloaded and installed when the app exits.

If your organization's policy requires removing updates from the app entirely, contact support.

Troubleshooting

  • The update was not installed. Make sure the version number of the new package is strictly greater than the installed one.
  • Parameters were not applied. Check that settings.json exists in the expected location and contains valid JSON, and that the machine-wide file is not overridden by a per-user %APPDATA%\YuChat\settings.json.
  • A per-user installation by a standard user fails with error 1603. Find RemoveExistingProducts in the installation log. Error 1714 means a registration of a previous installation remains in the user's profile. Remove it as the same user with msiexec /x YuChat….msi /qn and install again.