Como você executaria um aplicativo de um compartilhamento de rede para poder atualizar o aplicativo?

2

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

Eu gostaria de colocar um atalho nos desktops dos usuários que apontam 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 em sua área de trabalho para o exe lá.

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

Eu tentei alterar o atalho para apontar para um arquivo em lote que copia o arquivo localmente e depois o executa a partir dele, mas estamos todos no Windows 7 e o UAC está causando problemas ao copiar o arquivo para a unidade C: esperaria que fosse instalado.

Suponho que eu possa copiar o executável para a unidade inicial dos usuários e executá-lo de lá, mas não gosto da idéia de ter um executável na unidade inicial dos usuários. Isso também significa que há várias cópias do aplicativo na rede, das quais eu não sou fã.

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

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

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

    
por Benjamin Peikes 12.09.2013 / 17:16

5 respostas

0

Meu método preferido, dois aplicativos. O aplicativo principal que você já tem. O segundo é um lançador / atualizador. Faça um atalho para o lançador, ele verifica uma configuração configuração (criptografada ininteligível, xml, texto simples, codificado diretamente no lançador, qualquer que seja) para o caminho do executável para lançar, em seguida, lança-lo. Quando o aplicativo principal for iniciado, o carregador será encerrado.

Sempre que você obtiver uma nova versão, você atualizará o arquivo de configuração do lançador e lançamentos de futuros programas abrirão a nova versão.

É o processo de estilo "boot loader". Tenha um pequeno aplicativo de assistência que aponte para o aplicativo de tamanho completo. Os clientes iniciam o minúsculo aplicativo e os direciona para o aplicativo completo adequado.

Pontos de bônus se o seu lançador verificar impressões digitais ou assinaturas de hash nos aplicativos de tamanho completo para garantir que ninguém seja criativo e tente vincular a outro aplicativo a partir do iniciador.

    
por 12.09.2013 / 17:28
2

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

    
por 12.09.2013 / 17:24
1
Eu concordo com o DanBig que em sua situação simples, a menos que você queira reformá-lo muito (como Ruscal sugere, o que é uma boa idéia), simplesmente programe uma "interrupção" onde você chuta o (s) bloqueio (s) de arquivo e substitua o. arquivo exe (talvez durante a noite ou em um fim de semana).

"I would like to put a shortcut on the user desktops which point to the newest version of the application" - OP

No que diz respeito a colocá-los na área de trabalho, por que não ter seu atalho para z: \ Apps \ ApplicationX \ e colocar o EXE atual lá. Em seguida, tenha subpastas para revisões / versões anteriores, conforme necessário, como z: \ Apps \ ApplicationX \ revisions. Desta 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 novo / atualizado .exe na pasta z: \ Apps \ ApplicationX \.

    
por 12.09.2013 / 17:31
1

Concordo com DanBig e TheCleaner. Nós temos um aplicativo interno como esse. O atalho vai para \server\share\application\application.exe e, quando precisamos fazer atualizações, eu espero até que os usuários vão para casa e use o Gerenciador do Servidor ou o Gerenciador do Computador para fechar os arquivos abertos, para que novos possam ser copiados.

Não é bonito, mas qualquer outra coisa é mais feia, IMHO.

    
por 12.09.2013 / 20:34
0

Você pode usar um servidor Samba em execução em um Linux. Quando você 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), a renomeação ou exclusão de um arquivo é permitida e os processos que possuem os arquivos abertos poderão usar a versão antiga até que o descritor de arquivo seja fechado.

    
por 12.09.2013 / 17:29