Windows: Execute apenas o script de inicialização de instalação se o diretório não existir

1

Eu quero instalar alguns programas através de um script de inicialização, mas assim que ele for executado pela primeira vez, ele apenas reinstalará o tempo perdido e a sobrescrita. É um servidor 2008 R2.

Em algum lugar eu encontrei isso

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
)

Mas isso não funciona. Como eu poderia conseguir isso?

    
por e__ 30.01.2012 / 20:21

5 respostas

10

Você precisa de IF EXIST em vez de apenas IF para a programação em lote.

por exemplo,

IF NOT EXIST "C:\Program Files\Microsoft Security Client" (
  :: Install product
)
    
por 30.01.2012 / 22:25
4

Como você está executando o AD, por que não tenta distribuir esses produtos via MSI e GPO?

    
por 30.01.2012 / 20:53
2

Faça com que seu script solte um sinalizador, crie um arquivo de texto ou algo assim, quando a instalação concluir que o script será procurado nas execuções subsequentes. Se encontrar o sinalizador, ele finalizará o processo e não será reinstalado. Se o sinalizador não existir, conclui a instalação.

    
por 30.01.2012 / 20:29
0

Para testar se existe um diretório para testar a presença do arquivo "nul". Isso funcionará nos scripts BAT e CMD em QUALQUER versão do Windows.

Apenas o teste da própria pasta geralmente falha, especialmente se a pasta estiver em uma unidade de rede ou acessada pelo caminho UNC.

Assim:

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

Você também pode usar o truque para ver se uma letra de unidade está em uso ou não. Por exemplo, se existir z: \ nul retornará true se z: estiver mapeado em uma unidade de rede ou se for uma unidade de DVD, mesmo que não haja nenhum disco na unidade.

    
por 30.01.2012 / 23:17
0

Em 2015, confira alguns 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"

}

    
por 24.02.2015 / 15:48