Skip to content
 

Installation silencieuse d’OpenOffice.org 3.3.0

Avertissement

Cet article détaille la procédure d’installation silencieuse d’OpenOffice.org 3.3.0 destinée à s’inscrire dans le processus décrit ici, lequel vise à automatiser le déploiement d’un ensemble d’applications sur une machine tournant sous Windows 7.

Il n’en reste pas moins que cette procédure peut parfaitement s’appliquer de manière autonome.

Introduction

Comme il faut un début à tout, on commence par se rendre ici pour y télécharger la dernière version. À ce jour, elle est estampillée 3.3.0.
Si vous envisagez d’installer Java par ailleurs, vous pouvez sans complexe vous saisir de la version qui en est dépourvue.
Une fois la chose rapatriée sur votre ordinateur, lancez-la sans sourciller.
Pas de panique! Nous n’allons pas procéder à une installation en bonne et due forme mais simplement décompresser les fichiers. Par défaut, cette opération s’effectue dans un dossier OpenOffice.org 3.3 (fr) Installation Files qui va apparaître par la magie informatique sur le bureau de votre machine adorée. Libre à vous d’en indiquer un autre mais finissez malgré tout par cliquer sur Décompresser, sinon on va pas s’en sortir.
Quand la décompression s’est achevée, abstenez vous de cliquer sur Suivant et choisissez plutôt Annuler histoire d’en finir.
Au sein du dossier d’extraction, vous devriez découvrir entre autres un fichier openofficeorg33.msi. Il est certes tentant de le lancer directement comme on pouvait le faire dans les versions précédentes mais, si vous vous y risquez, la chose se rebiffe et vous enjoint sans fioriture d’utiliser le fichier setup.exe pour commencer l’installation (voir :).
Puisqu’on nous le demande de manière aussi insistante, il faut bien nous y résoudre d’autant qu’il suffit d’un bête commutateur /qn pour lancer setup.exe en mode silencieux. Ce qui en vbs se résume à ces quelques lignes :

Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Récupération du chemin du dossier contenant le script en cours
strCheminDossierScript = objFSO.GetParentFolderName(Wscript.ScriptFullName)

'Installation silencieuse de OpenOffice
strCheminFichierInstall = strCheminDossierScript & "\setup.exe"
objShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /qn", 0, True

 
On bourre le tout dans un ch’ti fichier texte auquel on donne le doux nom d’Install.vbs et qu’on glisse délicatement à la racine du dossier d’extraction. On rajoute au même endroit un second fichier texte Dexcription.txt qui contient simplement :

Installation d'OpenOffice.org 3.3.

 
et l’affaire est dans le sac…

Désactiver l’enregistrement

On pourrait s’arrêter là mais ce serait trop simple et on s’éviterait ce plaisir rare qu’il y a à se prendre la tête en se demandant où c’est y donc qu’on a merdé à force de vouloir se compliquer la vie. Certes, ça fait mal, ça bouffe du temps mais c’est tellement bon…

Or donc, dans notre grande munificence, on va chercher à éviter à l’utilisateur final de devoir se cogner l’écran d’enregistrement à la première ouverture de la suite.

Nul besoin d’être familier de la langue de Shakespeare pour se rendre ici et y télécharger la version de DisableFirstStartWzd.oxt qui va bien.
Pourquoi faut-il passer par une extension pour faire une chose aussi basique? Cela fait partie des mystères régulièrement soumis à nos pauvres esprits par la communauté programmatrice.

Bref, on télécharge le bidule sans plus se poser de question. Par bête souci de compatibilité future du code, on prend le temps de le renommer en DisableFirstStartWzd.oxt et on le range précautionneusement aux cotés d’Install.vbs.
Par ailleurs, comme on est bête et discipliné, on crée un fichier bat qu’on appelle par exemple PremierLancement32.bat dans lequel on colle les deux magistrales lignes qui suivent :

pushd %ProgramFiles%\OpenOffice.org 3\Program\
unopkg add --shared DisableFirstStartWzd.oxt

 
Comme, en plus de tout, on est un tantinet prévoyant, on crée un second fichier PremierLancement64.bat qui va assurer la même fonction pour un système 64 bits :

pushd %ProgramFiles(x86)%\OpenOffice.org 3\Program\
unopkg add --shared DisableFirstStartWzd.oxt

 
Et on cuisine l’ensemble à la sauce vbs :

