Question [Résolu} Contrôler présence d'un logiciel, si abs

Plus d'informations
il y a 5 ans 5 mois #27691 par David
Bonjour,

Alors le titre est tout à fait clair :)

J'essaie de contrôler la présence de WinSCP sur une machine mais j'ai quelques soucis que je n'arrive pas a corriger.

Je récupère bien la liste des applications, mais systématiquement le script me renvoie que winscp n'existe pas même quand il est bien installé
Quand Winscp n'est pas installé, l'installation se fait bien mais pas à chaque fois, je m'explique, si j'ai déja sur ma machine le dossier chocolatey avec les sources de winscp dedans il ne va pas l'installer, or quand je supprime les sources, il l'installe bien ...

[code:1]
$Recherche = \"WinSCP\"
$Application = \"Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique\"
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \"WinSCP est déjà installé ... Poursuite de la synchronisation ...\"
}
else{
Write-Host -ForegroundColor Red \"WinSCP n'existe pas, téléchargement et installation en cours ...\"
Install-Package -Name \"WinSCP\" -ProviderName chocolatey -Force
}
[/code:1]

Je suis preneur de toute idée
Merci d'avance
Goro<br><br>Message édité par: goro, à: 22/10/18 14:17

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

Plus d'informations
il y a 5 ans 5 mois #27694 par Philippe
salut goro

Je récupère bien la liste des applications, mais systématiquement le script me renvoie que winscp n'existe pas même quand il est bien installé

si je me base sur le script que tu nous a donner, il fonctionne pas
la deuxième ligne avec le Get-ItemProperty est entre guillemets, hors la commande ne s'exécute pas dans ce cas
il faut enlever les guillemets

si j'ai déja sur ma machine le dossier chocolatey avec les sources de winscp dedans il ne va pas l'installer, or quand je supprime les sources, il l'installe bien …
Je suis preneur de toute idée

une idée serai de tester directement le fichier exe dans le dossier d'installation comme si dessous
tu peut aussi tester la version (c'est possible avec ton script en le modifient un peu)

[code:1]if (Test-Path \&quot;C:\Program Files (x86)\WinSCP\WinSCP.exe\&quot;«») {
if ((Get-Item \&quot;C:\Program Files (x86)\WinSCP\WinSCP.exe\&quot;«»).VersionInfo.FileVersion -eq \&quot;5.13.4.8731\&quot;«») {
# tous est OK
}
else {
# traitement re-install nouvelle version
}
}
else {
# traitement install
}

[/code:1]

une autre \&quot;peut être mauvaise\&quot; idée serai de supprimer les sources avant l'install

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

Plus d'informations
il y a 5 ans 5 mois #27696 par David
Salut 6ratgus,

Merci pour le temps que tu prends à me répondre !

il faut enlever les guillemets


Je l'ai fait et effectivement maintenant quand WinSCp est installé, le script se poursuit normalement !
Merci c'est parfait

une idée serai de tester directement le fichier exe dans le dossier d'installation comme si dessous


Alors je viens de tester l'installation de l’exécutable fourni par Chocolatey et l'installation se passe parfaitement.
Mais si je désinstalle WinSCP, sans supprimer les sources Chocolatey mon problème persiste : il ne l'installe pas et donc ça plante la suite du script.

Je te tiens informe si je trouve une façon différente de l'installer car j'imagine que récupérer la version ne m'aidera pas de ce cas de figure .... a moins que je n'ai pas compris ce que tu voulais dire

Merci encore
@ plus tard
Goro

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

Plus d'informations
il y a 5 ans 5 mois #27698 par Philippe
une idée

tu test si l'appli est installer
- si elle ne l'es pas, tu vérifie si il y a quelque chose dans le dossier, par exemple : [code:1]if (Test-Path \&quot;C:\Program Files (x86)\WinSCP\WinSCP.exe\&quot;«») {[/code:1] tu efface le dossier WinSCP et tu fais l'install

Je te tiens informe si je trouve une façon différente de l'installer car j'imagine que récupérer la version ne m'aidera pas de ce cas de figure ....

peut être que ton problème existe que sur une vielle version de winscp
sinon non ça aide pas sauf si tu doit faire une mise à jour

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

Plus d'informations
il y a 5 ans 5 mois #27699 par David
Alors j'ai simplifié les choses pour moi, mais pas pour le script j'imagine

J'ai utilisé ta solution de suppression du dossier Chocolatey

Et maintenant tout fonctionne visiblement

Voila le code, il ne doit pas être très joli mais ca fonctionne

Merci encore de ton aide

[code:1]$Recherche = \&quot;SCP\&quot;
$Application = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique

If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \&quot;WinSCP est déjà installé ... Poursuite de la synchronisation ...\&quot;
}
else{
Write-Host -ForegroundColor Red \&quot;WinSCP n'existe pas, téléchargement et installation en cours ...\&quot;
Remove-Item -Path C:\Chocolatey -Recurse
Install-Package -Name \&quot;WinSCP\&quot; -ProviderName chocolatey -Force
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \&quot;WinSCP est maintenant installé ... Poursuite de la synchronisation ...\&quot;
}
} [/code:1]

La seule chose est que après l'installation, le write host WinSCP est maintenant installé ne s'affiche pas<br><br>Message édité par: goro, à: 22/10/18 14:08

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

Plus d'informations
il y a 5 ans 5 mois #27700 par David
Voila j'ai corrigé avec un test-path

[code:1]$Recherche = \&quot;SCP\&quot;
$Application = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique

If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \&quot;WinSCP est déjà installé ... Poursuite de la synchronisation ...\&quot;
}
else{
Write-Host -ForegroundColor Red \&quot;WinSCP n'existe pas, téléchargement et installation en cours ...\&quot;
Remove-Item -Path C:\Chocolatey -Recurse
Install-Package -Name \&quot;WinSCP\&quot; -ProviderName chocolatey -Force
cls
If (Test-Path -Path \&quot;C:\Program Files (x86)\WinSCP\&quot;«»){
Write-Host -ForegroundColor Green \&quot;WinSCP est maintenant installé ... Poursuite de la synchronisation ...\&quot;
}
}[/code:1]

J'ai tout ce qu'il me faut
Merci de ton aide

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

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