Question [Astuce]Créer un mini setup rapidement

Plus d'informations
il y a 11 ans 11 mois #11836 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

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 10 mois #11855 par SiSMik
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 !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 7 mois #12686 par Laurent Dardenne
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.066 secondes
Propulsé par Kunena