Paquet OFFICE 2016

Questions about WAPT Packaging / Requêtes et aides autour des paquets 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
fludo67
Messages : 21
Inscription : 13 sept. 2016 - 14:23

03 mai 2017 - 16:20

j'ai deux routines : une pour office 365 et une pour les compléments office (ça m'est arrivésur pas mal de postes avec office 2007 : #erreur -2146368439)

Code : Tout sélectionner

def uninstall_office_modules():
    print('Suppression des anciens modules office..')
    check_installed_soft = installed_softwares('Microsoft Office System')
    if check_installed_soft:
        for uninstall in check_installed_soft:
            key=uninstall['key']
            if installed_softwares(uninstallkey=key):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)

def uninstall_office365():
    print('Suppression Office 365')
    check_installed_soft = installed_softwares('office 365')
    if check_installed_soft:
        for uninstall in check_installed_soft:
            key=uninstall['key']
            if installed_softwares(uninstallkey=key):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)
Il y a peut-être moyen de faire plus propre en regroupant toutes les routines en une seule avec une boucle for, mais j'ai fais au plus simple.

mon def install ressemble à ça :

Code : Tout sélectionner

def install():
       	msoname = 'Microsoft Office Standard 2016'
        msoversion='16.0.4266.1001'
        check_installed_mso = installed_softwares(msoname)
        if not check_installed_mso:
            killsoft()
          
            uninstall_office_modules()
            uninstall_office365()
            
            print('Installation de Microsoft Office 2016')
            install_exe_if_needed('setup.exe',silentflags='/adminfile "silent.msp"',min_version=msoversion,key=None,timeout=1200)
            check_installed_out = installed_softwares(softname)
            if not check_installed_out:
             error('End audit did not find the software.')
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

03 mai 2017 - 16:27

fludo67 a écrit :j'ai deux routines : une pour office 365 et une pour les compléments office (ça m'est arrivésur pas mal de postes avec office 2007 : #erreur -2146368439)

Code : Tout sélectionner

def uninstall_office_modules():
    print('Suppression des anciens modules office..')
    check_installed_soft = installed_softwares('Microsoft Office System')
    if check_installed_soft:
        for uninstall in check_installed_soft:
            key=uninstall['key']
            if installed_softwares(uninstallkey=key):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)

def uninstall_office365():
    print('Suppression Office 365')
    check_installed_soft = installed_softwares('office 365')
    if check_installed_soft:
        for uninstall in check_installed_soft:
            key=uninstall['key']
            if installed_softwares(uninstallkey=key):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)
Il y a peut-être moyen de faire plus propre en regroupant toutes les routines en une seule avec une boucle for, mais j'ai fais au plus simple.

mon def install ressemble à ça :

Code : Tout sélectionner

def install():
       	msoname = 'Microsoft Office Standard 2016'
        msoversion='16.0.4266.1001'
        check_installed_mso = installed_softwares(msoname)
        if not check_installed_mso:
            killsoft()
          
            uninstall_office_modules()
            uninstall_office365()
            
            print('Installation de Microsoft Office 2016')
            install_exe_if_needed('setup.exe',silentflags='/adminfile "silent.msp"',min_version=msoversion,key=None,timeout=1200)
            check_installed_out = installed_softwares(softname)
            if not check_installed_out:
             error('End audit did not find the software.')
Merci mon code ressemble à ça qu'es ce que tu en pense ?

Code : Tout sélectionner

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

uninstallkey = []

def install():




    def uninstall_office_modules():
        print('Suppression des anciens modules office..')
        check_installed_soft = installed_softwares('Microsoft Office System')
        if check_installed_soft:
            for uninstall in check_installed_soft:
                key=uninstall['key']
                if installed_softwares(uninstallkey=key):
                    cmd = WAPT.uninstall_cmd(uninstall['key'])
                    run(cmd)

    def uninstall_office365():
        print('Suppression Office 365')
        check_installed_soft = installed_softwares('office 365')
        if check_installed_soft:
            for uninstall in check_installed_soft:
                key=uninstall['key']
                if installed_softwares(uninstallkey=key):
                    cmd = WAPT.uninstall_cmd(uninstall['key'])
                    run(cmd)


    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 Plus 2016'
    check_installed_out = installed_softwares(softname)

    print('installing Office 2016')
    if not check_installed_out:
            cmd = '"setup.exe" /adminfile "silent.msp"'
    else:
            cmd = 'msiexec.exe /p silent.msp'
    killsoft()
    uninstall_office_modules()
    uninstall_office365()
    run(cmd,timeout=1200,accept_returncodes=[1641,3010,0])
    check_installed_out = installed_softwares(softname)
    if not check_installed_out:
        error('End audit did not find the software.')

