|PACCHETTO] ZIMBRA-ZCO 9.0.0.1941 (x64 e x86)

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

17 novembre 2023 - 16:21

Buongiorno

Ti offro il/i pacchetto/i per installare Outlook Connector (v9.0.0.1937) per ZIMBRA in x64 e x86 (a seconda della tua versione di Office/Outlook).

C'è un problema con il file .msi; la chiave "uninstallkey" dichiarata è errata e non corrisponde a quella effettivamente registrata nel registro, quindi deve essere corretta, da qui la modifica in setup.py.


Per recuperare i file .msi (x64 e x86):
https://www.zimbra.com/product/addons/z...-download/


setup.py per x64:

Codice: Seleziona tutto

# -*- 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 per x86:

Codice: Seleziona tutto

# -*- 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}')
    

Per me funziona, ma non sono sicuro di dover immettere due volte la chiave di disinstallazione :D
Comandante
Ultima modifica di Vincent38 il 10 gennaio 2024 alle 16:27, modificato 1 volta.
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

10 gennaio 2024 - 16:10

Ciao!

Aggiornamento per la versione v9.0.0.1941, è necessario modificare uninstallkey nel file setup.py:

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

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

Cordiali saluti
Avatar utente
jpele
Messaggi: 156
Registrazione: 4 marzo 2019 - 12:01
Posizione: Nantes

12 gennaio 2024 - 10:36

Ciao,
ho creato il pacchetto "alla cieca", dato che al momento non abbiamo un modo semplice per testare questo software. Potresti per favore testarlo e confermare che funzioni correttamente? Puoi scaricarlo qui:
https://wapt.tranquil.it/wapt-testing/t ... EPROD.wapt

Senza la tua conferma, il pacchetto non verrà pubblicato automaticamente sullo Store.

Cordiali saluti,
Jimmy
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

12 gennaio 2024 - 12:02

Buongiorno
Come mi aspettavo, non funziona, poiché, come indicato nel mio post, la chiave di installazione specificata nell'msi da zimbra non corrisponde a quella effettivamente utilizzata.
Quindi si blocca nella fase di verifica della chiave:

Codice: Seleziona tutto

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
Il resto del messaggio dopo aver premuto Ctrl+C:

Codice: Seleziona tutto

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)
Comandante

PS: E per provarlo tu stesso, ti serve solo un'installazione di Office che includa Outlook (x64 o x86 a seconda del pacchetto, qualsiasi versione, Office 2016, 2019 o anche 365)
Non è necessario avviare Outlook: se il pacchetto si installa, è tutto
Ultima modifica di Vincent38 il 15 gennaio 2024 alle 12:06, modificato 1 volta.
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

15 gennaio 2024 - 12:05

Ho segnalato questo problema a Zimbra venerdì e aspetto la loro risposta.
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

21 febbraio 2024 - 18:48

Ciao

. Beh, in realtà è piuttosto complicato. Sembra che il problema derivi dal fatto che il programma di installazione di ZCO (.msi) si modifica quando rileva di essere eseguito su una macchina che non utilizza una versione inglese di Windows.

Infatti, il file .msi è multilingue, inclusa la lingua del programma di installazione stesso.
Esiste un solo file .msi, ma eseguendolo su una macchina Windows in inglese, il testo di installazione (informazioni sul copyright, dettagli della licenza, nomi dei pulsanti, ecc.) viene visualizzato in inglese, mentre eseguendolo su una macchina Windows in francese, le stesse informazioni vengono visualizzate in francese.
Questa modifica, però, fa sì che il programma di installazione generi/utilizzi un nuovo "codice prodotto" (non cambia solo la chiave di disinstallazione, ma tutte le chiavi corrispondenti a ZCO nel registro di sistema) diverso da quello indicato nel file .msi.

E poiché wapt utilizza per impostazione predefinita la chiave dichiarata nel file .msi, ovviamente non funziona.

Non sono sicuro di come risolvere questo problema. Forse Zimbra può aiutarmi. In alternativa, il vostro strumento (luti) è in grado di installare automaticamente il file .msi per recuperare la chiave corretta e inserirla nel pacchetto prima di pubblicarlo sullo store?

Cordiali saluti
bastien30
Messaggi: 38
Registrazione: 8 marzo 2024 - 15:21

8 marzo 2024 - 15:47

Buongiorno,

Mi sono appena imbattuto in questo argomento. Di recente ho creato un pacchetto per ZCO, basato su quello dello store TIS.

