Seite 1 von 2

setup.py-Skriptvorlage

Veröffentlicht: 2. Mai 2016 - 22:26 Uhr
von so37
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.

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 09:10 Uhr
von Sfonteneau
!!! 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

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 10:05 Uhr
von so37
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

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 10:10 Uhr
von so37
Wenn ich dieses Paket deinstalliere, sollte die Deinstallation mit folgendem Befehl erfolgen:

Code: Alle auswählen

msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 10:28 Uhr
von Sfonteneau
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.

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 10:38 Uhr
von so37
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?

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 3. Mai 2016 - 10:44 Uhr
von so37
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)	

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 7. Mai 2016 - 13:00 Uhr
von Sfonteneau
In setuphelpers.py (https://github.com/tranquilit/WAPT/comm ... 84de4f0488) wurde ein kleiner Fehler behoben. Möglicherweise rührte dein Problem daher, Simon.






Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 9. Mai 2016 - 09:07 Uhr
von so37
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?

Betreff: Setup.py-Skriptvorlage

Veröffentlicht: 11. Mai 2016 - 13:52 Uhr
von so37
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