Question [function] wItem Installer Build MSI

Plus d'informations
il y a 11 ans 4 mois #13286 par Laurent Dardenne
Voici quelques fonctions dédiées à un outil gratuit de conception de MSI . Celui-ci propose un prg accessible via la ligne de commande, ces fonctions l'encapsule :
[code:1]
# Compile des MSI à partir de fichiers WIP ( wItem Installer free version)

function New-WitemInfo {
param (
[parameter(Mandatory=$true , Position=0) ]
[string] $Name,
[parameter(Mandatory=$true , Position=1) ]
[string] $Path)

$o=New-Object PSObject -Property @{Name=$Name;Path=$path}
$o.pstypenames[0]='WitemInfo'
$o
} #New-WitemInfo

function New-WitemBuilderInfo {
param (
[parameter(Mandatory=$true , Position=0)]
[ValidateNotNullOrEmpty()]
[string] $wipName,
[parameter(Mandatory=$true , Position=1)]
[ValidateNotNullOrEmpty()]
[string] $wipPath,
[parameter(Mandatory=$false , Position=2)]
[string] $msiName=[string]::Empty,
[parameter(Mandatory=$false , Position=3)]
[string] $msiPath=[string]::Empty,
[parameter(Mandatory=$false , Position=4)]
[ValidateNotNullOrEmpty()]
[System.Collections.IDictionary] $Properties
# ex: /p MYPROPERTY=\"the value\" /p COMPANYNAME=\"My Company\"
)

$isRenamed=$false

if ($msiName -eq [string]::Empty)
{
$msiName=$wipName
}
elseif ($msiName -ne $wipName)
{ $isRenamed=$true }

if ($msiPath -eq [string]::Empty)
{$msiPath=$wipPath}

$o=New-Object PSObject -Property @{Wip=(New-WitemInfo $wipName $wipPath );
Msi=(New-WitemInfo $msiName $msiPath );
isRenamed=$isRenamed;
Properties=$Properties}
$o.pstypenames[0]='WitemBuilderInfo'
$o
} #New-WitemBuilderInfo

Function Invoke-WitemInstaller{
#Exécute Witem Installer en ligne de commande.
#Exemple :
# $Setups=@{
# Client_MySolution= (New-WitemBuilderInfo \"Client_MySolution\" \"$($SvnTrunk.Client)\Livraisons\Package_Client\"«»);
# }
# Invoke-WitemInstaller $Setups

param(
[parameter(Mandatory=$true, Position=0)]
[ValidateNotNullOrEmpty()]
[System.Collections.IDictionary] $BuilderInfos,
[parameter(Mandatory=$false, Position=1)]
[ValidateNotNullOrEmpty()]
[string] $Path=\"C:\Program Files\wItem Installer 4.5.12\"
)

$Builder=\"$Path\Builder.com\"
$BuilderInfos.GetEnumerator()|
Foreach {
$BI=$_.Value
$WipFile=\"{0}\{1}.wip\" -F $BI.Wip.Path,$BI.Wip.Name
$outPath=\"{0}\" -F $BI.Msi.Path
Write-host \"`r`nGénération de $WipFile\" -Fore Green

$matches=$null # CBP..
#todo génération de la liste des propriétées
# ex: /p MYPROPERTY=\"the value\" /p COMPANYNAME=\"My Company\"

$res=& $builder /build $WipFile
#Builder.com renvoi tjr -1 dans $LastExitCode
#On parse le résultat de compte rendu d'exécution
$null=$res|Where {$_ -match '^Error:\s*(?<NombreErreurs>\d+)\s+Warnings:\s*\d+$'}

if ($matches.NombreErreurs -ne 0)
{ Write-Error \"La génération de $WipFile a échouée : $res\" }
elseif ($BI.isRenamed)
{
$oldName='{0}\{1}.msi' -F $BI.Wip.Path,$BI.Wip.Name
$newName='{0}\{1}.msi' -F $BI.Msi.Path,$BI.Msi.Name
Rename $oldName $newName -ea SilentlyContinue
if ($?)
{Write-host \"`tFichier $oldName renommé en $newName\"}
else
{Write-Error \"Impossible de renommer le fichier $oldName\" }
}# isRenamed
}# foreach
}# Invoke-WitemInstaller

[/code:1]
Peut être combiné avec cette approche .<br><br>Message édité par: Laurent Dardenne, à: 11/12/12 20:48

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 4 mois #13290 par Matthew BETTON
Bonsoir,

Merci Laurent pour ce Wrapper :)

@ +

Matthew

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

Plus d'informations
il y a 11 ans 4 mois #13302 par Laurent Dardenne
Matthew BETTON écrit:

Merci Laurent pour ce Wrapper :)

De rien.
Il me reste encore qq briques à vous communiquer, ensuite ces qq éléments hétéroclites 's'articuleront'.

Tutoriels PowerShell

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

Temps de génération de la page : 0.065 secondes
Propulsé par Kunena