Page 2 sur 3

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:20
par fludo67
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.')

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:27
par Killian
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)

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:36
par fludo67
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()

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:37
par Killian
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

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:42
par Killian
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 ?

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 16:59
par fludo67
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..)

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 17:01
par Killian
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

Re: Paquet OFFICE 2016

Posté : 03 mai 2017 - 17:04
par fludo67
il faut adapter la variable softname en fonction de la version office que tu installes.
dans ce cas

softname="microsoft office standard 2016"

Re: Paquet OFFICE 2016

Posté : 04 mai 2017 - 08:48
par Killian
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 :)

Re: Paquet OFFICE 2016

Posté : 05 mai 2017 - 13:59
par Killian
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)