Pergunta

Atualmente, temos 4 instaladores para o nosso software cliente:

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

As únicas diferenças entre eles são que a instalação contém o Crystal Reports arquivos redistribuíveis, e atualização não. Teste e produção apenas especifica quais ambiente em que são executados em ea única diferença que existe uma linha no arquivo Client.exe.config.

mudo, eu sei, é por isso que eu substituí-los todos com um instalador após livrar-se do Crystal Reports. O novo instalador escreve o ambiente selecionado para setup.config, que é referenciado pelo atributo de arquivo ( veja aqui ).

O atributo "file" é novo para o arquivo de configuração com este novo instalador. O problema que eu estou correndo em é que se nós modificar o arquivo Client.exe.config em uma instalação antiga, em seguida, executar o novo instalador, o arquivo de configuração não é atualizado com o atributo "file".

Existe alguma maneira de forçá-lo a atualizar um arquivo? RemovePreviousVersions não é exatamente trabalhar, já que é um instalador diferente, a menos que eu estou mal-entendido alguma coisa. Minha idéia atual, que provavelmente trabalho, é adicionar o código no método OnBeforeInstall para renomear o antigo Client.exe.config para um arquivo de backup, por isso vai sempre escrever o novo. Parece que deve haver uma solução mais simples dentro do próprio instalador, no entanto. Alguma idéia?

Editar : Mudar o nome do arquivo de configuração antigo para Client.exe.config.old antes de chamar base.OnBeforeInstall () não funcionou. Ele renomeou o arquivo, mas nunca escreveu um novo.

Foi útil?

Solução

Windows Installer não irá atualizar um arquivo modificado .

Nonversioned Os arquivos são dados do usuário-Se a data modificada é depois que a data de criação do arquivo no computador, não instale o arquivo porque as personalizações do usuário seria excluído. Se o Modified e criar datas são as mesmas, instalar o arquivo. Se a data Criar é posterior à data de modificação, o arquivo é considerado inalterado, instalar o arquivo.

Você tem algumas opções:

  • incluir uma ação personalizada que modifica o arquivo no lugar. Isso pode ser um script ou código .NET .

  • fazer como você diz - mover o arquivo existente fora do caminho. O instalador não vai parar nele. Mas você precisa ter certeza de que isso acontece na ordem que você está imaginando. Você pode precisar Orca para descobrir a ordenação .

  • incluem uma opção personalizada para definir a data de criação para ser "hoje". Isso deve ser muito simples, com uma ação personalizada script, usando o Scripting.FileSystemObject . Então instalador do Windows irá substituí-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top