Pagina 1 di 1

Disinstallazione di OFFICE 2013

Pubblicato: 24 ottobre 2018 - 16:26
di fbst
Ciao a tutti,

Ho problemi durante la disinstallazione di OFFICE 2013 Standard tramite WAPT.
Ho provato diversi modi per disinstallare tutto, ma non ci riesco.

Innanzitutto, tramite la chiave di disinstallazione:
Ho recuperato l'UID tramite wapt-get list-registry, che me ne ha restituiti parecchi, ma quando provo a disinstallarlo da PyScripter non funziona (restituisce:

Codice: Seleziona tutto

Ligne de Commande : uninstall "C:\waptdev\Office2013Std_32bits-wapt\WAPT\.."
Uninstalling C:\waptdev\Office2013Std_32bits-wapt ...
None
Uninstallation done)
La chiave di disinstallazione si presenta così:

Codice: Seleziona tutto

uninstallkey = ['{90150000-002A-0000-1000-0000000FF1CE}','{90150000-002A-040C-1000-0000000FF1CE}','Office15.STANDARD','Office2013Std_32bits','{90150000-0012-0000-0000-0000000FF1CE}','{90150000-001F-0401-0000-0000000FF1CE}','{90150000-001F-0407-0000-0000000FF1CE}','{90150000-001F-0409-0000-0000000FF1CE}','{90150000-001F-040C-0000-0000000FF1CE}','{90150000-001F-0413-0000-0000000FF1CE}','{90150000-001F-0C0A-0000-0000000FF1CE}','{90150000-002C-040C-0000-0000000FF1CE}','{90150000-006E-040C-0000-0000000FF1CE}','{90150000-00E1-040C-0000-0000000FF1CE}','{90150000-00E2-040C-0000-0000000FF1CE}']
Ho provato anche a usare uninstallstring e ricevo lo stesso messaggio di uninstallkey:

Codice: Seleziona tutto

Ligne de Commande : uninstall "C:\waptdev\Office2013Std_32bits-wapt\WAPT\.."
Uninstalling C:\waptdev\Office2013Std_32bits-wapt ...
None
Uninstallation done)
La stringa di disinstallazione appare così:

Codice: Seleziona tutto

uninstallstring =['"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml"']
Ho provato a utilizzare una funzione uninstall() che visualizza il contenuto di uninstallstring:

Codice: Seleziona tutto

def uninstall():
    print("Desinstallation d\'Office")
    run('"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml"')
Indietro:

Codice: Seleziona tutto

Ligne de Commande : uninstall "C:\waptdev\Office2013Std_32bits-wapt\WAPT\.."
Uninstalling C:\waptdev\Office2013Std_32bits-wapt ...
Desinstallation d'Office
2018-10-24 16:11:02,690 CRITICAL Fatal error in uninstall function: CalledProcessErrorOutput: Command '"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE15\\Office Setup Controller\\Setup.exe /uninstall Standard /config silent.xml"' returned non-zero exit status 1.
Output:Le chemin d'accÇùs spǸcifiǸ est introuvable.
:
Traceback (most recent call last):
  File "c:\wapt\waptpackage.py", line 1843, in call_setup_hook
    hookdata = hook_func()
  File "C:\waptdev\Office2013Std_32bits-wapt\setup.py", line 39, in uninstall
    run('"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml"')
  File "c:\wapt\common.py", line 3317, in run
    return ensure_unicode(setuphelpers.run(*arg,pidlist=self.pidlist,**args))
  File "c:\wapt\setuphelpers.py", line 1044, in run
    raise CalledProcessErrorOutput(proc.returncode,cmd,''.join(output))
CalledProcessErrorOutput: Command '"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE15\\Office Setup Controller\\Setup.exe /uninstall Standard /config silent.xml"' returned non-zero exit status 1.
Output:Le chemin d'accŠs sp‚cifi‚ est introuvable.


FATAL ERROR : CalledProcessErrorOutput: Command '"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE15\\Office Setup Controller\\Setup.exe /uninstall Standard /config silent.xml"' returned non-zero exit status 1.
Output:Le chemin d'accÇùs spǸcifiǸ est introuvable.

Exit code:  3

