Page 2 sur 3
					
				Re: Paquet OFFICE 2016
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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
				Publié : 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)