Como você executaria um aplicativo em um compartilhamento de rede para poder atualizá-lo?

Como você executaria um aplicativo em um compartilhamento de rede para poder atualizá-lo?

Temos um aplicativo de desktop interno que implantamos em um compartilhamento de rede. Nesse diretório estão subdiretórios para cada versão, ou seja, z:\Apps\ApplicationX\1.0 z:\Apps\ApplicationX\2.0 z:\Apps\ApplicationX\2.1

Gostaria de colocar um atalho nas áreas de trabalho dos usuários que apontem para a versão mais recente do aplicativo. Minha solução atual é colocar a versão atual em um diretório chamado "z:\Apps\ApplicationX\Current" e colocar um atalho na área de trabalho para o exe.

O problema é que quando eles estão executando o aplicativo, não consigo atualizar o aplicativo porque o arquivo está bloqueado.

Tentei alterar o atalho para apontar para um arquivo em lote que copia o arquivo localmente e depois o executa a partir daí, mas estamos todos no Windows 7 e o UAC está causando problemas ao copiar o arquivo para a unidade C: onde eu esperaria. Ser instalado.

Suponho que poderia copiar o executável para a unidade inicial do usuário e executá-lo a partir daí, mas não gosto da ideia de ter um executável na unidade inicial do usuário. Isso também significa que existem várias cópias do aplicativo na rede, das quais não sou fã.

Também pensei que poderia ter um atalho para um atalho e apenas atualizaria o atalho, mas isso também não funciona.

Minha solução atual é ter um arquivo em lote que contenha o comando start apontando para a versão atual e um atalho para esse arquivo em lote.

Alguém mais tem soluções possíveis?

Responder1

Meu método preferido, duas aplicações. O aplicativo principal que você já possui. O segundo é um iniciador/atualizador. Faça um atalho para o inicializador, ele verifica uma configuração (algarismo criptografado, xml, texto simples, codificado diretamente no inicializador, qualquer que seja) para o caminho do executável para iniciar e, em seguida, inicia-o. Assim que o aplicativo principal for iniciado, o carregador será encerrado.

Sempre que você obtém uma nova versão, você atualiza o arquivo de configuração do inicializador e os lançamentos futuros do programa abrirão a nova versão.

É o processo do estilo "boot loader". Tenha um pequeno aplicativo de assistência que aponta para o aplicativo em tamanho real. Os clientes iniciam o pequeno aplicativo e ele os direciona para o aplicativo completo adequado.

Pontos de bônus se você fizer com que seu inicializador verifique impressões digitais ou assinaturas de hash nos aplicativos de tamanho normal para garantir que ninguém seja criativo e tente vincular a outro aplicativo a partir do inicializador.

Responder2

Parece um aplicativo legado. Sua melhor aposta será não complicar demais e apenas agendar um tempo de inatividade para atualizações.

Responder3

Concordo com DanBig que, em sua situação simples, a menos que você queira renová-lo muito (como sugere Ruscal, o que é uma boa ideia), basta agendar uma "interrupção" onde você desativa o (s) bloqueio (s) de arquivo e substitui o arquivo .exe ( talvez durante a noite ou em um fim de semana).

"Gostaria de colocar um atalho nas áreas de trabalho dos usuários que apontem para a versão mais recente do aplicativo" - OP

No que diz respeito a colocá-los na área de trabalho, por que não fazer com que seu atalho aponte para z:\Apps\ApplicationX\ e coloque o EXE atual lá. Em seguida, tenha subpastas para revisões/versões anteriores conforme necessário, como z:\Apps\ApplicationX\revisions. Dessa forma, o atalho do cliente nunca muda e, durante as atualizações, você simplesmente move o exe existente para uma pasta rev# e coloca o .exe novo/atualizado na pasta z:\Apps\ApplicationX\.

Responder4

Você pode usar um servidor Samba rodando em Linux. Quando precisar atualizar o aplicativo, basta renomear a pasta “atual” e criar uma nova com o nome “atual”. O compartilhamento deve ser somente leitura.

No Linux (Unix) é permitido renomear ou excluir um arquivo e os processos que possuem os arquivos abertos poderão usar a versão antiga até que o descritor do arquivo seja fechado.

informação relacionada