'Récupération du chemin du dossier Program d'OppenOffice dans Program Files
Set WshSysEnv = objShell.Environment("SYSTEM")
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	'64 bits
	strCheminDossierProgram = objShell.ExpandEnvironmentStrings("%PROGRAMFILES(X86)%") & "\OpenOffice.org 3\Program\"
Else
	'32 bits
	strCheminDossierProgram = objShell.ExpandEnvironmentStrings("%PROGRAMFILES%") & "\OpenOffice.org 3\Program\"
End If

'Copie du fichier DisableFirstStartWzd.oxt s'il existe
If objFSO.FileExists(strCheminDossierScript & "\DisableFirstStartWzd.oxt") Then
	objFSO.CopyFile strCheminDossierScript & "\DisableFirstStartWzd.oxt", strCheminDossierProgram, True
End If

'Lancement du batch pour désactiver l'assistant du premier démarrage
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	strCheminFichierEnregistrement = strCheminDossierScript & "\PremierLancement64.bat"
Else
	strCheminFichierEnregistrement = strCheminDossierScript & "\PremierLancement32.bat"
End If

If objFSO.FileExists(strCheminFichierEnregistrement) Then
	objShell.Run Chr(34) & strCheminFichierEnregistrement & Chr(34), 0, True
	'Création d'un raccourci vers quickstart.exe pour activer le démarrage rapide
	'Récupération du dossier Démarrage du menu Démarrer
	strCheminDossierDemarrage = objShell.SpecialFolders("AllUsersStartMenu") & "\Programs\Startup"
	Set objLien = objShell.CreateShortcut(strCheminDossierDemarrage & "\Démarrage rapide d'OpenOffice.lnk")
	objLien.TargetPath = strCheminDossierProgram & "quickstart.exe"
	objLien.IconLocation = strCheminDossierProgram & "quickstart.exe"
	objLien.Save
End If

 
Vous pouvez allègrement supprimer les lignes 25 à 31 si vous ne souhaitez pas disposer du démarrage rapide d’OpenOffice au lancement de Windows.

Supprimer l’écran de démarrage

Puisqu’on s’obstine à vouloir couper les cheveux en quatre voire plus, on va s’attacher maintenant à se débarrasser du Splash Screen. Sur une version installée d’OpenOffice.org, il suffit de récupérer le fichier soffice.ini planqué dans C:\Program Files\OpenOffice.org 3\program (ou dans C:\Program Files(x86)\OpenOffice.org 3\program si on est en 64 bits) et de modifier la deuxième ligne en passant la valeur Logo de 1 à 0. On glisse alors le fichier rectifié dans notre dossier de travail et on ajoute ces quelques lignes à Install.vbs :

'Copie du fichier Soffice.ini s'il existe
If objFSO.FileExists(strCheminDossierScript & "\Soffice.ini") Then
	objFSO.CopyFile strCheminDossierScript & "\Soffice.ini", strCheminDossierProgram, True
End If

Enregistrer au format Microsoft Office

Une des réticences premières des personnes auxquelles je propose de remplacer leur version généralement piratée de Microsoft Office par OpenOffice.org est liée à leur crainte de ne pas pouvoir partager leurs documents. Pour lever leur appréhension, je leur mitonne une version qui enregistre par défaut aux formats "microsoftiens".

Pour ce faire, il faut s’en aller bidouiller le fichier registrymodifications.xcu que le programme crée à l’occasion de son premier lancement dans les entrailles du dossier utilisateur (très précisément ici: C:\Users\Nom_Utilisateur\AppData\Roaming\OpenOffice.org\3\user).
Comme forcément il n’y a point eu encore de lancement, il faut tout faire nous même : construire l’arborescence et coller notre fichier perso registrymodifications.xcu à l’endroit idoine.

Retroussons nos manches et opérons derechef :

'Création du dossier utilisateur d'OpenOffice
strCheminOpenOfficeUser = objShell.ExpandEnvironmentStrings("%APPDATA%") & "\OpenOffice.org"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\3"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\user"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\"

'Copie du fichier registrymodifications.xcu
strCheminFichierConfig = strCheminDossierScript & "\registrymodifications.xcu"
If objFSO.FileExists(strCheminFichierConfig) Then
	objFSO.CopyFile strCheminFichierConfig, strCheminOpenOfficeUser, True
End If

 
Et ce foutu fichier registrymodifications.xcu, on le trouve où, me direz-vous?
Ben, on le fabrique soi-même avec ses petits doigts agiles. Il s’agit en fait d’un banal xml dont voici voilà le contenu (conseil d’ami : cliquez sur le bouton view source pour voir la bête dans toute sa profonde largeur) :

