Page 1 of 1

[RESOLVED] Veyon Add-ons Package

Published: June 9, 2026 - 04:07
by lfkl
Good morning,

We actively use Veyon and everything works.
We will be purchasing certain add-ons from Veyon.
This requires the installation of the plugin: veyon-addons-4.10.4.0-win64-setup.exe
See document:
https://veyon.io/en/addons/

Below I'm sharing a package that's certainly not very well coded but functional:

Code: Select all

# -*- coding: utf-8 -*-
from setuphelpers import *

r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()

"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls

def install():
    bin_name = glob.glob("veyon-addons-*.exe")[0]
    silentflags = "/S"
    install_exe_if_needed(
        bin_name,
        silentflags=silentflags,
        key="",
        min_version=control.get_software_version(),
        timeout=300,
    )
If this package could ever be optimized and made available on the Wapt Store with "update.py", it would be greatly appreciated here ;)

Good day.

Re: Veyon Add-ons Package

Published: June 9, 2026 - 09:31
by italbot
Hello,

I'll take a look at that. So, ideally, this package should be added as a dependency of the tis-veyon package?

Regards,

Ingrid

Re: Veyon Add-ons Package

Published: June 9, 2026 - 10:33
by lfkl
Hi Ingrid,

Thank you so much!

What's important is that the "tis-veyon" package and the "tis-add-on-veyon" package have the same version number, according to the documentation; otherwise, there's a risk of incompatibility.

I contacted the Veyon developer, and they informed me that this add-on package is only needed on the client and master workstation side and that it must include the institution's specific "Veyon installation ID" license.
So, it might not necessarily be a dependency, as other institutions may not make the same choice as us, and the institution's specific license must also be included in this package.

However, it's not a deal-breaker; even without a license, it only allows the addition of demo features if placed as a dependency.

Have a good day!

Re: Veyon Add-ons Package

Published: June 9, 2026 - 10:43
by italbot
Okay, indeed, if it also needs to be the same version, I won't make it a dependency.
I'll keep you posted if I manage to package it.

Best regards,

Ingrid

Re: Veyon Add-ons Package

Published: June 9, 2026 - 5:37 PM
by italbot
The update_package() function is working correctly. However, is there any way to know when these add-ons are installed or uninstalled?

Sincerely,

Ingrid

Re: Veyon Add-ons Package

Published: June 10, 2026 - 04:00
by lfkl
However, is there no way to know when these add-ons are installed or uninstalled?
Indeed, I haven't seen any uninstallation option via the Windows control panel (no entry after installation) or even a key via the wapt-get list-registry command...

I've only noticed that installing a newer version of "Veyon" seems to make its plugins disappear from "Veyon Configurator" until the newer version of "Veyon add-ons" is reinstalled

In our institution, we have chosen to create different Veyon packages depending on whether "Veyon Master" is installed or not.
Examples:
Veyon-cdi-profs, Veyon-maths-profs, Veyon-labs-profs, etc... install "Veyon Master".
However, it will not be assigned to the "veyon-eleves" package

In the end, it's not a blocking issue; we can assign "Veyon adds-on" as a dependency of the "Veyons-xxx-profs" packages, we just need to make sure we have the same version for our packages.

Best regards.

Re: Veyon Add-ons Package

Published: June 11, 2026 - 12:23
by italbot
Good morning,

I'm sending you the code I wrote for the `update_package()` and the installation, as well as a pseudo-uninstallation, because I did find a registry key for the add-ons, but it doesn't remove the files installed in the Veyon folder. I tried running `audit()` to verify the installation by comparing the files with those installed by default in Veyon, but I doubt these files will remain the same in future versions. That's why we'll discuss internally whether to add it to the store. At least you can create the package yourself using the code below:

Code: Select all

from setuphelpers import *

