2020-05-13 10:47:32 +00:00
####################################################################################################################################
#### Script : customFirefoxInstaller.ps1
#### Description : Script permettant d'automatiser la création d'un installeur personnalisé de Firefox (40 et +)
####################################################################################################################################
## Dossier d'origine
$DIR_root = " C:\firefox_work " ;
$DIR_installeur = " $DIR_root \installeur " ;
$DIR_custom = " $DIR_root \custom "
$DIR_make = " $DIR_root \make " ;
$TOOL_7zip = " $DIR_root \7zip\App\7-Zip\7z.exe " ;
$FILE_7z = " $DIR_make \app.7z " ;
$FILE_tag = " $DIR_make \app.tag " ;
$FILE_exe = " $DIR_make \firefox-custom.exe " ;
## Compteur
$iterator = 1 ;
# Récupérer le répertoire de démarrage du script
$scriptPath = split-path -parent $MyInvocation . MyCommand . Definition
####################################################################################################################################
## Vérification des pré-requis
####################################################################################################################################
## Vérification de l'existance des répertoires
if ( ! ( Test-Path $DIR_root ) ) {
Write-Host " Le répertoire $DIR_root n'existe pas ! " ;
$choice = Read-Host " Appuyer sur une touche pour sortir... " ;
exit ;
}
if ( ! ( Test-Path $DIR_installeur ) ) {
Write-Host " Le répertoire $DIR_installeur n'existe pas ! " ;
$choice = Read-Host " Appuyer sur une touche pour sortir... " ;
exit ;
}
if ( ! ( Test-Path $DIR_custom ) ) {
Write-Host " Le répertoire $DIR_custom n'existe pas ! " ;
$choice = Read-Host " Appuyer sur une touche pour sortir... " ;
exit ;
}
if ( ! ( Test-Path $DIR_make ) ) {
Write-Host " Le répertoire $DIR_make n'existe pas ! " ;
$choice = Read-Host " Appuyer sur une touche pour sortir... " ;
exit ;
}
## Vérification de la disponibilité de 7z.exe
if ( ! ( Test-Path $TOOL_7zip ) ) {
Write-Host " L'utilitaire $TOOL_7zip n'est pas disponible ! " ;
$choice = Read-Host " Appuyer sur une touche pour sortir... " ;
exit ;
}
####################################################################################################################################
## Traitement
####################################################################################################################################
## Afficher le contenu du répertoire stockant l'installeur
# Explication
Write-Host " Les dossiers suivant sont situés dans $DIR_installeur , veuillez choisir celui que vous souhaitez utiliser en indiquant le numéro entre crochet. " ;
# Récupérer la liste des installeurs
[ array ] $items = Get-ChildItem " $DIR_installeur \ " | Where-Object { $_ . extension -eq " .exe " } | Sort-Object " LastWriteTime " ;
# Afficher la liste des dossiers avec le numéro
foreach ( $item in $items ) {
Write-Host " [ $iterator ] - $item " ;
$iterator + + ;
}
# Choisir le dossier
$choice = Read-Host " Choisir le numéro du dossier à personnaliser " ;
$choice = $items [ $choice - 1 ] ;
$archive = " $DIR_installeur \ $choice " ;
$choice = $archive . replace ( '.exe' , '' ) ;
## Supprimer le répertoire si il existe déjà
if ( Test-Path $choice ) {
Remove-Item -Force -Recurse $choice ;
}
## Extraire l'installeur
Invoke-Expression " $TOOL_7zip x ' $archive ' -o' $choice ' " ;
## Suppression de fonctionnalités embarquées
# Firefox Hello
$file_path = " $choice \core\browser\features\loop@mozilla.org.xpi " ;
if ( ! ( Test-Path $file_path ) ) {
Write-Host " Firefox Hello n'est pas embarqué dans cette version de Firefox " ;
}
else {
Remove-Item -Force $file_path ;
}
# Pocket
$file_path = " $choice \core\browser\features\firefox@getpocket.com.xpi " ;
if ( ! ( Test-Path $file_path ) ) {
Write-Host " Firefox Pocket n'est pas embarqué dans cette version de Firefox " ;
}
else {
Remove-Item -Force $file_path ;
}
## Copie des fichiers de personnalisation
# autoconfig.js
$file_path = " $DIR_custom \autoconfig.js " ;
if ( ! ( Test-Path $file_path ) ) { Write-Host " Le fichier autoconfig.js n'existe pas dans $DIR_custom " ; $choice = Read-Host " Appuyer sur une touche pour sortir... " ; exit ; }
Copy-Item -Path $file_path -Destination " $choice \core\defaults\pref " ;
# custom.cfg
$file_path = " $DIR_custom \custom.cfg " ;
if ( ! ( Test-Path $file_path ) ) { Write-Host " Le fichier custom.cfg n'existe pas dans $DIR_custom " ; $choice = Read-Host " Appuyer sur une touche pour sortir... " ; exit ; }
Copy-Item -Path $file_path -Destination " $choice \core " ;
# profile (si présent)
$file_path = " $DIR_custom \profile " ;
if ( Test-Path $file_path ) { Copy-Item -Path $file_path -Destination " $choice \core\defaults " -Recurse ; }
# dictionnaires (si présent)
$file_path = " $DIR_custom \dictionaries\* " ;
if ( Test-Path $file_path ) { Copy-Item -Path $file_path -Destination " $choice \core\dictionaries " ; }
# extensions (si présent)
$file_path = " $DIR_custom \extensions " ;
if ( Test-Path $file_path ) { Copy-Item -Path $file_path -Destination " $choice \core " ; }
## Créer l'archive de base
# Entrer dans le dossier à personnaliser
Set-Location $choice ;
# SI le fichier personnalisé existe, ALORS le supprimer
if ( Test-Path $FILE_7z ) {
Remove-Item $FILE_7z ;
}
# Créer le fichier personnalisé
cmd / c " $TOOL_7zip a -r -t7z $FILE_7z -mx -m0=BCJ2 -m1=LZMA:d24 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 " ;
## Créer le fichier "app.tag"
# SI le fichier n'existe pas, ALORS le créer
if ( ! ( Test-Path $FILE_tag ) ) {
Add-Content -Path $FILE_tag -Value ';!@Install@!UTF-8!' ;
Add-Content -Path $FILE_tag -Value 'Title="Mozilla Firefox"' ;
Add-Content -Path $FILE_tag -Value 'RunProgram="setup.exe"' ;
Add-Content -Path $FILE_tag -Value ';!@InstallEnd@!' ;
}
## Créer l'installeur
# SI le fichier personnalisé existe, ALORS le supprimer
if ( Test-Path $FILE_exe ) {
Remove-Item $FILE_exe ;
}
# Créer le package d'installation
cmd / c " copy /B $DIR_make \7zSD.sfx+ $DIR_make \app.tag+ $DIR_make \app.7z $FILE_exe " ;
## Attendre pour sortir
Write-Host " L'installeur personnalisé est disponible dans $DIR_make sous le nom firefox-custom.exe " ;
$choice = Read-Host " Appuyer pour terminer... " ;
## Retourner sur l'emplacement d'origine
2020-05-13 10:51:58 +00:00
Set-Location $scriptPath