setup.py-Skriptvorlage

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

2. Mai 2016 - 22:26 Uhr

Hallo,

ich benötige eine Vorlage für folgende Schritte:

Prüfen, ob die Software auf dem Client-Rechner installiert ist; falls ja, deinstallieren und anschließend neu installieren; falls nein, installieren.


Vielen Dank im Voraus.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

3. Mai 2016 - 09:10 Uhr

!!! Kompatibel nur ab Version 1.3.5, glaube ich !!!

Nur zu installieren, wenn die Software nicht vorhanden oder die Version älter ist:

Exe:

Code: Alle auswählen

def install ():
     install_exe_if_needed('vlc-2.2.2-win32.exe',silentflags='/S --no-qt-privacy-ask --no-qt-updates-notif',key='VLC media player',min_version='2.2.2',killbefore=['vlc.exe'],accept_returncodes=[0],timeout=300)
 
MSI (einfacher):

Code: Alle auswählen

def install ():
   install_msi_if_needed('install_flash_player_21_active_x.msi',killbefore=['iexplore.exe'])
In den meisten Fällen ist eine vorherige Deinstallation nicht erforderlich, aber nicht immer.
So starten Sie eine Deinstallation:

Code: Alle auswählen

      softname = 'Scribus'
      versionsoft = '15.007.20033'
      check_installed_soft = installed_softwares(softname)
      if check_installed_soft:
             for uninstall in check_installed_soft:
                if Version(uninstall['version']) < Version(versionsoft):
                   key=uninstall['key']
                   if installed_softwares(uninstallkey=key):
                      cmd = WAPT.uninstall_cmd(uninstall['key'])
                      run(cmd)
Diese Methode kann jedoch manchmal Probleme verursachen.
In unserem Beispiel suchen wir tatsächlich nach einer Software mit dem Namen Scribus.
Aber wenn in unserer Software ein Programm "Sribus plugin extra" heißt
Nun, dieser hier wird das auch durchmachen.

In diesem Fall muss die setup.py-Datei genauer spezifiziert werden

Simon
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

3. Mai 2016 - 10:05 Uhr

Hier ist mein Skript zur Installation der Visual Studio 2005 Tools for Office Second Edition Runtime (vstor2005.exe):

Code: Alle auswählen

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

uninstallkey = ["{388E4B09-3E71-4649-8921-F44A3A2954A7}"]
uninstallstring = ['msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}']

def install ():
     install_exe_if_needed('vstor2005.exe', '/q',accept_returncodes=[0],timeout=300)

	
def uninstall():
      softname = 'Visual Studio 2005 Tools pour Office Second Edition Runtime'
      versionsoft = '8.0.50727.940'
      check_installed_soft = installed_softwares(softname)
      if check_installed_soft:
             for uninstall in check_installed_soft:
                if uninstall['version'] == versionsoft:
                   cmd = 'msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}'
                   run(cmd)


Der Code scheint nur dann zu funktionieren, wenn vstor2005 nicht installiert ist; wenn vstor2005 jedoch bereits installiert ist, erscheint folgende Fehlermeldung:

Code: Alle auswählen

C:\Windows\system32>wapt-get install C:\Users\x\Desktop\Nuxeo\enm
-vstor2005
Installing WAPT file C:\Users\x\Desktop\Nuxeo\enm-vstor2005
2016-05-03 10:13:38,529 CRITICAL Fatal error in install script: EWaptSetupExcept
ion: Fatal error : Setup vstor2005.exe has been and uninstall key None found but
 version is not good:
Traceback (most recent call last):
  File "C:\wapt\common.py", line 3178, in install_wapt
    exitstatus = setup.install()
  File "C:\Users\x\Desktop\Nuxeo\enm-vstor2005\setup.py", line 8,
 in install
    install_exe_if_needed('vstor2005.exe','/q',accept_returncodes=[0],timeout=30
0)
  File "C:\wapt\setuphelpers.py", line 3416, in install_exe_if_needed
    error('Setup %s has been and uninstall key %s found but version is not good'
 % (exe,key))
  File "C:\wapt\setuphelpers.py", line 3524, in error
    raise EWaptSetupException(u'Fatal error : %s' % reason)
EWaptSetupException: Fatal error : Setup vstor2005.exe has been and uninstall ke
y None found but version is not good