def uninstall():
    fichier = open("%s\silent.xml" % programfiles32, "w" )
    fichier.write('<Configuration Product="ProPlus"> \n')
    fichier.write('<Display Level="none" CompletionNotice="no" SuppressModal="yes" AcceptEula="yes" /> \n')
    fichier.write('   <Setting Id="SETUP_REBOOT" Value="NEVER" /> \n')
    fichier.write('</Configuration> \n')
    fichier.close()
    run('"%s\Common Files\microsoft shared\OFFICE16\Office Setup Controller\Setup.exe" /uninstall ProPlus /config "%s\silent.xml"' % (programfiles32,programfiles32),timeout=1200)
    remove_file(r'%s\silent.xml'% programfiles32)
fludo67
Messages : 21
Inscription : 13 sept. 2016 - 14:23

03 mai 2017 - 16:36

il faut appeler les fonctions que tu as défini , les ajouter après killsoft()

Code : Tout sélectionner

 
print('installing Office 2016')
    if not check_installed_out:
            cmd = '"setup.exe" /adminfile "silent.msp"'
    else:
            cmd = 'msiexec.exe /p silent.msp'
killsoft()
uninstall_office_modules()
uninstall_office_365()
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

03 mai 2017 - 16:37

fludo67 a écrit :il faut appeler les fonctions que tu as défini , les ajouter après killsoft()

Code : Tout sélectionner

 
print('installing Office 2016')
    if not check_installed_out:
            cmd = '"setup.exe" /adminfile "silent.msp"'
    else:
            cmd = 'msiexec.exe /p silent.msp'
killsoft()
uninstall_office_modules()
uninstall_office_365()

Oui je vient de remarquer mon erreur, j'ai donc édité mon précédent post
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

03 mai 2017 - 16:42

L'installation s'est terminée avec le code du post précédent :

Code : Tout sélectionner

installing Office 2016
Suppression des anciens modules office..
Suppression Office 365
EWaptSetupException: Fatal error : End audit did not find the software.
Voilà l'erreur, alors que office est bien installé sur l'ordinateur distant, comment je peu éviter cette erreur ?
fludo67
Messages : 21
Inscription : 13 sept. 2016 - 14:23

03 mai 2017 - 16:59

c'est sûrement lié à la variable softname = 'Microsoft Office Professionnel Plus 2016'

Dans ton script, il fait un test de présence du logiciel après l'installation. S'il ne le trouve pas, il génère cette erreur. Est-ce que dans la liste des applications sous windows, c'est bien office professionnel plus qui a été installé ?? (voir dans panneau de configuration -> applications -> et vérifier quelle version office a été installée. standard, professionnel etc..)
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

03 mai 2017 - 17:01

fludo67 a écrit :c'est sûrement lié à la variable softname = 'Microsoft Office Professionnel Plus 2016'

Dans ton script, il fait un test de présence du logiciel après l'installation. S'il ne le trouve pas, il génère cette erreur. Est-ce que dans la liste des applications sous windows, c'est bien office professionnel plus qui a été installé ?? (voir dans panneau de configuration -> applications -> et vérifier quelle version office a été installée. standard, professionnel etc..)
Non c'est Standard
fludo67
Messages : 21
Inscription : 13 sept. 2016 - 14:23

03 mai 2017 - 17:04

il faut adapter la variable softname en fonction de la version office que tu installes.
dans ce cas

softname="microsoft office standard 2016"
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

04 mai 2017 - 08:48

fludo67 a écrit :il faut adapter la variable softname en fonction de la version office que tu installes.
dans ce cas

softname="microsoft office standard 2016"
Merci beaucoup ! Le problème est résolu :)
Killian
Messages : 38
Inscription : 03 mai 2017 - 11:19

05 mai 2017 - 13:59

Bonjour,

Je reviens sur ce sujet car j'aimerais avoir la possibilité de désinstaller office 2016 depuis la console wapt
voici mon code

Code : Tout sélectionner

def uninstall():
    fichier = open("%s\silent.xml" % programfiles32, "w" )
    fichier.write('<Configuration Product="ProPlus"> \n')
    fichier.write('<Display Level="none" CompletionNotice="no" SuppressModal="yes" AcceptEula="yes" /> \n')
    fichier.write('   <Setting Id="SETUP_REBOOT" Value="NEVER" /> \n')
    fichier.write('</Configuration> \n')
    fichier.close()
    run('"%s\Common Files\microsoft shared\OFFICE16\Office Setup Controller\Setup.exe" /uninstall ProPlus /config "%s\silent.xml"' % (programfiles32,programfiles32),timeout=1200)
    remove_file(r'%s\silent.xml'% programfiles32)
Verrouillé