L'installazione avviene molto bene, è completamente trasparente, il file MSP è nel posto giusto, lo stesso vale per il file silent.xml.
Quando eseguo il seguente comando in una shell, funziona perfettamente e silenziosamente...

Codice: Seleziona tutto

C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml
Ho provato diverse cose, ho provato a passare i miei percorsi tramite una variabile in "raw":

Codice: Seleziona tutto

r"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml" 
Il risultato è lo stesso, ma pensavo di aver capito che la "r" o l'atto di circondare l'espressione con "espressione" faceva da escape agli spazi e alle barre...
Ho provato anche a usare la libreria "pathlib", ma non è integrata in WAPT e non sono riuscito a farla funzionare.

Ho incluso l'intero file setup.py qui sotto nel caso in cui possa darvi qualche idea, ma non c'è nulla di particolarmente originale rispetto ai vari argomenti su OFFICE che si possono trovare nei forum :)
Grazie in anticipo!

primo piano

Codice: Seleziona tutto

from setuphelpers import *
import time

windowspath64 = r"C:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Office Setup Controller"
windowspath32 = r"C:\Program Files\Common Files\microsoft shared\OFFICE15\Office Setup Controller"
waptpath = r"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits"

if iswin64():
	uninstallstring =['"%s\Setup.exe /uninstall Standard /config silent.xml"',windowspath64]
else:
	uninstallstring =['"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /unininstall Standard /config silent.xml"']

def install():

    def killsoft():
      for soft in ('WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'):
        if isrunning(soft):
           print ("closing %s" % soft)
           killalltasks(soft)

    softname = 'Microsoft Office Professionnel Standard 2013'
    check_installed_out = installed_softwares(softname)
    if not check_installed_out:
            print('installing Office 2013')
            killsoft()
            cmd = ('%s\setup.exe /adminfile setup.msp /config silent.xml',waptpath)
            run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])
            time.sleep(30)
            filecopyto("silent.xml",("C:\Program Files\Common Files\"))
    else:
            print('repair Office 2013')
            killsoft()
            cmd = '"C:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Office Setup Controller\setup.exe" /repair Standard /config silent.xml"'
            run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])

Re: Disinstallazione di OFFICE 2013

Pubblicato: 24 ottobre 2018 - 16:45
di dcardon
Ciao fbst,
fbst ha scritto: 24 ott 2018 - 16:26 ERRORE FATALE: CalledProcessErrorOutput: il comando '"C:\\Programmi (x86)\\File comuni\\Microsoft Shared\\OFFICE15\\Office Setup Controller\\Setup.exe /uninstall Standard /config silent.xml"' ha restituito uno stato di uscita diverso da zero 1.
Output: Impossibile trovare il percorso di accesso specificato.
....

Codice: Seleziona tutto

            filecopyto("silent.xml",("C:\Program Files\Common Files\"))
È necessario specificare il percorso completo del file silent.xml poiché non si trova nella stessa directory di setup.exe. In alternativa, è necessario definire la directory di lavoro.

Sinceramente,

Denis

Re: Disinstallazione di OFFICE 2013

Pubblicato: 24 ottobre 2018 - 17:41
di fbst
Buongiorno,

Grazie per la risposta rapida, sono riuscito a trovare uno spunto per una soluzione!
Funziona bene direttamente sul server (installazione/disinstallazione)

Ecco il codice:

Codice: Seleziona tutto

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

uninstallkey = []
softname = 'Microsoft Office Standard 2013'

def install():

    def killsoft():
      for soft in ('WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'):
        if isrunning(soft):
           print ("Fermeture de %s" % soft)
           killalltasks(soft)

    if not installed_softwares(softname):
        open(makepath(programfiles32,'silent.xml'), "w" ).write(silentxml)
        print('Installation d\' Office 2013')
        cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /adminfile "setup.msp"'
        remove_file(makepath(programfiles32,'silent.xml'))
    else:
        print('Reparation d\'Office 2013')
        cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /repair Standard /config silent.xml"'


    killsoft()
    run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])

    if not installed_softwares(softname):
            error('%s : clef de desinstallation non trouvée',softname)

def uninstall():
    open(makepath(programfiles32,'silent.xml'), "w" ).write(silentxml)
    print("Desinstallation d\'Office")
    run('"%s" /uninstall Standard /config "%s"' % (makepath(programfiles32,'Common Files','microsoft shared','OFFICE15','Office Setup Controller','Setup.exe'),makepath(programfiles32,'silent.xml')),timeout=1200)
    remove_file(makepath(programfiles32,'silent.xml'))

silentxml = ur"""<Configuration Product="Standard">
<Display Level="none" CompletionNotice="no" SuppressModal="yes" AcceptEula="yes" />
   <Setting Id="SETUP_REBOOT" Value="NEVER" />
</Configuration>"""

Tuttavia, una volta compilato e caricato, quando provo a installarlo su una macchina remota, ricevo un messaggio di errore:

Codice: Seleziona tutto

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptservice\service.py", line 1374, in run
    self.running_task.run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 515, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 960, in _run
    self.result.get('errors',[])))
Exception: Erreur lors de l'installation de [u'4C4C4544-0057-5810-8039-B8C04F534632(=2)']: erreurs dans les paquets [[u'4C4C4544-0057-5810-8039-B8C04F534632(=2)', PackageEntry(u'4C4C4544-0057-5810-8039-B8C04F534632',u'2') , u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4372, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3591, in install_wapt\n    raise e\nEWaptUnavailablePackage: Missing dependencies: Office2013Std_32bits\n']]

Exception: Erreur lors de l'installation de [u'4C4C4544-0057-5810-8039-B8C04F534632(=2)']: erreurs dans les paquets [[u'4C4C4544-0057-5810-8039-B8C04F534632(=2)', PackageEntry(u'4C4C4544-0057-5810-8039-B8C04F534632',u'2') , u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4372, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3591, in install_wapt\n    raise e\nEWaptUnavailablePackage: Missing dependencies: Office2013Std_32bits\n']]
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptservice\service.py", line 1374, in run
    self.running_task.run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 515, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 960, in _run
    self.result.get('errors',[])))
Exception: Erreur lors de l'installation de [u'4C4C4544-0057-5810-8039-B8C04F534632(=2)']: erreurs dans les paquets [[u'4C4C4544-0057-5810-8039-B8C04F534632(=2)', PackageEntry(u'4C4C4544-0057-5810-8039-B8C04F534632',u'2') , u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4372, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3591, in install_wapt\n    raise e\nEWaptUnavailablePackage: Missing dependencies: Office2013Std_32bits\n']]

Avete qualche idea per caso? :/

Grazie in anticipo,

Sinceramente

Re: Disinstallazione di OFFICE 2013

Pubblicato: 24 ottobre 2018 - 18:34
di fbst
In aggiunta al mio messaggio precedente, vorrei chiarire che il fatto che io specifichi il percorso completo di setup.exe:

Codice: Seleziona tutto

cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /adminfile "setup.msp"'
Questo perché se inserisco setup.exe da solo, ricevo un messaggio che mi informa che setup.exe non è stato trovato.
Per vostra informazione, ecco la struttura delle directory del mio pacchetto:
Cattura.PNG
Capture.PNG (34,91 KB) Visualizzato 7161 volte
Il file di installazione si trova nella directory principale e l'ho copiato anche nella cartella WAPT e poi nella cartella Microsoft Office 2013 a 32 bit. Quindi ho qualche difficoltà a capire dove si trovi la directory di lavoro dello script Python... qualcuno potrebbe aiutarmi? :)

Il fatto che il percorso sia codificato nello script potrebbe generare l'errore sopra indicato?

Inoltre, per cercare di essere il più completo possibile, ecco il mio pacchetto visualizzato nella console:
Cattura2.PNG
Capture2.PNG (31,03 KB) Visualizzato 7161 volte
Ricevo il messaggio quando faccio clic con il pulsante destro del mouse su un host / Aggiungi una dipendenza / Seleziono il pacchetto e poi clicco su Avvia installazioni.
(Lo dico nel caso in cui commettessi un errore) :) )


Infine, ecco il file di controllo del pacchetto:
Cattura3.PNG
Capture3.PNG (19,76 KB) Visualizzato 7161 volte
Grazie mille... buona serata

Re: Disinstallazione di OFFICE 2013

Pubblicato: 25 ottobre 2018 - 19:45
di dcardon
Buonasera fbst,
fbst ha scritto: 24 ott 2018 - 18:34 In aggiunta al mio messaggio precedente, vorrei chiarire che il fatto che io specifichi il percorso completo di setup.exe:

Codice: Seleziona tutto

cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /adminfile "setup.msp"'
Questo perché se inserisco setup.exe da solo, ricevo un messaggio che mi informa che setup.exe non è stato trovato.
Lo script setup.py viene eseguito in una directory temporanea con un nome di directory generato casualmente. Se il programma di installazione necessita di un percorso di esecuzione completo, dovrei poter usare qualcosa del tipo:

Codice: Seleziona tutto

import os 
dir_path = os.path.dirname(os.path.realpath(__file__))
Nel tuo caso:

Codice: Seleziona tutto

cmd = '"%s\setup.exe" /adminfile "%s\setup.msp"' % (dir_path,dir_path)
Sinceramente,

Denis

Re: Disinstallazione di OFFICE 2013

Pubblicato: 30 ottobre 2018 - 15:25
di fbst
Buongiorno,

Ci scusiamo per il tempo di risposta un po' lungo...
Grazie per la risposta

Dopo aver effettuato dei test, sembra che questa soluzione non funzioni meglio:

Ricevo questo messaggio quando distribuisco il pacchetto su Windows 7 con Office 2010 installato:

Codice: Seleziona tutto

Installation d' Office 2013
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 3512, in install_wapt
    exitstatus = setup.install()
  File "c:\windows\temp\wapt83htmv\setup.py", line 23, in install
  File "C:\Program Files (x86)\wapt\common.py", line 3317, in run
    return ensure_unicode(setuphelpers.run(*arg,pidlist=self.pidlist,**args))
  File "C:\Program Files (x86)\wapt\setuphelpers.py", line 1044, in run
    raise CalledProcessErrorOutput(proc.returncode,cmd,''.join(output))
CalledProcessErrorOutput: Command '"c:\\windows\\temp\\wapt83htmv\\setup.exe" /adminfile "c:\\windows\\temp\\wapt83htmv\\setup.msp" /config "c:\\windows\\temp\\wapt83htmv\\silent.xml"' returned non-zero exit status -2146368439.
Output:
CalledProcessErrorOutput: Command '"c:\\windows\\temp\\wapt83htmv\\setup.exe" /adminfile "c:\\windows\\temp\\wapt83htmv\\setup.msp" /config "c:\\windows\\temp\\wapt83htmv\\silent.xml"' returned non-zero exit status -2146368439.
Output:
Il file MSP è configurato per disinstallare le versioni precedenti:

ecco il mio codice

Codice: Seleziona tutto

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

dir_path = os.path.dirname(os.path.realpath('__file__'))

uninstallkey = []
softname = 'Microsoft Office Standard 2013'


def install():

    def killsoft():
      for soft in ('WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'):
        if isrunning(soft):
           print ("Fermeture de %s" % soft)
           killalltasks(soft)

    if not installed_softwares(softname):
        killsoft()
        print('Installation d\' Office 2013')
        cmd = '"%s\setup.exe" /adminfile "%s\setup.msp" /config "%s\silent.xml"' % (dir_path,dir_path,dir_path)
        run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])
        killsoft()
    else:
        print('Deinstallation d\'office')
        cmd = '"%s\setup.exe" /uninstall Standard /config "%s\silent.xml"' % (dir_path,dir_path)
        run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])


def uninstall():
    open(makepath(programfiles32,'silent.xml'), "w" ).write(silentxml)
    killsoft()
    print("Desinstallation d\'Office")
    run('"%s" /uninstall Standard /config "%s"' % (makepath(programfiles32,r'Common Files',r'microsoft shared','OFFICE15',r'Office Setup Controller','Setup.exe'),makepath(programfiles32,'silent.xml')),timeout=1200)
    remove_file(makepath(programfiles32,'silent.xml'))


I file setup.exe / setup.MSP / silent.xml si trovano nella radice del pacchetto Office insieme a setup.py e a tutte le cartelle Office.
Confesso che ho qualche difficoltà a capire il problema che sto riscontrando :)

grazie in anticipo,

Sinceramente



MODIFICA: e confermo che una cartella in windows/temp/XXXX è effettivamente creata sul computer client, con tutti i file di Office presenti nel pacchetto sul server (setup.msp, setup.py, silent.xml + tutte le cartelle di Office)