FATAL ERROR : EWaptSetupException: Fatal error : Setup vstor2005.exe has been an
d uninstall key None found but version is not good
Zuletzt bearbeitet von so37 am 3. Mai 2016 um 10:16 Uhr, 1 Mal bearbeitet.
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

3. Mai 2016 - 10:10 Uhr

Wenn ich dieses Paket deinstalliere, sollte die Deinstallation mit folgendem Befehl erfolgen:

Code: Alle auswählen

msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

3. Mai 2016 - 10:28 Uhr

Ein Problem jagt das nächste …

Wenn keine Mindestversionsnummer angegeben ist (wie in Ihrem Fall), liest `install_exe_if_needed` die Version aus den Eigenschaften der ausführbaren Datei (sofern diese korrekt formatiert ist). Sind Sie sicher, dass Sie keine Mindestversionsnummer angeben möchten?

Außerdem fehlt in Ihrem Befehl das Argument `key`.

Die Deinstallation behandeln wir später.
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

3. Mai 2016 - 10:38 Uhr

Ich bin mir nicht ganz sicher, was mit min_version gemeint ist, aber wenn es vorzuziehen ist, warum nicht? Die Version der ausführbaren Datei vstor2005.exe ist 8.0.50727.940. Ist das die Version, die Sie suchen?
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

3. Mai 2016 - 10:44 Uhr

Hier die Änderungen bezüglich def install:

Code: Alle auswählen

def install ():
     install_exe_if_needed('vstor2005.exe','/q',min_version='8.0.50727.940',key='Visual Studio 2005 Tools pour Office Second Edition Runtime',accept_returncodes=[0],timeout=300)	
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

7. Mai 2016 - 13:00 Uhr

In setuphelpers.py (https://github.com/tranquilit/WAPT/comm ... 84de4f0488) wurde ein kleiner Fehler behoben. Möglicherweise rührte dein Problem daher, Simon.





so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

9. Mai 2016 - 09:07 Uhr

Hier ist mein aktuelles Modell:

Code: Alle auswählen

# -*- coding: utf-8 -*-
import subprocess
from setuphelpers import *
import os
import time
import platform

uninstallkey = []
uninstallstring = ['msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}']


def install():
  global uninstallkey
  from common import Wapt
  softname = 'Nuxeo MSIE Browser Extension'
  versionsoft = '2.1.3'
  check_installed = installed_softwares(softname)
  # si cette liste globale n est pas vide, on check chaque logiciel
  if check_installed:
             # boucle pour chaque logiciel trouvée
             for uninstall in check_installed:
                      cmd = "msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}"
                      run(cmd)

  if iswin64():
        killalltasks('iexplore.exe')
        run("Nuxeo-MSIEBrowserExtension.msi /quiet /norestart")

  else:
        killalltasks('iexplore.exe')
        print run("Nuxeo-MSIEBrowserExtension.msi /quiet /norestart")


def uninstall():
  softname = 'Nuxeo MSIE Browser Extension'
  versionsoft = '2.1.3'
  check_installed = installed_softwares(softname)
  # si cette liste globale n est pas vide, on check chaque logiciel
  if check_installed:
             # boucle pour chaque logiciel trouvée
             for uninstall in check_installed:
                      cmd = "msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}"
                      run(cmd)


Gibt es eine bessere Option? Ist sie ausreichend optimiert?
so37
Nachrichten: 23
Anmeldung: 10. April 2016 - 13:43 Uhr

11. Mai 2016 - 13:52 Uhr

Nachdem ich dem WAPT-Dienst Administratorrechte zugewiesen hatte, verbesserte sich die Situation; wenn ich jedoch das oben kopierte Skript ausführe, erhalte ich die folgende Fehlermeldung:

Code: Alle auswählen

"id"	"description"	"summary"	"start_date"	"logs"
10	Installation of test-nuxeobrowser (=2.1.3-6) (task #10)	Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser	2016-05-11T13:51:41.573000	Installing test-nuxeobrowser
Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser
Traceback (most recent call last):
  File "C:\wapt\waptservice\waptservice.py", line 2063, in run
    self.running_task.run()
  File "C:\wapt\waptservice\waptservice.py", line 1323, in pwrapper
    return func(*arg, **kwargs)
  File "C:\wapt\waptservice\waptservice.py", line 1383, in run
    self._run()
  File "C:\wapt\waptservice\waptservice.py", line 1807, in _run
    ','.join([ p[1].package for p in self.result['errors']]),
Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser

Gesperrt