Question [Astuce]Créer un mini setup rapidement

Plus d'informations
il y a 14 ans 1 mois #11836 par xyz
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 14 ans 4 semaines #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 13 ans 9 mois #12686 par xyz
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.040 secondes
Propulsé par Kunena