Paquete de Office 2016

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
fludo67
Mensajes: 21
Inscripciones: 13 sep 2016 - 14:23 horas.

3 de mayo de 2017 - 16:20

Tengo dos rutinas: una para Office 365 y otra para los complementos de Office (esto me ha sucedido en bastantes máquinas con Office 2007: #error -2146368439)

Código: Seleccionar todo

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)
Quizás haya una forma más limpia de hacer esto agrupando todas las rutinas en una con un bucle for, pero opté por el enfoque más simple.

Mi instalación definitiva se ve así:

Código: Seleccionar todo

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
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

3 de mayo de 2017 - 16:27

fludo67 escribió:Tengo dos rutinas: una para Office 365 y otra para los complementos de Office (esto me ha sucedido en bastantes máquinas con Office 2007: #error -2146368439)

Código: Seleccionar todo

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)
Quizás haya una forma más limpia de hacer esto agrupando todas las rutinas en una con un bucle for, pero opté por el enfoque más simple.

Mi instalación definitiva se ve así:

Código: Seleccionar todo

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.')
Gracias, mi código se ve así, ¿qué opinas?

Código: Seleccionar todo

# -*- 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
Mensajes: 21
Inscripciones: 13 sep 2016 - 14:23 horas.

3 de mayo de 2017 - 16:36

Debes llamar a las funciones que definiste y agregarlas después de killsoft()

Código: Seleccionar todo

 
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
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

3 de mayo de 2017 - 16:37

fludo67 escribió:Debes llamar a las funciones que definiste y agregarlas después de killsoft()

Código: Seleccionar todo

 
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í, acabo de darme cuenta de mi error, así que edité mi publicación anterior
Killian
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

3 de mayo de 2017 - 16:42

La instalación finalizó con el código del post anterior:

Código: Seleccionar todo

installing Office 2016
Suppression des anciens modules office..
Suppression Office 365
EWaptSetupException: Fatal error : End audit did not find the software.
Aquí está el error: aunque Office esté instalado correctamente en la computadora remota, ¿cómo puedo evitar este error?
fludo67
Mensajes: 21
Inscripciones: 13 sep 2016 - 14:23 horas.

3 de mayo de 2017 - 16:59

Esto casi con toda seguridad está relacionado con la variable `softname = 'Microsoft Office Professional Plus 2016'`.

En tu script, se comprueba la presencia del software después de la instalación. Si no lo encuentra, se genera este error. En la lista de aplicaciones de Windows, ¿es Office Professional Plus la versión instalada? (Compruébalo en el Panel de control -> Aplicaciones -> y verifica qué versión de Office se instaló: Standard, Professional, etc.)
Killian
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

3 de mayo de 2017 - 17:01

fludo67 escribió:Probablemente esté relacionado con la variable `softname = 'Microsoft Office Professional Plus 2016'`.

En tu script, se comprueba la presencia del software después de la instalación. Si no lo encuentra, se genera este error. En la lista de aplicaciones de Windows, ¿es Office Professional Plus la que se instaló? (Compruébalo en el Panel de control -> Aplicaciones -> y verifica qué versión de Office se instaló: Standard, Professional, etc.)
No, es estándar
fludo67
Mensajes: 21
Inscripciones: 13 sep 2016 - 14:23 horas.

3 de mayo de 2017 - 17:04

Debes adaptar la variable softname según la versión de Office que estés instalando.
En este caso,

softname="microsoft office standard 2016"
Killian
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

4 de mayo de 2017 - 08:48

fludo67 escribió:Debes adaptar la variable softname según la versión de Office que instales.
En este caso,

softname="Microsoft Office Standard 2016"
¡Muchas gracias! El problema está resuelto :)
Killian
Mensajes: 38
Inscripción: 3 de mayo de 2017 - 11:19

5 de mayo de 2017 - 13:59

Buen día,

Vuelvo a mencionar esto porque me gustaría poder desinstalar Office 2016 desde la consola WAPT
Aquí está mi código

Código: Seleccionar todo

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