Il mio pacchetto è multi-architettura e integra entrambe le versioni, a 32 bit e a 64 bit.
Il motivo è semplice: su un computer a 64 bit con installata una versione di Outlook a 32 bit, il pacchetto a 64 bit non funzionerà perché ZCO non verrà installato.

Il mio pacchetto rileva la presenza di Outlook a 32 bit e installa lo ZCO corrispondente (esiste sicuramente un modo più pulito per rilevare Office).
Inoltre, definisco alcuni parametri ZCO tramite il registro (gli stessi parametri che possono essere utilizzati per personalizzare l'MSI, ma non volevo doverlo fare ogni volta) :D ): disabilitazione degli aggiornamenti, indirizzo e porta del server, utilizzo di SSL, disabilitazione degli alias nella GAL e disabilitazione della sincronizzazione delle firme.
Da adattare in base alle esigenze (in questa chiave di registro sono presenti altri parametri personalizzabili).

Per risolvere il problema che la chiave di disinstallazione cambia a seconda della lingua, utilizzo una funzione uninstall() che recupera la chiave di disinstallazione dello ZCO installato per disinstallarlo. Pertanto, non utilizzo la funzione install_msi_if_needed().

Infine, l'unico vincolo è che la versione del pacchetto deve corrispondere alla versione ZCO a 64 bit. Se rilasciassero numeri di versione diversi per le due architetture, potrebbe causare un problema (ma ritengo che sia improbabile).

Modifica 03/01/2025:
  • È stata aggiunta una funzione di controllo per ripristinare le chiavi di registro di Windows Search dallo ZCO che sono state eliminate dopo un aggiornamento automatico di Office (ho personalmente impostato il parametro "audit_schedule" su "10m" nel file di controllo), altrimenti l'utente non amministratore riceve una richiesta di UAC ogni volta che Outlook si avvia e la funzione di ricerca non funziona più (vedi https://forums.zimbra.org/viewtopic.php?t=67734).
  • Correzione della configurazione ZCO tramite il registro su Windows a 32 bit


Ecco il codice per setup.py:

Codice: Seleziona tutto

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

def install():        
    # Check architecture and if Office is 32bits on 64bits system
    regpath = r'SOFTWARE\Zimbra'
    if is32() or isdir(makepath(programfiles32, r'Microsoft Office', r'root')):
        print(r'INFO: x86 installation detected')
        bin_name = 'ZimbraConnectorOLK_x86.msi'
        if is64():
            regpath = r'SOFTWARE\WOW6432Node\Zimbra'
    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 audit():
    audit_result = "OK"
    # Check architecture and if Office is 32bits on 64bits system
    regpath = r'SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Windows\Windows Search\Preferences'
    if is64() and isdir(makepath(programfiles32, r'Microsoft Office', r'root')):
        regpath = r'SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Windows\Windows Search\Preferences'

    # Fix Windows Search ZCO registry key if needed
    # https://wiki.zimbra.com/wiki/Summary_of_the_registry_keys_that_ZCO_uses
    # https://forums.zimbra.org/viewtopic.php?t=67734
    for key in [r'{D00FDE68-3E80-4f8c-899D-D9DD16BA7D1D}', r'{FA9628A0-F223-4d5d-B314-E01BC8100572}']:
        if registry_readstring(HKEY_LOCAL_MACHINE, regpath, key) != "1":
                print(r'Fixing Windows Search ZCO registry key %s...' % key)
                registry_set(HKEY_LOCAL_MACHINE, regpath, key, 1, REG_DWORD)
                audit_result = "WARNING"

    return audit_result
    
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
Ultima modifica di bastien30 il 03 gen 2025 - 17:58, modificato 1 volta.
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

11 marzo 2024 - 15:21

Wow, ottimo lavoro!
Ci avevo pensato, ma sarebbe stato troppo impegnativo. :D
Lo adotterò, grazie mille!
Vincent38
Messaggi: 41
Registrazione: 22 maggio 2023 - 12:13

12 marzo 2024 - 00:35

Per quanto riguarda il problema con la chiave di disinstallazione errata, ho ricevuto un feedback da Zimbra; hanno confermato il problema, è stato aperto un report di bug e si spera che venga risolto nelle versioni future di ZCO. :D
bastien30
Messaggi: 38
Registrazione: 8 marzo 2024 - 15:21

12 marzo 2024 - 15:29

Ciao,

grazie per il feedback.
È vero che se lo risolvessero, sarebbe un'ottima cosa.

Ma vista la loro lentezza nel correggere i bug, non credo che accadrà presto. :rotolo:
Risposta