Deploying Teamviewer 13 with SCCM and detect difference between host and full

jdoty
jdoty Posts: 3
edited May 2023 in General questions

We are deploying Teamviewer 13 host to most clients and Teamviewer Full to a select group.  We don't want the Host version installing if the Full version of 12 or 13 is already installed.  I assume the 13 host will not install over 13 full, but how do I detect 12 full as opposed to 12 host.  Basicly we need a detection method for the SCCM deployment.  We looked at the Teamviewer.exe version numbers and they are the same for host and full.  So this is not helping.  Is there a Reg entry that is different?

Comments

  • Minidou
    Minidou Posts: 3

    Hi,

    the following registry keys exist only on a full installation:

    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tvc
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tvlink
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tvs

    Hope it will be helpful

    regards,

    Minidou

  • pilgi3
    pilgi3 Posts: 3 ✭✭

    I am working on the same situation.

    It's very frustrating because there are so difficult to detect the differences. IMHO that's not enough. I want a Regkey with ther installed Version like "Name = TeamViewer 14 Host or TeamViewer 14". The second way is to fill de ComObject like here: https://community.teamviewer.com/t5/Knowledge-Base/Command-line-parameters/ta-p/34447 

    There is the .ApplicationType and this could be a good place. 

  • Hello,

    Try this PowerShell code:

    $installedSoftware = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -like "*teamviewer*"}

    if ($installedSoftware){
    if (Select-String -InputObject $installedSoftware.DisplayName -Pattern "Host"){
    Write-Host "Host Client Version is installed"
    }
    else{
    Write-Host "Full Client Version is installed"
    }
    Write-host "installed version is" $installedSoftware.VersionMajor

    }
    else {
    Write-Host "TeamViewer is not installed"
    }

  • pilgi3
    pilgi3 Posts: 3 ✭✭

    Hello!

    Thank you for the script, it works.

    I searched further and found another way:


    $detecttv = (Get-CimInstance -ClassName win32_installedwin32program | Select-Object -Property Name, Version | Where-Object {$_.Name -match "TeamViewer*"})

    The command take a few seconds, but there is no need to check the system architecture before.

    With your script it is necessary to check 32-bit or 64-bit and change the regkey path.

    There is another way to check the installed TeamViewer:

    Get-CimInstance -ClassName win32_product -filter "Name like 'TeamViewer%'"

    This works only if the teamviewer was installed through MSI and not EXE.

    I think i will send TeamViewer a suggestion.

  • Minidou
    Minidou Posts: 3

    Hi pilgi3,

    You're right! Try this one:

    $installedSoftware = Get-Package -Name "*teamviewer*"

    if ($installedSoftware){
    if (Select-String -InputObject $installedSoftware.Name -Pattern "Host"){
    Write-Host "Host Client Version is installed"
    }
    else{
    Write-Host "Full Client Version is installed"
    }
    Write-host "installed version is" $installedSoftware.Version

    }
    else {
    Write-Host "TeamViewer is not installed"
    }

    Enjoy ;)

  • flospi
    flospi Posts: 44 ✭✭

    My solution is similar to Hirsch's, but you can use it in a CMD file:

    FOR /F "USEBACKQ SKIP=1" %%F IN (`wmic product where "Description like 'TeamViewer'" get Description ^| findstr /r /v "^$"`) DO SET TVHOST=Full
    FOR /F "USEBACKQ SKIP=1" %%F IN (`wmic product where "Description like 'TeamViewer Host'" get Description ^| findstr /r /v "^$"`) DO SET TVHOST=Host