Question [Astuce]Créer un mini setup rapidement
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 11 ans 6 mois #11836
par Laurent Dardenne
Tutoriels PowerShell
[Astuce]Créer un mini setup rapidement a été créé par Laurent Dardenne
Une astuce pour créer rapidement un setup sans passer par une phase d'apprentissage, ou de dépense, d'un outil tier dédié, tel installShield (payant) ou WIX (Open Source).
[code:1]
#Crée un module de test
$PathModule=\"C:\Temp\"
if (-not (Test-Path $PathModule))
{ throw \"Le répertoire n'existe pas: $PathModule\" }
@\"
Function Get-Files{
Dir C:\Windows
}
New-Alias glf Get-Files
\"@ > \"$PathModule\MonModule.psm1\"
#Script d'installation du Module
@'
try {
$My= Split-Path $MyInvocation.MyCommand.Path
Start-Transcript \"$My\SetupClient.Log\" -ea SilentlyContinue
Write-Host \"Ajout du module\" -fore Green
if (-not (test-path \"$PSHome\Modules\MonModule\"«»))
{ md \"$PSHome\Modules\MonModule\" -verbose}
Copy \"$My\MonModule.psm1\" \"$PSHome\Modules\MonModule\MonModule.psm1\" -verbose -force
#Copy \"$My\MonModule.psd1\" \"$PSHome\Modules\MonModule\MonModule.psd1\" -verbose -force
#etc
Write-Host \"Suite de votre setup...\" -fore Green
}
Finally {
Stop-Transcript
}
#Restart-Computer -Computername '.' -Confirm
'@ > \"$PathModule\MonSetup.ps1\"
[/code:1]
La suite nécessite l'installation de la distribution de DotNetZip Libary , et sur le poste de développement uniquement.
[code:1]
#Construit une archive
#Répertoire hébergeant les outils de compression
#A modifier selon votre installation
$ZipLib=\"C:\Dev\DotNetZipLib\Tools\"
#Répertoire hébergeant les fichiers à compresser
$Trunk=\"C:\Temp\"
#Depends on Ionic's DotNetZip library. This is version 1.9.1.8 of the utility.
#Outil de création d'une archive
$Zipper=\"$ZipLib\Zipit.exe\"
#Outil de création d'une archive autoextractible
$Sfx=\"$ZipLib\ConvertZipToSfx.exe\"
#On recopie les fichiers dans un répertoire dédié
#car à priori on ne peut pas utiliser le pipe pour passer une suite de noms de fichier
$OutPath=\"$PathModule\MonProjet\Setup\out\"
if (-not (Test-Path $OutPath))
{MD $OutPath}
$Out=\"$OutPath\MonProjet\"
$OutFile=\"$Out.zip\"
$OutExe=\"$Out.exe\"
#Pour faciliter l'appel de l'outil de compression
#on recopie les fichiers dans un répertoire temporaire dédié.
\"$PathModule\MonModule.psm1\",
\"$PathModule\MonSetup.ps1\" | Copy -Destination $OutPath
#On supprime les fichiers créés lors de l'exécution précédente et ceux inutiles
$OutFile,$OutExe,\"$OutPath\*.bak\"|del -force -ea SilentlyContinue -verbose
#Création de l'archive : NomDeFichier.zip
&\"$Zipper\" \"$OutFile\" -D $OutPath -E *.* -eq -progress -zc \"Setup MonModule. (c) xxx\"
if ($LastExitCode -ne 0)
{Throw \"Erreur $LastExitCode lors de la construction de l'archive : $OutFile\" }
#Création de l'autoextractible : NomDeFichier.zip -> NomDeFichier.exe
#couplé à l'exécution d'un script PowerShell
&\"$Sfx\" -cmdline -comment \"Setup MonModule \" -exeonunpack \"Powershell -noprofile -File .\MonSetup.ps1\" \"$OutFile\"
if ($LastExitCode -ne 0)
{Throw \"Erreur $LastExitCode lors de la construction de l'archive autoextractible.\" }
#Fichiers générés (2)
dir \"$PathModule\MonProjet\Setup\out\"
#recopie pour extraction
copy \"$PathModule\MonProjet\Setup\out\monprojet.exe\" \"$PathModule\MonProjet\"
#Affiche l'aide en ligne, référence le nom du fichier et
#la commande a exécuter une fois l'extraction terminée
&\"$PathModule\MonProjet\monprojet.exe\" /?
#go
&\"$PathModule\MonProjet\monprojet.exe\"
#Todo gestion des erreurs du setup
type \"$PathModule\MonProjet\SetupClient.Log\"
Import-Module MonModule
Get-Module
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 18/05/12 15:25
[code:1]
#Crée un module de test
$PathModule=\"C:\Temp\"
if (-not (Test-Path $PathModule))
{ throw \"Le répertoire n'existe pas: $PathModule\" }
@\"
Function Get-Files{
Dir C:\Windows
}
New-Alias glf Get-Files
\"@ > \"$PathModule\MonModule.psm1\"
#Script d'installation du Module
@'
try {
$My= Split-Path $MyInvocation.MyCommand.Path
Start-Transcript \"$My\SetupClient.Log\" -ea SilentlyContinue
Write-Host \"Ajout du module\" -fore Green
if (-not (test-path \"$PSHome\Modules\MonModule\"«»))
{ md \"$PSHome\Modules\MonModule\" -verbose}
Copy \"$My\MonModule.psm1\" \"$PSHome\Modules\MonModule\MonModule.psm1\" -verbose -force
#Copy \"$My\MonModule.psd1\" \"$PSHome\Modules\MonModule\MonModule.psd1\" -verbose -force
#etc
Write-Host \"Suite de votre setup...\" -fore Green
}
Finally {
Stop-Transcript
}
#Restart-Computer -Computername '.' -Confirm
'@ > \"$PathModule\MonSetup.ps1\"
[/code:1]
La suite nécessite l'installation de la distribution de DotNetZip Libary , et sur le poste de développement uniquement.
[code:1]
#Construit une archive
#Répertoire hébergeant les outils de compression
#A modifier selon votre installation
$ZipLib=\"C:\Dev\DotNetZipLib\Tools\"
#Répertoire hébergeant les fichiers à compresser
$Trunk=\"C:\Temp\"
#Depends on Ionic's DotNetZip library. This is version 1.9.1.8 of the utility.
#Outil de création d'une archive
$Zipper=\"$ZipLib\Zipit.exe\"
#Outil de création d'une archive autoextractible
$Sfx=\"$ZipLib\ConvertZipToSfx.exe\"
#On recopie les fichiers dans un répertoire dédié
#car à priori on ne peut pas utiliser le pipe pour passer une suite de noms de fichier
$OutPath=\"$PathModule\MonProjet\Setup\out\"
if (-not (Test-Path $OutPath))
{MD $OutPath}
$Out=\"$OutPath\MonProjet\"
$OutFile=\"$Out.zip\"
$OutExe=\"$Out.exe\"
#Pour faciliter l'appel de l'outil de compression
#on recopie les fichiers dans un répertoire temporaire dédié.
\"$PathModule\MonModule.psm1\",
\"$PathModule\MonSetup.ps1\" | Copy -Destination $OutPath
#On supprime les fichiers créés lors de l'exécution précédente et ceux inutiles
$OutFile,$OutExe,\"$OutPath\*.bak\"|del -force -ea SilentlyContinue -verbose
#Création de l'archive : NomDeFichier.zip
&\"$Zipper\" \"$OutFile\" -D $OutPath -E *.* -eq -progress -zc \"Setup MonModule. (c) xxx\"
if ($LastExitCode -ne 0)
{Throw \"Erreur $LastExitCode lors de la construction de l'archive : $OutFile\" }
#Création de l'autoextractible : NomDeFichier.zip -> NomDeFichier.exe
#couplé à l'exécution d'un script PowerShell
&\"$Sfx\" -cmdline -comment \"Setup MonModule \" -exeonunpack \"Powershell -noprofile -File .\MonSetup.ps1\" \"$OutFile\"
if ($LastExitCode -ne 0)
{Throw \"Erreur $LastExitCode lors de la construction de l'archive autoextractible.\" }
#Fichiers générés (2)
dir \"$PathModule\MonProjet\Setup\out\"
#recopie pour extraction
copy \"$PathModule\MonProjet\Setup\out\monprojet.exe\" \"$PathModule\MonProjet\"
#Affiche l'aide en ligne, référence le nom du fichier et
#la commande a exécuter une fois l'extraction terminée
&\"$PathModule\MonProjet\monprojet.exe\" /?
#go
&\"$PathModule\MonProjet\monprojet.exe\"
#Todo gestion des erreurs du setup
type \"$PathModule\MonProjet\SetupClient.Log\"
Import-Module MonModule
Get-Module
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 18/05/12 15:25
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 11 ans 6 mois #11855
par SiSMik
Réponse de SiSMik sur le sujet Re:[Astuce]Créer un mini setup rapidement
Plutôt cool comme méthode, à garder sous le coude en cas de besoin !
J'utilise aussi DotNetZip dans pas mal de scripts, c'est très pratique !
J'utilise aussi DotNetZip dans pas mal de scripts, c'est très pratique !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 11 ans 2 mois #12686
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Astuce]Créer un mini setup rapidement
Cela date un peu, mais voici
un post
sur la création d'un installateur de module avec Wix.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.054 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Astuce]Créer un mini setup rapidement