<?xml version="1.0" encoding="UTF-8"?>
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['com.sun.star.presentation.PresentationDocument']">
		<prop oor:name="ooSetupFactoryDefaultFilter" oor:op="fuse">
			<value>MS PowerPoint 97</value>
		</prop>
	</item>
	<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['com.sun.star.sheet.SpreadsheetDocument']">
		<prop oor:name="ooSetupFactoryDefaultFilter" oor:op="fuse">
			<value>MS Excel 97</value>
		</prop>
	</item>
	<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['com.sun.star.text.TextDocument']">
		<prop oor:name="ooSetupFactoryDefaultFilter" oor:op="fuse">
			<value>MS Word 97</value>
		</prop>
	</item>
</oor:items>

 

Conclusion et téléchargement

Au final, si on retient toutes les options, Install.vbs ressemble à ça :

Cliquez pour afficher/cacher le code»  
Je livre ici à votre sagacité l’ensemble de la chose bien évidemment allégée des fichiers d’installation propres à OpenOffice.org.
 
 

Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Récupération du chemin du dossier contenant le script en cours
strCheminDossierScript = objFSO.GetParentFolderName(Wscript.ScriptFullName)

'Installation silencieuse d'OpenOffice
strCheminFichierInstall = strCheminDossierScript & "\setup.exe"
objShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /qn", 0, True

'Récupération du chemin du dossier Program d'OppenOffice dans Program Files
Set WshSysEnv = objShell.Environment("SYSTEM")
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	'64 bits
	strCheminDossierProgram = objShell.ExpandEnvironmentStrings("%PROGRAMFILES(X86)%") & "\OpenOffice.org 3\Program\"
Else
	'32 bits
	strCheminDossierProgram = objShell.ExpandEnvironmentStrings("%PROGRAMFILES%") & "\OpenOffice.org 3\Program\"
End If

'Copie du fichier DisableFirstStartWzd.oxt s'il existe
If objFSO.FileExists(strCheminDossierScript & "\DisableFirstStartWzd.oxt") Then
	objFSO.CopyFile strCheminDossierScript & "\DisableFirstStartWzd.oxt", strCheminDossierProgram, True
End If

'Copie du fichier Soffice.ini s'il existe
If objFSO.FileExists(strCheminDossierScript & "\Soffice.ini") Then
	objFSO.CopyFile strCheminDossierScript & "\Soffice.ini", strCheminDossierProgram, True
End If

'Lancement du batch pour désactiver l'assistant du premier démarrage
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	strCheminFichierEnregistrement = strCheminDossierScript & "\PremierLancement64.bat"
Else
	strCheminFichierEnregistrement = strCheminDossierScript & "\PremierLancement32.bat"
End If

If objFSO.FileExists(strCheminFichierEnregistrement) Then
	objShell.Run Chr(34) & strCheminFichierEnregistrement & Chr(34), 0, True
	'Création d'un raccourci vers quickstart.exe pour activer le démarrage rapide
	'Récupération du dossier Démarrage du menu Démarrer
	strCheminDossierDemarrage = objShell.SpecialFolders("AllUsersStartMenu") & "\Programs\Startup"
	Set objLien = objShell.CreateShortcut(strCheminDossierDemarrage & "\Démarrage rapide d'OpenOffice.lnk")
	objLien.TargetPath = strCheminDossierProgram & "quickstart.exe"
	objLien.IconLocation = strCheminDossierProgram & "quickstart.exe"
	objLien.Save
End If

'Création du dossier utilisateur d'OpenOffice
strCheminOpenOfficeUser = objShell.ExpandEnvironmentStrings("%APPDATA%") & "\OpenOffice.org"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\3"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\user"
If Not objFSO.FolderExists(strCheminOpenOfficeUser) Then
	set objDossier = objFSO.CreateFolder(strCheminOpenOfficeUser)
End If
strCheminOpenOfficeUser = strCheminOpenOfficeUser & "\"

'Copie du fichier registrymodifications.xcu
strCheminFichierConfig = strCheminDossierScript & "\registrymodifications.xcu"
If objFSO.FileExists(strCheminFichierConfig) Then
	objFSO.CopyFile strCheminFichierConfig, strCheminOpenOfficeUser, True
End If

Powered by Hackadelic Sliding Notes 1.6.5
Page vue 21 057 fois

Un commentaire

  1. MATT dit :

    Un grand merci pour tout ces éléments ! ils m’ont été très utile dans le cadre de mon activité pro !

    a+

Laissez une réponse