Installation de Office365

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum
* English support on www.reddit.com/r/wapt
* Le support en français se fait sur ce forum
* Merci de préfixer le titre du thread par [RESOLU] s'il est résolu.
* Préciser version de WAPT installée ( 1.3.13 / 1.5 / 1.7.4)
* Préciser OS du serveur (Linux / Windows) et version (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets (Windows 7 / 10)
Minus
Messages : 6
Inscription : 02 août 2019 - 09:05

02 août 2019 - 09:32

Bonjour à tous

Bon je me suis mis à WAPT il y a quelques semaines après avoir passé quelques années sur updatengine.

Cette migration ne s'est pas faite sans quelques douleurs, mais cela se passe bien pour le moment et je dois attaquer un gros morceau: le deploiement de Office365.

J'ai donc simplement utilisé l'outil de deploiement de windows pour télécharger la dernière version de Office365 puis:

Généré mon propre fichier xml (config-installation.xml) pour l'installation:

Code : Tout sélectionner

<Configuration>
  <Info Description="Domaine Office Customization V1" />
  <Add OfficeClientEdition="64" Channel="Monthly" ForceUpgrade="TRUE">
    <Product ID="O365BusinessRetail">
      <Language ID="fr-fr" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="0" />
  <Property Name="PinIconsToTaskbar" Value="TRUE" />
  <Property Name="SCLCacheOverride" Value="0" />
  <Property Name="AUTOACTIVATE" Value="FALSE" />
  <Updates Enabled="TRUE" />
  <Updates Branch="Business" />
  <RemoveMSI>
    <IgnoreProduct ID="VisPro" />
    <IgnoreProduct ID="VisStd" />
  </RemoveMSI>
  <AppSettings>
    <Setup Name="Company" Value="Domaine" />
    <User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas" />
    <User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas" />
    <User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas" />
  </AppSettings>
  <Display Level="None" AcceptEULA="TRUE" />
</Configuration>
Puis créé un fichier bat pour le lancement de l'installation

Code : Tout sélectionner

@echo off
setup.exe /configure config-installation.xml
exit
idem pour la partie désinstallation dont voici le xml (config-uninstall.xml):

Code : Tout sélectionner

<Configuration>
<Display Level="None" AcceptEULA="True" />
<Property Name="FORCEAPPSHUTDOWN" Value="True" />
<Remove>
<Product ID="O365BusinessRetail">
</Product>
</Remove>
</Configuration>
et le fichier bat:

Code : Tout sélectionner

@echo off
setup.exe /configure config-uninstall.xml
exit
lancé séparement les 2 fichiers bat fonctionnent parfaitement et font ce que je leur demande

donc derrière pour wapt, j'ai créé le fichier setup.py suivant:

Code : Tout sélectionner

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

uninstallkey = []

def install():
	print('installing domaine-Office365Business')
	run('InstallOffice365.bat')

def uninstall():
	print('uninstalling domaine-Office365Business')
	run('UninstallOffice365.bat')
La partie installation fonctionne à merveille lors du redémarrage ou de l'arrêt de la machine, par contre la partie désinstallation ne fonctionne pas du tout.

Pour la desinstallatiion voila les infos que j'ai pu extraire de windows:

Code : Tout sélectionner

sofware name: Microsoft Office 365 Business - fr-fr
Uninstall key: O365BusinessRetail - fr-fr
version: 16.0.11727.20244
Il y a surement beaucoup plus simple et beaucoup plus propre à faire à tous les niveaux donc je suis preneur surtout en intégrant:

une installation qui se fasse sans obligation du redémarrage de la machine
une desinstallation qui fonctionne via la console WAPT

Merci par avance pour votre coup de main qui me permettra en même temps d'en apprendre plus sur WAPT

Serveur Debian 9.9
WAPT 1.5.1.26
Station création paquet sous W10
Christophe0110
Messages : 21
Inscription : 11 juin 2019 - 12:04

02 août 2019 - 14:13

Salut !

Alors je me suis attaqué à ce paquet pour Office 365 Business (2019) la semaine passée...
Donc je me permet de partager mon setup.py :

Code : Tout sélectionner

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

uninstallkey = []

def install():

    if not installed_softwares(u'O365BusinessRetail'):
        print('Microsoft Office 365 Business 2019 : Installing...')

        killalltasks(['WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'])

        run(u'setup.exe /configure Configuration.xml',timeout=2000,accept_returncodes=[1641,3010,0])

        print('Microsoft Office 365 Business 2019 : Installation complete')
    else:
        print('Microsoft Office 365 Business 2019 : Already installed !')

    if not isdir(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall')):
        mkdirs(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall'))
    filecopyto('setup.exe',makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe'))
    filecopyto('ConfigurationUninstall.xml',makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','ConfigurationUninstall.xml'))

def uninstall():

    print('Microsoft Office 365 Business 2019 : Uninstalling...')

    #Closing applications :
    killalltasks(['WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'])

    #Uninstalling :
    if installed_softwares(u'O365BusinessRetail'):
        if isfile(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe')):
            run('"' + makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe') + r'" /configure ConfigurationUninstall.xml',timeout=2000,accept_returncodes=[1641,3010,0])
            remove_file(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe'))
            remove_file(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','ConfigurationUninstall.xml'))
            if dir_is_empty(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall')):
                remove_tree(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall'))

    print('Microsoft Office 365 Business 2019 : Uninstallation complete')


A la racine du paquet, j'ai placé le fichier "setup.exe" ainsi que le répertoire "Office" téléchargé grâce à la commande préalablement exécutée : setup.exe /download configuration.xml

Voici le contenu du fichier configuration.xml (mais c'est à toi de le configurer à ta guise) :

Code : Tout sélectionner

<Configuration ID="30ca9b8e-4c43-4a87-a12f-1e5966fdce99">
  <Info Description="NomSociete" />
  <Add OfficeClientEdition="32" Channel="Insiders" ForceUpgrade="TRUE">
    <Product ID="O365BusinessRetail">
      <Language ID="fr-fr" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
    </Product>
    <Product ID="ProofingTools">
      <Language ID="en-us" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="0" />
  <Property Name="PinIconsToTaskbar" Value="TRUE" />
  <Property Name="SCLCacheOverride" Value="0" />
  <Property Name="AUTOACTIVATE" Value="FALSE" />
  <Updates Enabled="TRUE" />
  <RemoveMSI>
    <IgnoreProduct ID="VisPro" />
    <IgnoreProduct ID="VisStd" />
  </RemoveMSI>
  <AppSettings>
    <Setup Name="Company" Value="Mecamold" />
    <User Key="software\microsoft\office\16.0\access\security" Name="vbawarnings" Value="1" Type="REG_DWORD" App="access16" Id="L_VBAWarningsPolicy" />
    <User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas" />
    <User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas" />
    <User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas" />
  </AppSettings>
  <Display Level="None" AcceptEULA="TRUE" />
  <Logging Level="Off" />
</Configuration>
Et le contenu du fichier configurationUninstall.xml :

Code : Tout sélectionner

<Configuration>
  <Display Level="None" AcceptEULA="TRUE" />
  <Property Name="FORCEAPPSHUTDOWN" Value="True" />
  <Remove>
    <Product ID="O365BusinessRetail">
      <Language ID="fr-fr" />
    </Product>
  </Remove>
  <Logging Level="Off" />
</Configuration>
Comme tu pourras le comprendre via le code, je copie durant l'installation le fichier "setup.exe" ainsi que le fichier "ConfigurationUninstall.xml" dans un dossier créé sous "Microsoft Office".
Ensuite, je l'utilise pour la désinstallation...

Ca fonctionne parfaitement ;)

A+
Chris.
Minus
Messages : 6
Inscription : 02 août 2019 - 09:05

02 août 2019 - 15:16

re

genial, un grand merci Christophe0110

bon la c'est vacances pour moi mais dés mon retour au boulot je ne manquerai pas de mettre à jour mon office.

Je te tiendrais au courant.
Avatar de l’utilisateur
Ben
Messages : 9
Inscription : 07 nov. 2019 - 17:19

07 nov. 2019 - 17:26

Bonjour,

Je suis également en pleine réflexion pour le déploiement d'O365. Je me suis basé sur le travail effectué par Christophe0110 (merci à lui au passage !) mais je rencontre un problème.
Pour l'installation, tout fonctionne parfaitement. Elle s'effectue correctement et tient compte du fichier XML de configuration.

Par contre, pour la désinstallation, ça coince : je rentre bien dans le script (les fichiers et le dossier "OfficeClickToRunWAPTUninstall" se supprime bien) ... mais O365 reste installé sur le poste. Côté console WAPT, le package n'est plus visible sur le poste, comme si tout s'était bien passé.

A priori, c'est la ligne suivante qui coince et ne lance pas l'installeur :

Code : Tout sélectionner

run('"' + makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe') + r'" /configure ConfigurationUninstall.xml',timeout=2000,accept_returncodes=[1641,3010,0])
L'un de vous aurait une idée, je sèche ?

Merci !
-------------------
Version de WAPT : 1.7.4 (Community Edition)
OS du serveur : Windows Server 2016
OS de la machine d'administration/création des paquets : Windows 10 1709
Avatar de l’utilisateur
Ben
Messages : 9
Inscription : 07 nov. 2019 - 17:19

13 nov. 2019 - 11:44

J'ai résolu mon problème qui était tout bête : il fallait passer le chemin absolu vers le fichier XML pour la désinstallation (contrairement à ce qui était proposé dans le script au dessus).

Ci-dessous mon script complet :

Code : Tout sélectionner

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

uninstallkey = []

def install():

    if not installed_softwares(u'O365BusinessRetail'):
        print('Microsoft Office 365 Business 2019 : Installation...')

        killalltasks(['WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'])

        run(u'setup.exe /configure install.xml',timeout=2000,accept_returncodes=[1641,3010,0])

        print('Microsoft Office 365 Business 2019 : Installation complete')
    else:
        print('Microsoft Office 365 Business 2019 : Already installed !')

    if not isdir(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall')):
        mkdirs(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall'))
    filecopyto('setup.exe',makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe'))
    filecopyto('uninstall.xml',makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','uninstall.xml'))
    filecopyto('uninstall.bat',makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','uninstall.bat'))

def uninstall():

    print('Microsoft Office 365 Business 2019 : Uninstalling...')

    uninstallstring ='"%s\Microsoft Office\OfficeClickToRunWAPTUninstall\setup.exe" /configure "%s\Microsoft Office\OfficeClickToRunWAPTUninstall\uninstall.xml"' % (programfiles32,programfiles32)

    #Closing applications :
    killalltasks(['WINWORD.EXE','POWERPNT.EXE','EXCEL.exe','MSPUB.EXE','MSACCESS.EXE','INFOPATH.EXE','lync.exe','ONENOTE.EXE','OUTLOOK.EXE','ONENOTEM.EXE','MSOSYNC.EXE','GROOVE.EXE'])

    #Uninstalling :
    if installed_softwares(u'O365BusinessRetail'):
        print('O365 a ete trouve.')
        if isfile(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe')):
            print('Setup.exe trouve. Lancement de la commande de desinstallation ('+uninstallstring+')')

            run(uninstallstring,timeout=2000,accept_returncodes=[1641,3010,0])

            print('Nettoyage des fichiers de desinstallation.')
            remove_file(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','setup.exe'))
            remove_file(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','uninstall.xml'))
            remove_file(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall','uninstall.bat'))

            print('Suppression du dossier.')
            if dir_is_empty(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall')):
                remove_tree(makepath(programfiles32,'Microsoft Office','OfficeClickToRunWAPTUninstall'))

    print('Microsoft Office 365 Business 2019 : Uninstallation complete')
-------------------
Version de WAPT : 1.7.4 (Community Edition)
OS du serveur : Windows Server 2016
OS de la machine d'administration/création des paquets : Windows 10 1709
Christophe0110
Messages : 21
Inscription : 11 juin 2019 - 12:04

14 nov. 2019 - 14:57

Bonjour Ben,

Etrange en effet car chez moi, ça fonctionne sans donner le chemin complet vers le fichier xml...

Mais si ça marche comme ça, je modifierai mon script par sécurité (on ne sait jamais que chez certain ça passe et chez d'autres pas...).

A+
Répondre