Seite 1 von 2

|PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 17. November 2023 – 16:21 Uhr
von Vincent38
Guten Morgen

Ich biete Ihnen das/die Paket(e) zur Installation des Outlook-Connectors (v9.0.0.1937) für ZIMBRA in x64 und x86 an (abhängig von Ihrer Office-/Outlook-Version).

Es gibt ein Problem mit der .msi-Datei; der deklarierte Schlüssel "uninstallkey" ist falsch und stimmt nicht mit dem tatsächlich in der Registrierung registrierten Schlüssel überein, daher muss er korrigiert werden, daher die Änderung in setup.py.


So rufen Sie die .msi-Dateien (x64 und x86) ab:
https://www.zimbra.com/product/addons/z...-download/


setup.py für x64:

Code: Alle auswählen

# -*- 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 für x86:

Code: Alle auswählen

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

Bei mir funktioniert es, aber ich bin mir unsicher, ob es sinnvoll ist, den Deinstallationsschlüssel zweimal einzugeben :D
Kommandant

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 10. Januar 2024 – 16:10 Uhr
von Vincent38
Hallo!

Update für Version v9.0.0.1941: Der Deinstallationsschlüssel muss in der setup.py-Datei angepasst werden:

für x64: {89D59DBA-173A-4D13-8AB9-606F132F70FE}

für x86: {7B50AD56-1BE7-4006-97E2-B6969930BB5F}.

Viele Grüße

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 12. Januar 2024 - 10:36 Uhr
von jpele
Hallo,
ich habe das Paket quasi blind erstellt, da wir momentan keine einfache Möglichkeit haben, die Software zu testen. Könnten Sie es bitte testen und bestätigen, dass es korrekt funktioniert? Sie können es hier herunterladen:
https://wapt.tranquil.it/wapt-testing/t ... EPROD.wapt

Ohne Ihre Bestätigung wird das Paket nicht automatisch im Store veröffentlicht.

Mit freundlichen Grüßen,
Jimmy

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 12. Januar 2024 - 12:02 Uhr
von Vincent38
Guten Morgen
Wie erwartet, funktioniert es nicht, da, wie in meinem Beitrag angegeben, der von Zimbra in der MSI-Datei angegebene Installationsschlüssel nicht mit dem tatsächlich verwendeten übereinstimmt.
Es bleibt also bei der Schlüsselverifizierung hängen:

Code: Alle auswählen

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
Der Rest der Meldung nach dem Drücken von Strg+C:

Code: Alle auswählen

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

PS: Und um es selbst zu testen, benötigen Sie lediglich eine Office-Installation inklusive Outlook (x64 oder x86, je nach Paket, jede Version, Office 2016, 2019 oder sogar 365)
Outlook muss nicht gestartet werden; wenn das Paket installiert wird, ist alles erledigt

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 15. Januar 2024 - 12:05 Uhr
von Vincent38
Ich habe Zimbra am Freitag über dieses Problem informiert und warte nun auf deren Antwort.

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 21. Februar 2024 – 18:48 Uhr
von Vincent38
Hallo

. Nun ja, das ist tatsächlich etwas knifflig. Das Problem scheint darin zu liegen, dass sich das ZCO-Installationsprogramm (.msi) selbst modifiziert, sobald es erkennt, dass es auf einem Rechner mit einer anderen Windows-Version als Englisch ausgeführt wird.

Die .msi-Datei ist nämlich mehrsprachig, auch die Sprache des Setups selbst.
Es gibt zwar nur eine .msi-Datei, aber auf einem englischen Windows-Rechner wird der Installationstext (Copyright-Informationen, Lizenzdetails, Schaltflächenbezeichnungen usw.) auf Englisch angezeigt, während auf einem französischen Windows-Rechner dieselben Informationen auf Französisch erscheinen.
Diese Modifikation führt jedoch dazu, dass das Installationsprogramm einen neuen „Produktcode“ generiert/verwendet (nicht nur der Deinstallationsschlüssel ändert sich, sondern alle ZCO entsprechenden Registrierungsschlüssel), der sich von dem in der .msi-Datei angegebenen unterscheidet.

Da wapt standardmäßig den in der .msi-Datei deklarierten Schlüssel verwendet, funktioniert es natürlich nicht.

