Melhor abordagem para implantar atualizações de arquivos DLL em clientes Win7

3

Estamos em um ambiente de domínio do Windows 7 / Server 2008 R2. Temos um aplicativo .NET com muitas bibliotecas internas para diferentes interfaces do usuário e outros recursos. Nós implantamos a partir de um compartilhamento onde um diretório é criado para cada "release" com o número da versão mais recente. Ocasionalmente, há alguns departamentos que precisam de algo ajustado no aplicativo para suas necessidades específicas e precisam urgentemente da alteração antes do próximo lançamento. Podemos fazer isso fornecendo a eles alguns arquivos DLL personalizados com as alterações solicitadas. Eu estou tentando conceber a maneira mais confiável e eficiente de ter nossas máquinas cliente automaticamente verificar e copiar esses arquivos "personalizados". Eu quero fazer isso de uma maneira que seja mais eficiente, confiável, gerenciada centralmente e com o mínimo de sobrecarga nos clientes. De preferência, quando temos arquivos personalizados para implantar, gostaríamos que todos os clientes os copiassem dentro de 24 horas depois de colocá-los no compartilhamento. Eles iriam em uma subpasta do diretório de lançamento da rede atual, chamada "Personalizada" ou algo semelhante. Nós não temos o SCCM neste momento, então estou analisando as seguintes opções:

  1. Script de logon do arquivo em lote para usuários que verificarão o diretório da rede e copiarão (substituirão) arquivos locais usando robocopy ou xcopy. Isso exigiria que o usuário fizesse logoff e, assim, poderia haver um atraso na obtenção de arquivos personalizados. Os usuários teriam uma maneira fácil e confiável de acioná-lo, de modo que seria um plus.

  2. Tarefa agendada configurada por meio do item Preferência de Diretiva de Grupo, para verificar o diretório de rede talvez algumas vezes por dia em busca de arquivos personalizados. Isso pode obter o arquivo mais rapidamente do que um script de logon do usuário, mas não tenho experiência com itens de tarefa agendados do GPP. É confiável e simples de configurar e manter? Novamente, essa tarefa executaria um script em lote para verificar os arquivos na rede e iniciar a robocopy com a opção / xo. Se colocarmos quaisquer arquivos no diretório personalizado, vamos assumir que eles são necessários, independentemente das versões. Simplesmente verificar as datas do arquivo deve funcionar, para que eles não sejam copiados repetidamente assim que estiverem no lugar.

  3. Uma tarefa agendada igual à anterior, mas acionada com base em uma entrada do log de eventos. Isso é confiável? Eu nunca tentei. Pode ser vantajoso encontrar um acionador de evento que indique que o aplicativo acabou de ser iniciado (ou fechado) e, em seguida, copiar os arquivos imediatamente, para que haja menos chances de interrupção do trabalho do usuário.

  4. Eu sei que há também um item de preferência de política de grupo para gerenciar / copiar arquivos. Eu acredito que seria muito trabalho para gerenciar neste caso, porque poderia haver o potencial para vários arquivos de uma vez, em várias versões do aplicativo.

  5. Eu também considerei um script Powershell, que poderia fazer coisas interessantes, como comparar as versões do arquivo DLL, etc, mas isso provavelmente exigirá mais sobrecarga de recursos (seja mais lento) e está realmente fazendo mais do que o necessário. / p>

Alguma outra ideia sobre o que pode funcionar melhor? A resposta mais simples (script de logon do usuário) é realmente a melhor aqui?

    
por Dmart 15.05.2015 / 21:42

1 resposta

0

Acabei indo com a opção # 1, um script de logon do usuário, e isso vem funcionando de forma confiável há algum tempo. Eu colocaria o script inteiro aqui, mas ele está cheio de detalhes de aplicativos internos que o tornariam inútil para uso geral. O detalhe mais interessante é que estamos usando o wmic para obter o número da versão interna do aplicativo instalado localmente e usá-lo para nos referirmos ao diretório de versão correto em nosso servidor de implementação. Esse código define uma variável chamada Version para corresponder ao valor retornado do wmic.exe

set "myfile=c:\progra~2\%AppFolder%\AppName.exe"

for /f "tokens=*" %%f in ('wmic datafile where "name='%myfile%'" get version /value ^| findstr "="') do set "%%f"
    
por 07.10.2015 / 20:59