Page 1 sur 1

|PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 17 nov. 2023 - 16:21
par Vincent38
Bonjour

Je vous propose le(s) paquet(s) pour installer le connecteur outlook (v9.0.0.1937) pour ZIMBRA en x64 et x86 (en fonction de votre version d'office/outlook).

il y a un soucis avec le .msi, la clé "uninstallkey" déclarée n'est pas la bonne, elle ne matche pas avec celle réellement inscrite dans le registre, donc il faut la corriger, d'ou la modif dans le setup.py.


pour récupérer les .msi (x64 et x86):
https://www.zimbra.com/product/addons/z ... -download/


setup.py pour x64 :

Code : Tout sélectionner

# -*- 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

uninstallkey = ["{E84234CB-FF68-4270-A7EE-422FA03B4E0E}"]

def install():
    # Declaring local variables

    # Installing the software
    print("Installing: ZimbraConnectorOLK_9.0.0.1937_x64.msi")
    install_msi_if_needed('ZimbraConnectorOLK_9.0.0.1937_x64.msi',key='{E84234CB-FF68-4270-A7EE-422FA03B4E0E}')

setup.py pour x86 :

Code : Tout sélectionner

# -*- 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

uninstallkey = ["{C0A5C7CF-452B-4551-A9D5-CE41BC7831AF}"]

def install():
    # Declaring local variables

    # Installing the software
    print("Installing: ZimbraConnectorOLK_9.0.0.1937_x86.msi")
    install_msi_if_needed('ZimbraConnectorOLK_9.0.0.1937_x86.msi',key='{C0A5C7CF-452B-4551-A9D5-CE41BC7831AF}')
    

Chez moi ça fonctionne, mais j'ai un doute sur le fait de devoir indiquer 2 fois l'uninstallkey :D
Cdt

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 10 janv. 2024 - 16:10
par Vincent38
Bonjour!

Mise a jour pour la version v9.0.0.1941, uninstallkey a modifier dans le fichier setup.py :

pour x64 : {89D59DBA-173A-4D13-8AB9-606F132F70FE}

pour x86 : {7B50AD56-1BE7-4006-97E2-B6969930BB5F}

Cdt

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 12 janv. 2024 - 10:36
par jpele
Bonjour,
J'ai crée le paquet à "l'aveugle", nous n'avons pas de quoi tester ce logiciel facilement pour le moment, pouvez-vous svp le tester et nous confirmer son bon fonctionnement, il est téléchargeable ici :
https://wapt.tranquil.it/wapt-testing/t ... EPROD.wapt

Sans votre confirmation le paquet ne sera pas automatiquement publié sur le Store.

Cordialement,
Jimmy

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 12 janv. 2024 - 12:02
par Vincent38
Bonjour
comme je m'y attendais, ça ne fonctionne pas, vu que, comme indiqué dans mon post, la clé d'installation spécifiée dans le msi par zimbra ne correspond pas a celle réellement utilisée.
du coup il se bloque a l'étape de vérification de la clé :

Code : Tout sélectionner

C:\Users\vmorey\Desktop>wapt-get install domoprod-zimbra-connector-outlook
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
installing WAPT packages domoprod-zimbra-connector-outlook
https://wapt1.addomo.domosolaris.com/wapt/domoprod-zimbra-connector-outlook_9.0.0.1941-2_x64_windows_PROD.wapt : 23071462 / 23071462 (100%) (79638 KB/s)
Installing domoprod-zimbra-connector-outlook(=9.0.0.1941-2)
Installing: ZimbraConnectorOLK_9.0.0.1941_x64.msi (9.0.0.1941)
Waiting for key: {E832D508-4385-452B-93CF-18D28BA6270B} to appear in Windows registry
suite du message aprés un Ctrl+C :

Code : Tout sélectionner

2024-01-12 12:06:11,693 CRITICAL Fatal error in install script: AttributeError: 'EWaptSetupException' object has no attribute 'returncode':
Traceback (most recent call last):
  File "C:\Users\vmorey\AppData\Local\Temp\waptmgpv8_ev\setup.py", line 9, in install
    install_msi_if_needed(
  File "C:\Program Files (x86)\wapt\common.py", line 4033, in new_func
    return func(*args, **kwargs)
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1416, in install_msi_if_needed
    error('MSI %s has been installed but the %s can not be found' % (msi,searchparam))
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1892, in error
    raise EWaptSetupException('Fatal error : %s' % reason)
waptutils.EWaptSetupException: Fatal error : MSI ZimbraConnectorOLK_9.0.0.1941_x64.msi has been installed but the key {E832D508-4385-452B-93CF-18D28BA6270B} can not be found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 4083, in install_wapt
    exitstatus = setup.install()
  File "C:\Users\vmorey\AppData\Local\Temp\waptmgpv8_ev\setup.py", line 14, in install
    if e.returncode == 1603:
AttributeError: 'EWaptSetupException' object has no attribute 'returncode'

2024-01-12 12:07:58,670 CRITICAL Package domoprod-zimbra-connector-outlook [x64_fr_PROD] not installed due to errors : AttributeError: 'EWaptSetupException' object has no attribute 'returncode'

Results :

 === install packages ===
  domoprod-zimbra-connector-outlook [x64_fr_PROD] | domoprod-zimbra-connector-outlook (9.0.0.1941-2)

 === errors packages ===
  domoprod-zimbra-connector-outlook [x64_fr_PROD] | domoprod-zimbra-connector-outlook (9.0.0.1941-2)
Cdt

PS : et pour tester vous-même, il suffit juste que vous ayez une installation d'office incluant outlook (en x64 ou x86 en fonction du packet, n'importe quelle version, office 2016, 2019 voir 365)
pas besoin de lancer outlook, si le packet s'installe c'est bon

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 15 janv. 2024 - 12:05
par Vincent38
j'ai prévenu zimbra de l'existence de ce problème vendredi, j’attend leur retour.

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 21 févr. 2024 - 18:48
par Vincent38
Bonjour

Bon, c'est vraiment vicieux en fait, il semble que le problème provienne du fait que l'installeur (.msi) de ZCO se modifie lui-même quand il détecte qu'il est lancé sur une machine n'utilisant pas une version anglaise de windows.

en effet, le .msi est multi-langue, y compris pour le langage du setup lui-même.
il n'y a qu'un seul fichier .msi, mais le lancer sur un windows anglais fait apparaitre le texte d'installation (info sur le copyright, la licence & co, nom des boutons etc...) en anglais, et le lancer sur un windows français fait apparaitre ces mêmes informations en français.
mais cette modification fait que l’installeur génère/utilise un nouveau "product code" (ce n'est pas uniquement la clé de désinstallation qui change, mais toutes les clés correspondant a ZCO dans le registre) différent de celui inscrit dans les information du .msi.

et comme wapt utilise la clé déclarée dans le .msi par défaut, forcement ca ne fonctionne pas.

je ne sais pas trop comment résoudre ca, peut-être que zimbra pourra résoudre le problème, sinon votre outil (luti) est-il capable d'effectuer une installation automatique du .msi pour récupérer la bonne clé et l'injecter dans le paquet avant de le pousser sur le store?

Cdt

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 08 mars 2024 - 15:47
par bastien30
Bonjour,

Je viens de tomber sur ce topic, j'ai justement fait un paquet pour le ZCO très récemment, en me basant sur celui du store TIS.

Mon paquet est multi-architecture et intègre les deux versions, 32bits et 64bits.
La raison est simple, sur un poste 64bits avec un Outlook 32bits d'installé, le paquet en 64bits sera en erreur car le ZCO ne voudra pas s'installer.

Mon paquet détecte la présence d'un Outlook 32bits et installe le ZCO qui correspond (il y a très certainement plus propre à faire au niveau de la détection du Office).
De plus, je définis quelques paramètres du ZCO via le registre (les mêmes paramètres que l'on peut utiliser pour personnaliser le MSI, mais je n'avais pas envie de devoir le refaire à chaque fois :D ) : la désactivation des mises à jour, l'adresse et le port du serveur, l'utilisation de SSL, la désactivation des alias dans la GAL et la désactivation de la synchronisation des signatures.
A adapter en fonction des besoins (il y a d'autres paramètres personnalisables dans cette clé de registre).

Pour palier le fait que l'uninstallkey change en fonction de la langue, j'utilise une fonction uninstall() qui récupère l'uninstallkey du ZCO installé pour le désinstaller. Je n'utilise pas la fonction install_msi_if_needed() du coup.

Pour finir, la seule contrainte est que la version du paquet correspond à la version du ZCO 64bits. S'ils sortent des numéros de versions différents sur les deux architectures, alors ça pourrait poser problème (mais il y a peu de chance que ça arrive je pense).

Voici le code du setup.py :

Code : Tout sélectionner

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

def install():        
    # Check architecture and if Office is 32bits on 64bits system
    if is32() or isdir(makepath(programfiles32, r'Microsoft Office', r'root')):
        print(r'INFO: x86 installation detected')
        bin_name = 'ZimbraConnectorOLK_x86.msi'
    else:
        bin_name = 'ZimbraConnectorOLK_x64.msi'
    
    installed_zco = installed_softwares('Zimbra Connector for Microsoft Outlook')
    if not installed_zco or installed_zco[0]['version'] < Version(control.get_software_version(), 4) or WAPT.options.force :
        try:
            # Installing the software
            run(r'msiexec /qn /norestart /i %s' % bin_name, timeout=600)
        except Exception as e:
            if e.returncode == 1603:
                print(f'INFO: Microsoft Outlook needs to be installed.')
                error(e)
            else:
                error(e)
    else:
        print('%s version %s is already installed, skipping...' % (control.name, installed_zco[0]['version']))
    
    # Customize installation
    with reg_openkey_noredir(HKEY_LOCAL_MACHINE, r'SOFTWARE\Zimbra', sam=KEY_WRITE, create_if_missing=True) as key:
        reg_setvalue(key, 'SkipVersionUpgrade', '65535', REG_SZ)  # disable auto-update
        reg_setvalue(key, 'ZimbraServerName', 'smtp.mydomain.tld', REG_SZ)  # Zimbra server name
        reg_setvalue(key, 'ZimbraServerPort', 443, REG_DWORD)  # Zimbra server port
        reg_setvalue(key, 'ZimbraConnectionMethod', 1, REG_DWORD)  # use SSL
        reg_setvalue(key, 'GalSyncDisableAliases', 1, REG_DWORD)  # disable alias in GAL
        reg_setvalue(key, 'SigSyncEnabled', 0, REG_DWORD)  # disable signature sync

def uninstall():
    if installed_softwares('Zimbra Connector for Microsoft Outlook'):
        key = installed_softwares('Zimbra Connector for Microsoft Outlook')[0]['key']
        run('msiexec /qn /norestart /X %s' % key)

def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    url = 'https://www.zimbra.com/product/addons/zimbra-connector-for-outlook-download/'

    # Getting latest version from official sources
    print('URL used is: %s' % url)
    for arch in 'x86', 'x64':
        print('Processing %s version...' % arch)
        for bs_search in bs_find_all(url, 'a', 'rel', 'noopener', proxies=proxies):
            if '_%s.msi' % arch in bs_search.get('href', ''):
                download_url = bs_search['href']
                latest_bin = download_url.split('/')[-1]
                version = latest_bin.split('_')[1]
                break
        print('Latest %s %s version is: %s' % (control.name, arch, version))
        print('Download URL for %s is: %s' % (arch, download_url))

        # Downloading latest binaries
        print('Downloading: %s' % latest_bin)
        latest_bin = '%s_%s' % (latest_bin.split('_')[0], latest_bin.split('_')[2])
        wget(download_url, latest_bin, proxies=proxies)

        # Checking version from file
        version_from_file = get_version_from_binary(latest_bin)
        if Version(version_from_file, 4) == Version(version, 4):
            print(f'INFO: Binary file version ({version_from_file}) corresponds to online version ({version})')
        else:
            error(f'ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})')

    # Changing version of the package
    if Version(version, 4) > Version(control.get_software_version(), 4):
        print('Software version updated (from: %s to: %s)' % (control.get_software_version(), Version(version)))
        control.set_software_version(version)
        control.save_control_to_wapt()
        package_updated = True
    else:
        print('Software version up-to-date (%s)' % Version(version))

    # Validating or not update-package-sources
    return package_updated

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 11 mars 2024 - 15:21
par Vincent38
ouah, joli boulot!
j'y avais pensé, mais trop de boulot pour faire ca :D
je l'adopte, merci!!!

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 12 mars 2024 - 00:35
par Vincent38
sinon pour le pb de l'uninstall key pas correcte, j'ai eu un retour de zimbra, ils ont confirmés le pb, un bug a été ouvert, avec un peu de chance ca sera corrigé pour les prochaines version du ZCO. :D

Re: |PAQUET] ZIMBRA-ZCO 9.0.0.1941 (x64 et x86)

Publié : 12 mars 2024 - 15:29
par bastien30
Bonjour,

Merci pour le retour.
Effectivement s'ils le corrigent c'est pas plus mal.

Mais vu la vitesse de résolution des bugs chez eux, je pense que c'est pas pour tout de suite :roll: