Desktop app to install, update, launch, and uninstall Nuvio on:
- Samsung Tizen TVs
- LG webOS TVs
For Samsung, the flow is designed as a Nuvio version of TizenBrewInstaller: the installed package is the Nuvio WGT published in the GitHub release.
The app automatically downloads the latest Nuvio package from the GitHub release configured in installer.config.json.
Available actions in the app:
Install / Update: uses the same flow for first installation and updates. Downloads the latest GitHub release.Launch: opens Nuvio on the TV.Uninstall: removes Nuvio from the TV.
For development:
npm install
npm startTo build the package:
npm run dist:win
npm run dist:macWith the current configuration, standalone runnable apps are generated without an installer:
dist/Nuvio-WebTV-Installer-<version>-Windows.exefor Windowsdist/mac-arm64/Nuvio WebTV Installer.appfor macOS Apple Silicon
LG uses an .ipk file.
Samsung uses a .wgt file. Tizen Studio is not strictly required to create the Nuvio WGT. From the main repo, you can generate it with:
npm run package:tizenThe generated WGT uses the repo's local nuvio.env.js.
For Samsung P2P playback, the WGT must also include the local Tizen Web Service: http://tizen.org/feature/web.service, services/tizen/enginefs-service.js, and services/tizen/runtime/media-http.cjs. The installer checks these before signing and installing the package.
The installer automatically downloads the correct asset from the latest GitHub release:
.ipkfor LG.wgtfor Samsung
Before using the installer:
- Open
Appson the TV. - Press
12345on the remote. - Enable
Developer Mode. - Enter the computer IP as
Host PC IP. - Restart the TV.
For Samsung, the installer first tries the direct connection used by TizenBrewInstaller, without requiring sdb to be installed on the PC. If the direct connection fails, it tries sdb as a fallback when available.
The tizen command is not required for the main flow.
The installer tries to:
- connect directly to the TV in Developer Mode;
- download and copy the Nuvio WGT to the TV;
- install it with
vd_appinstall, like TizenBrew/TizenBrewInstaller; - use
sdbortizenfallbacks only when available.
The installer uses the same approach as TizenBrewInstaller:
- reads the TV DUID;
- opens Samsung Account login on first use and uses the internet to create the certificate;
- creates a Samsung certificate for that TV;
- saves the certificate in the app data folder;
- automatically re-signs the
.wgtbefore installing it.
You do not need to provide manual .p12 files.
For LG, the app includes @webos-tools/cli, so the user does not need to manually install the LG webOS SDK CLI or ares-install.
Before using the installer:
- Install and open the
Developer Modeapp on the LG TV. - Enable Developer Mode.
- Enable
Key Server. - Read the passphrase shown by the Developer Mode app.
- In the installer, select
LG TV, enter the IP and passphrase, then pressInstall / Update.
The LG device name is optional. If you leave it empty, the installer automatically creates a local device from the TV IP.
The app internally uses:
ares-setup-device
ares-novacom --getkey
ares-install
ares-launch
If the TV was already configured in the past, you can also enter only the device name or IP and leave the passphrase empty.
Note: @webos-tools/cli brings many transitive npm dependencies. This does not mean the app is automatically dangerous, but it increases maintenance, package size, and the chance of antivirus false positives. For clean public distribution, app signing is still recommended.
Edit installer.config.json:
{
"githubRepo": "NuvioMedia/NuvioWeb",
"webos": {
"appId": "space.nuvio.webos",
"assetPattern": "\\.ipk$"
},
"tizen": {
"appId": "NuvioTV.NuvioTV",
"packageId": "NuvioTV",
"appIds": ["NuvioTV.NuvioTV", "NuvioTV"],
"assetPattern": "\\.wgt$"
}
}The GitHub release must contain at least:
- one
.ipkasset for LG; - one
.wgtasset for Samsung.
No tool can guarantee that an exe will never be flagged. To reduce false positives:
- sign the exe with a code-signing certificate;
- avoid dynamic downloads of unnecessary tools;
- publish reproducible builds from a clean repo;
- do not include vulnerable npm dependencies unless they are truly needed.