Pacchetto Office 2016

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
fludo67
Messaggi: 21
Registrazione: 13 settembre 2016 - 14:23

3 maggio 2017 - 16:20

Ho due routine: una per Office 365 e una per i componenti aggiuntivi di Office (mi è successo su parecchie macchine con Office 2007: #error -2146368439)

Codice: Seleziona tutto

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)
Forse ci sarebbe un modo più semplice per farlo, ovvero raggruppare tutte le routine in una sola con un ciclo for, ma io ho optato per l'approccio più semplice.

La mia installazione definitiva si presenta così:

Codice: Seleziona tutto

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
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

3 maggio 2017 - 16:27

fludo67 ha scritto:Ho due routine: una per Office 365 e una per i componenti aggiuntivi di Office (mi è successo su parecchie macchine con Office 2007: #error -2146368439)

Codice: Seleziona tutto

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)
Forse ci sarebbe un modo più semplice per farlo, ovvero raggruppare tutte le routine in una sola con un ciclo for, ma io ho optato per l'approccio più semplice.

La mia installazione definitiva si presenta così:

Codice: Seleziona tutto

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.')
Grazie, il mio codice è simile a questo, cosa ne pensi?

Codice: Seleziona tutto

# -*- 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
Messaggi: 21
Registrazione: 13 settembre 2016 - 14:23

3 maggio 2017 - 16:36

Devi chiamare le funzioni che hai definito e aggiungerle dopo killsoft()

Codice: Seleziona tutto

 
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
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

3 maggio 2017 - 16:37

fludo67 ha scritto:Devi chiamare le funzioni che hai definito e aggiungerle dopo killsoft()

Codice: Seleziona tutto

 
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()

Sì, mi sono appena accorto del mio errore, quindi ho modificato il mio post precedente
Killian
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

3 maggio 2017 - 16:42

L'installazione è terminata con il codice del post precedente:

Codice: Seleziona tutto

installing Office 2016
Suppression des anciens modules office..
Suppression Office 365
EWaptSetupException: Fatal error : End audit did not find the software.
Ecco l'errore: anche se Office è installato correttamente sul computer remoto, come posso evitare questo errore?
fludo67
Messaggi: 21
Registrazione: 13 settembre 2016 - 14:23

3 maggio 2017 - 16:59

Questo problema è quasi certamente correlato alla variabile `softname = 'Microsoft Office Professional Plus 2016'`.

Il tuo script verifica la presenza del software dopo l'installazione. Se non lo trova, genera questo errore. Nell'elenco delle applicazioni di Windows, Office Professional Plus è la versione installata? (Controlla in Pannello di controllo -> App -> e verifica quale versione di Office è stata installata: Standard, Professional, ecc.)
Killian
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

3 maggio 2017 - 17:01

fludo67 ha scritto:Probabilmente è correlato alla variabile `softname = 'Microsoft Office Professional Plus 2016'`.

Nel tuo script, viene verificata la presenza del software dopo l'installazione. Se non lo trova, genera questo errore. Nell'elenco delle applicazioni in Windows, Office Professional Plus è quello installato? (Controlla in Pannello di controllo -> App -> e verifica quale versione di Office è stata installata: Standard, Professional, ecc.)
No, è Standard
fludo67
Messaggi: 21
Registrazione: 13 settembre 2016 - 14:23

3 maggio 2017 - 17:04

È necessario adattare la variabile softname in base alla versione di Office che si sta installando.
In questo caso,

softname="microsoft office standard 2016"
Killian
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

4 maggio 2017 - 08:48

fludo67 ha scritto:Devi adattare la variabile softname in base alla versione di Office che installi.
In questo caso,

softname="Microsoft Office Standard 2016"
Grazie mille! Il problema è risolto :)
Killian
Messaggi: 38
Registrazione: 3 maggio 2017 - 11:19

5 maggio 2017 - 13:59

Buongiorno,

Riporto questo argomento perché vorrei poter disinstallare Office 2016 dalla console WAPT
ecco il mio codice

Codice: Seleziona tutto

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)
Bloccato