Pagina 1 di 2

modello di script setup.py

Pubblicato: 2 maggio 2016 - 22:26
di so37
Salve,

avrei bisogno di un modello per eseguire i seguenti passaggi:

verificare se il software è installato sul computer client; se è installato, disinstallarlo e quindi reinstallarlo; se non è installato, installarlo.


Grazie in anticipo.

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 09:10
di sfontenau
!!! Compatibile solo dalla versione 1.3.5 in poi, credo!!!

Per installare solo se il software non è presente o la versione è precedente:

Exe:

Codice: Seleziona tutto

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 (più semplice):

Codice: Seleziona tutto

def install ():
   install_msi_if_needed('install_flash_player_21_active_x.msi',killbefore=['iexplore.exe'])
Nella maggior parte dei casi, la disinstallazione preventiva non è necessaria, ma non sempre.
Per avviare una disinstallazione:

Codice: Seleziona tutto

      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)
Tuttavia, questo metodo può talvolta causare problemi.
Infatti, nell'esempio stiamo cercando un software con il nome Scribus.
Ma se nel nostro software, un programma si chiama "Sribus plugin extra"
Bene, anche questo ci passerà.

In questo caso, il file setup.py dovrà essere più specifico

Simone

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 10:05
di so37
Ecco il mio script per installare Visual Studio 2005 Tools per Office Second Edition Runtime (vstor2005.exe):

Codice: Seleziona tutto

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


Il codice sembra funzionare solo se vstor2005 non è installato; tuttavia, quando vstor2005 è già installato, ecco il messaggio di errore:

Codice: Seleziona tutto

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

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 10:10
di so37
Quando disinstallo questo pacchetto, dovrebbe essere disinstallato con il comando che

Codice: Seleziona tutto

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

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 10:28
di sfontenau
Un problema dopo l'altro...

Se non viene specificata una min_version (come nel tuo caso), install_exe_if_needed leggerà la versione dalle proprietà del file eseguibile (se l'eseguibile è formattato correttamente). Sei sicuro di non voler specificare una min_version?

Inoltre, nel tuo comando non è presente l'argomento chiave.

Ci occuperemo della disinstallazione più avanti.

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 10:38
di so37
Non sono del tutto sicuro a cosa si riferisca min_version, ma se è preferibile farlo, perché no? Per quanto riguarda l'eseguibile, la versione di vstor2005.exe è 8.0.50727.940. È questo che ti interessa?

Re: Modello di script Setup.py

Pubblicato: 3 maggio 2016 - 10:44
di so37
Ecco le modifiche apportate a def install:

Codice: Seleziona tutto

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)	

Re: Modello di script Setup.py

Pubblicato: 7 maggio 2016 - ore 13:00
di sfontenau
È stato corretto un piccolo errore in setuphelpers.py

https://github.com/tranquilit/WAPT/comm ... 84de4f0488.

È possibile che il tuo problema derivasse da lì,

Simon.

Re: Modello di script Setup.py

Pubblicato: 9 maggio 2016 - 09:07
di so37
Ecco il mio modello attuale:

Codice: Seleziona tutto

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


Esiste un'opzione migliore? È sufficientemente ottimizzata?

Re: Modello di script Setup.py

Pubblicato: 11 maggio 2016 - 13:52
di so37
Dopo aver impostato WAPTService sui privilegi di amministratore, le cose sono migliorate; tuttavia, quando eseguo lo script che ho copiato sopra, ricevo il seguente messaggio di errore:

Codice: Seleziona tutto

"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