Ich bin mir nicht sicher, wie man das Problem lösen kann. Vielleicht kann Zimbra helfen. Kann Ihr Tool (luti) andernfalls die .msi-Datei automatisch installieren, um den korrekten Schlüssel abzurufen und ihn vor der Veröffentlichung im Store in das Paket einzufügen?

Viele Grüße

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 8. März 2024 – 15:47 Uhr
von bastien30
Guten Morgen,

Ich bin zufällig auf dieses Thema gestoßen. Ich habe erst vor Kurzem ein Paket für die ZCO erstellt, basierend auf dem Paket aus dem TIS-Shop.

Mein Paket ist architekturübergreifend und integriert beide Versionen, 32-Bit und 64-Bit.
Der Grund ist einfach: Auf einem 64-Bit-Rechner mit einer installierten 32-Bit-Version von Outlook schlägt die Installation des 64-Bit-Pakets fehl, da die ZCO-Datei nicht installiert werden kann.

Mein Paket erkennt das Vorhandensein einer 32-Bit-Version von Outlook und installiert die entsprechende ZCO-Datei (es gibt sicherlich eine elegantere Methode, Office zu erkennen).
Darüber hinaus definiere ich einige ZCO-Parameter über die Registry (die gleichen Parameter, die auch zur Anpassung der MSI verwendet werden können, aber ich wollte das nicht jedes Mal tun müssen) :D ): Deaktivierung von Updates, Serveradresse und Port, Verwendung von SSL, Deaktivierung von Aliasen in der GAL und Deaktivierung der Signatursynchronisierung.
Je nach Bedarf anzupassen (in diesem Registrierungsschlüssel gibt es weitere anpassbare Parameter).

Da sich der Deinstallationsschlüssel je nach Sprache ändert, verwende ich eine `uninstall()`-Funktion, die den Deinstallationsschlüssel des installierten ZCO abruft, um es zu deinstallieren. Daher verwende ich nicht die Funktion `install_msi_if_needed()`.

Die einzige Einschränkung besteht darin, dass die Paketversion mit der 64-Bit-ZCO-Version übereinstimmen muss. Sollten unterschiedliche Versionsnummern für die beiden Architekturen veröffentlicht werden, könnte dies zu Problemen führen (was ich aber für unwahrscheinlich halte).

Bearbeitet am 03.01.2025:
  • Es wurde eine Überwachungsfunktion hinzugefügt, um die Windows-Suchregistrierungsschlüssel aus dem ZCO wiederherzustellen, die nach einem automatischen Office-Update gelöscht wurden (ich persönlich habe den Parameter "audit_schedule" in der Steuerdatei auf "10m" gesetzt), andernfalls erhält der Benutzer ohne Administratorrechte jedes Mal beim Start von Outlook eine UAC-Aufforderung und die Suchfunktion funktioniert nicht mehr (siehe https://forums.zimbra.org/viewtopic.php?t=67734).
  • ZCO-Konfigurationskorrektur über die Registrierung unter 32-Bit-Windows


Hier ist der Code für setup.py:

Code: Alle auswählen

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

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 11. März 2024 – 15:21 Uhr
von Vincent38
Wow, super gemacht!
Ich hatte auch schon darüber nachgedacht, aber das wäre mir zu viel Arbeit gewesen. :D
Ich werde es übernehmen, danke!

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 12. März 2024 - 00:35 Uhr
von Vincent38
Bezüglich des Problems mit dem falschen Deinstallationsschlüssel habe ich eine Rückmeldung von Zimbra erhalten; sie haben das Problem bestätigt, ein Fehlerbericht wurde erstellt, und hoffentlich wird es in zukünftigen Versionen von ZCO behoben sein. :D

Betreff: |PAKET] ZIMBRA-ZCO 9.0.0.1941 (x64 und x86)

Veröffentlicht: 12. März 2024 – 15:29 Uhr
von bastien30
Hallo,

vielen Dank für das Feedback.
Es stimmt, dass es am besten wäre, wenn sie das Problem beheben würden.

Angesichts ihrer langsamen Fehlerbehebungsgeschwindigkeit glaube ich aber nicht, dass das so schnell passieren wird. :rollen: