Désinstallation d'OFFICE 2013

Share here your tips or issues concerning WAPT Console or WAPT Agent / Venez ici partager vos problèmes et astuces concernants la console et l'agent WAPT
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
fbst
Messages : 5
Inscription : 24 oct. 2018 - 15:59

24 oct. 2018 - 16:26

Bonjour à tous,

je rencontre des problèmes à la désinstallation d'OFFICE 2013 Standard via WAPT.
J'ai essayé de différentes manières de déinstaller le tout mais je n'y arrive pas.

Premièrement via l'uninstallkey :
j'ai récupérer le UID via wapt-get list-registry, ça m'en donne pas mal, lorsque depuis pyscripter je tente d'uninstall ça ne fonctionne pas (retour:

Code : Tout sélectionner

Ligne de Commande : uninstall "C:\waptdev\Office2013Std_32bits-wapt\WAPT\.."
Uninstalling C:\waptdev\Office2013Std_32bits-wapt ...
None
Uninstallation done)
L'uninstallkey ressemble à ça:

Code : Tout sélectionner

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}']
j'ai essayé également via les uninstallstring, j'obtiens le même message qu'avec l'uninstallkey:

Code : Tout sélectionner

Ligne de Commande : uninstall "C:\waptdev\Office2013Std_32bits-wapt\WAPT\.."
Uninstalling C:\waptdev\Office2013Std_32bits-wapt ...
None
Uninstallation done)
L'uninstallstring ressemble à ceci:

Code : Tout sélectionner

uninstallstring =['"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml"']
j'ai essayé via une fonction uninstall() qui lance le contenu d'uninstallstring:

Code : Tout sélectionner

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"')
retour:

Code : Tout sélectionner

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'installation se passe très bien, elle est complètement transparente, le fichier MSP se trouve bien au bon endroit, idem pour le fichier silent.xml.
Lorsque j'exécute la commande suivante dans un shell, ça fonctionne à merveille et silencieusement....

Code : Tout sélectionner

C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml
j'ai fait différents essais, j'ai essayé de passer mes chemins via une variable en "raw":

Code : Tout sélectionner

r"C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe /uninstall Standard /config silent.xml" 
le résultat est le même, pourtant il me semblait avoir compris que le "r" ou le fait d'entourer l'expression de '"expression"' échappait les espaces et les slash...
j'ai également essayé de passer par la lib "pathlib" mais elle n'est pas intégrée à WAPT, et je n'ai pas réussi à la faire fonctionner..

Je vous met tout de même mon setup.py en entier ci dessous au cas où cela vous inspirerait, mais il n'y a rien de bien original par rapport aux divers sujets sur OFFICE que l'on peut trouver dans les forums :)
Merci d'avance!

fbst

Code : Tout sélectionner

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])
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1369
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

24 oct. 2018 - 16:45

Bonjour fbst,
fbst a écrit : 24 oct. 2018 - 16:26 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.
....

Code : Tout sélectionner

            filecopyto("silent.xml",("C:\Program Files\Common Files\"))
Il doit falloir préciser le chemin complet du fichier silent.xml vu qu'il n'est pas dans le même répertoire que le setup.exe. Ou alors il faut définir le working directory.

Cordialement,

Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
fbst
Messages : 5
Inscription : 24 oct. 2018 - 15:59

24 oct. 2018 - 17:41

Bonjour,

merci pour la réponse rapide, j'ai réussi à trouver un début de solution !
ça fonctionne bien en local sur le serveur directement (installation / Désinstallation)

voici le code:

Code : Tout sélectionner

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

en revanche, une fois build et uploadé, lorsque j'essaye de l'installer sur un poste distant, je me retrouve avec un message d'erreur :

Code : Tout sélectionner

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']]

une idée par hasard? :/

Merci d'avance,

Cordialement
fbst
Messages : 5
Inscription : 24 oct. 2018 - 15:59

24 oct. 2018 - 18:34

En complément de mon précédent message, je voudrais préciser que le fait que je précise le chemin complet du setup.exe:

Code : Tout sélectionner

cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /adminfile "setup.msp"'
vient du fait que si je met setup.exe tout seul, j'obtiens un message qui m'indique que le setup.exe n'est pas trouvé.
Pour info voici l'arborescence de mon paquet:
Capture.PNG
Capture.PNG (34.91 Kio) Consulté 3672 fois
le setup est à la fois à la racine, je l'ai également copié dans le dossier WAPT puis dans le dossier Microsoft Office 2013 32bits. J'ai donc un peu de mal à saisir où est le working dir du script python.. si quelqu'un peut m'éclairer ? :)

le fait que le chemin soit mis en dur dans le script ne pourrait-il pas générer l'erreur ci dessus?

De plus, pour essayer d'être le plus complet possible, voici mon paquet affiché dans la console:
Capture2.PNG
Capture2.PNG (31.03 Kio) Consulté 3672 fois
j'obtiens le message lorsque je fais clic droit sur un hôte / Ajouter une dépendance / je coche le paquet puis je clique sur lancer les installations.
(je le précise au cas où je fasse une fausse manipulation :) )


pour finir voici le fichier control du paquet:
Capture3.PNG
Capture3.PNG (19.76 Kio) Consulté 3672 fois
Merci mille fois... bonne soirée
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1369
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

25 oct. 2018 - 19:45

Bonsoir fbst,
fbst a écrit : 24 oct. 2018 - 18:34 En complément de mon précédent message, je voudrais préciser que le fait que je précise le chemin complet du setup.exe:

Code : Tout sélectionner

cmd = '"C:\waptdev\Office2013Std_32bits-wapt\Microsoft Office 2013 32bits\setup.exe" /adminfile "setup.msp"'
vient du fait que si je met setup.exe tout seul, j'obtiens un message qui m'indique que le setup.exe n'est pas trouvé.
Le script setup.py est exécuté dans un répertoire temporaire avec un nom de répertoire généré aléatoirement. Si l'installeur a besoin d'avoir un chemin d'exécution complet, je devriez pouvoir utiliser quelques chose comme :

Code : Tout sélectionner

import os 
dir_path = os.path.dirname(os.path.realpath(__file__))
Dans votre cas:

Code : Tout sélectionner

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

Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
fbst
Messages : 5
Inscription : 24 oct. 2018 - 15:59

30 oct. 2018 - 15:25

Bonjour,

désolé pour le temps de réponse un peu long...
Merci à vous pour votre réponse,

après essai il s'avère que cela ne fonctionne pas mieux:

j'obtiens ce message en déployant le paquet sur os windows 7 avec un office 2010 installé:

Code : Tout sélectionner

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:
Le fichier msp est paramétré pour désinstaller les anciennes versions:

voici mon code

Code : Tout sélectionner

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


Les fichiers setup.exe / setup.MSP / silent.xml se trouvent à la racine du paquet office avec le setup.py et tous les dossiers office.
J'ai un peu de mal à saisir le soucis que j'ai je vous l'avoue :)

merci d'avance,

Cordialement



EDIT: et je confirme qu'un dossier dans windows / temp / XXXX est bien créé sur le poste client, avec tous les fichiers offices présent dans le paquet sur le serveur (setup.msp, setup.py, silent.xml + tous les dossiers office)
Verrouillé