1 votes

Fenêtres : N'exécuter que le script script de démarrage de l'installation si le répertoire n'existe pas

Je veux installer certains programmes via un script de démarrage, mais une fois qu'il s'est exécuté pour la première fois, il se réinstalle, ce qui fait perdre du temps et écrase. Il s'agit d'un serveur 2008 R2.

J'ai trouvé ceci quelque part

IF NOT "C:\Program Files\Microsoft Security Client"=="" 
(
    echo "Already Installed"
) 
else 
(
    "\\192.168.1.104\Programs\Microsoft Security Essentials\Microsoft Security Essentials.exe" /s /runwgacheck
)

IF NOT "C:\Program Files (x86)\Adobe\Reader 10.0"=="" 
(
    echo "Already Installed"
) 
else 
(
    "\\192.168.1.104\Programs\Adobe Reader\AdbeRdr1012_en_US.exe" /sAll /rs /msi EULA_ACCEPT=YES
)

Mais cela ne fonctionne pas. Comment puis-je le faire fonctionner ?

10voto

danwms Points 1

Vous avez besoin IF EXIST au lieu de IF pour la programmation par lots.

par exemple

IF NOT EXIST "C:\Program Files\Microsoft Security Client" (
  :: Install product
)

4voto

mfinni Points 35332

Puisque vous utilisez AD, pourquoi ne pas essayer de distribuer ces produits via MSI et GPO ?

2voto

Mitch Points 1127

Demandez à votre script d'ajouter un drapeau, de créer un fichier texte ou autre, lorsque l'installation est terminée, que votre script recherchera lors des exécutions suivantes. S'il trouve le drapeau, il termine le processus et ne réinstalle pas. Si l'indicateur n'existe pas, il termine l'installation.

0voto

Tonny Points 6232

Pour tester l'existence d'un répertoire, vérifiez la présence du fichier "nul". Cela fonctionne dans les scripts BAT et CMD scripts sur n'importe quelle version de Windows.

Le simple fait de tester le dossier lui-même échoue souvent, surtout si le dossier se trouve sur un lecteur réseau ou est accessible par un chemin UNC.

Comme ceci :

if exists c:\somedir\nul (
  echo folder somedir exists in c:\
)

Vous pouvez également utiliser cette astuce pour savoir si une lettre de lecteur est utilisée ou non. Par exemple, si existe z : \nul renvoie un message vrai si z : est mappé sur un lecteur réseau ou s'il s'agit d'un lecteur de DVD, même s'il n'y a pas de disque dans le lecteur.

0voto

Sam Drucker Points 1

Nous sommes en 2015, il est temps d'utiliser PowerShell.

if ( !(Test-Path -Path "$Env:ProgramFiles \Microsoft Security Client" )) {

Write-Host "Not Installed, Installing..."
iex "\\192.168.1.104\Programs\Microsoft Security Essentials\Microsoft Security Essentials.exe /s /runwgacheck"

}

if ( !(Test-Path -Path "${Env:ProgramFiles(x86)}") \Adobe\Reader 10.0" )) {

Write-Host "Not Installed, Installing..."
iex "\\192.168.1.104\Programs\Adobe Reader\AdbeRdr1012_en_US.exe /sAll /rs /msi EULA_ACCEPT=YES"

}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X