Setup.exe chamado de um arquivo em lotes trava com erro 0x0000006

1

Vamos instalar novos softwares em praticamente todos os nossos computadores e estou tentando configurar um GPO para isso. Estamos executando um controlador de domínio do Windows Server 2008 R2 e todas as nossas máquinas são o Windows 7.

O GPO chama o script a seguir, que fica em um compartilhamento de rede em nosso servidor de arquivos. O próprio script chama um executável que fica em outro compartilhamento de rede em outro servidor. O executável irá imediatamente falhar com um erro 0x0000006 . O log de eventos apenas diz isto: Windows cannot access the file for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program Setup.exe because of this error.

Aqui está o script (que está armazenado em \WIN2K8R2-F-01\Remote Applications ):

@ECHO OFF

IF DEFINED ProgramFiles(x86) (
    ECHO DEBUG: 64-bit platform

    SET _path="C:\Program Files (x86)\Canam"
) ELSE (
    ECHO DEBUG: 32-bit platform

    SET _path="C:\Program Files\Canam"
)

IF NOT EXIST %_path% (
    ECHO DEBUG: Folder does not exist

    PUSHD \WIN2K8R2-PSA-01\PSA Data\Client

    START "" "Setup.exe" "/q"

    POPD
) ELSE (
    ECHO DEBUG: Folder exists
)

Executar o script manualmente como administrador também resulta no mesmo erro. Configurar um atalho com o mesmo destino e parâmetros funciona perfeitamente. Chamar manualmente o executável também funciona.

Não tenho certeza se é importante, mas o instalador é baseado em dotNETInstaller. Eu não sei qual versão embora.

Eu gostaria de receber sugestões para corrigir isso. Obrigado antecipadamente!

UPDATE

Eu duvido muito que isso seja importante, mas o compartilhamento de rede em que o script está hospedado é uma unidade compartilhada, enquanto a rede compartilha as referências de script para que o executável seja uma pasta compartilhada.

Além disso, os dois compartilhamentos têm Domain Computers listado com acesso total para as guias de compartilhamento e segurança. E PUSHD funciona sem envolver o caminho entre aspas.

UPDATE 2

Se eu abrir manualmente o CMD na máquina cliente e inserir PUSHD "\WIN2K8R2-PSA-01\PSA Data\Client" , recebo o diretório montado como uma unidade corretamente. Se eu inserir START "" "Setup.exe" "/q" , o instalador entra em ação exatamente como deveria e, na verdade, instala o aplicativo.

UPDATE 3

Enquanto fazia algumas depurações através das instruções ECHO , comecei a enviar arquivos TXT para a unidade C:\ na máquina cliente. Depois, chamei PUSHD I ECHO ed %CD% para ver qual era o diretório atual. Acabou saindo como C:\Windows não {?}:\Client como deveria se montasse com sucesso o diretório remoto.

Eu acho que tem algo a ver com as mensagens que recebo no topo da tela que os caminhos UNC não são suportados, blah blah blah, mesmo que o resto do script realmente seja executado.

Ainda procurando sugestões para fazer isso funcionar.

    
por Gup3rSuR4c 26.10.2012 / 03:13

4 respostas

2

Sugestões que podem ajudá-lo.

1)

Você pode usar o psexec do sysinternal para abrir uma janela cmd como SYSTEM para depuração "psexec \ 127.0.0.1 / s cmd" De lá, você pode percorrer o script "linha por linha" para ver onde ele falha

2)

Você pode modificar o script para que ele seja executado no diretório atual com o prefixo "% ~ dp0"

Já tentou ignorar o comando START?

PUSHD \WIN2K8R2-PSA-01\PSA Data\Client

%~dp0Setup.exe" "/q"

    
por 26.10.2012 / 20:28
2

Coloque aspas no caminho de compartilhamento. Você tem um espaço no nome do compartilhamento e estou assumindo que isso está causando o problema.

    
por 26.10.2012 / 03:43
2

Parece um problema de permissão. Se você estiver fazendo isso em um script de inicialização, ele será executado como SYSTEM . Você precisará fornecer Domain Computers acesso de leitura para onde os arquivos estão armazenados.

    
por 26.10.2012 / 03:16
0

O problema é que você sai antes que a configuração seja concluída. Isso ocorre porque o cmd inicia a configuração e imediatamente continua com o comando popd.

Use start "" Setup.exe /wait /q

você também pode usar o caminho UNC. Talvez você precise de citações.

start "Setup title" "\server\share\folder\setup.exe" /q
    
por 11.03.2013 / 16:10