def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    update_dict = {"windows": ".exe"}
    url = "https://veyon.io/en/addons/#download"

    # Getting latest version information from official sources
    print("API used is: %s" % url)
    for bs_search in bs_find_all(url, "a", "class", "btn btn-dl btn-primary", proxies=proxies):
        if "setup.exe" in bs_search["href"]:
            download_url = bs_search["href"]
            latest_bin = download_url.split("/")[-1]
            version = latest_bin.split("-",3)[2]
            break

    # Downloading latest binaries
    print(f"Latest version of {control.name} is: {version}")
    print("Download URL is: %s" % download_url)
    if not isfile(latest_bin):
        print("Downloading: %s" % latest_bin)
        wget(download_url, latest_bin, proxies=proxies)
    else:
        print("Binary is present: %s" % latest_bin)

    # Changing version of the package
    if Version(version) > Version(control.get_software_version()):
        print(f"Software version updated (from: {control.get_software_version()} to: {Version(version)})")
        package_updated = True
    else:
        print(f"Software version up-to-date ({Version(version)})")

    # Deleting binaries
    for f in glob.glob("*.exe"):
        if f != latest_bin:
            remove_file(f)
    
    control.set_software_version(version)
    control.save_control_to_wapt()

    return package_updated

Code: Select all

# -*- coding: utf-8 -*-
from setuphelpers import *


def install():
    # Declaring local variables
    bin_name = glob.glob("veyon-addons-*-win64-setup.exe")[0]

    # Installing the software
    print("Installing: %s" % bin_name)
    install_exe_if_needed(
        bin_name,
        silentflags="/S",
        key="",
        min_version=control.get_software_version(),
    )


def audit() : 

    files_list = ["auvidus.dll","chat.dll", "entraidconnector.dll", "internetaccesscontrol.dll", "internetaccesscontrol-firewall.dll", "internetaccesscontrol-routing.dll", "licensing.dll", "network-discovery.dll", "screenrecorder.dll"]
    
    if isdir(makepath(programfiles, "Veyon", "plugins")) : 
        common_elements = set(files_list) - set(os.listdir(makepath(programfiles, "Veyon", "plugins")))
        if list(sorted(common_elements)) == sorted(files_list): 
            result =  "OK"
        else : result = "ERROR"
    else : 
        result = "ERROR"

    return result


def uninstall() : 

    if reg_key_exists(HKEY_LOCAL_MACHINE, makepath("SOFTWARE", "WOW6432Node", r"Veyon Solutions")) :
        registry_deletekey(HKEY_LOCAL_MACHINE, makepath("SOFTWARE", "WOW6432Node"), r"Veyon Solutions", recursive = True)
Good day.

Sincerely,

Ingrid

Re: Veyon Add-ons Package

Published: June 12, 2026 - 05:55
by lfkl
Hello Ingrid,

Thank you very much for this package and the setup.py file, it works very well for installation and updating.

However, the audit is flawed:

Code: Select all

Installing: veyon-addons-4.10.4.0-win64-setup.exe
Installing: veyon-addons-4.10.4.0-win64-setup.exe (4.10.4.0)
After checking in "C:\Program Files\Veyon\plugins", all the plugin files are indeed present:

Code: Select all

files_list = ["auvidus.dll","chat.dll", "entraidconnector.dll", "internetaccesscontrol.dll", "internetaccesscontrol-firewall.dll", "internetaccesscontrol-routing.dll", "licensing.dll", "network-discovery.dll", "screenrecorder.dll"]
In addition to the basic ones installed by Veyon.

However, the uninstallation doesn't seem to work, but in our case, it's not a big deal.

Thank you and have a great day.

Re: Veyon Add-ons Package

Published: June 12, 2026 - 11:31
by italbot
Good morning,

Can you retest the audit with this script?

Code: Select all

def audit() : 

    files_list = ["auvidus.dll","chat.dll", "entraidconnector.dll", "internetaccesscontrol.dll", "internetaccesscontrol-firewall.dll", "internetaccesscontrol-routing.dll", "licensing.dll", "network-discovery.dll", "screenrecorder.dll"]

    files_list = sorted(files_list)
    
    if isdir(makepath(programfiles, "Veyon", "plugins")) : 
        installed_files_list = sorted(os.listdir(makepath(programfiles, "Veyon", "plugins")))
        common_elements = set(files_list).intersection(installed_files_list)
        if sorted(common_elements) == sorted(files_list): 
            result =  "OK"
        else : result = "ERROR"

    else : 
        result = "ERROR"

    return result
Regarding uninstallation, that's why I'm hesitant to add such a package to the store. You could add the option to remove installed files, but I imagine that will change over time...

Sincerely,

Ingrid

[SOLVED] Re: Veyon Add-ons Package

Published: June 15, 2026 - 04:23
by lfkl
Good morning,

The audit is now working well by classifying the files.
files_list = sorted(files_list)
Thank you for your help with this package and have a good day!