Por que o Windows lado a lado (winsxs) instalar política para atualização automática quando há problemas conhecidos entre as versões?

StackOverflow https://stackoverflow.com/questions/397196

  •  29-08-2019
  •  | 
  •  

Pergunta

Nós temos um aplicativo compilado usando MSVC 2K5, SP1 (versão 762 msvcrt80)

Tudo está bem, se a direita até instalações alguém na mesma máquina .Net3.0SP1, e junto com ele msvcrt80 versão 1433 está instalado e uma política para automaticamente atualizar.

Agora temos falhas aleatórias em todo o lugar e clientes insatisfeitos.

Eu entendo que podemos ajustar os nossos arquivos de manifesto para forçar o uso de uma versão específica, mas eu só encontrei a maneira realmente feio de copiar detalhe que é gerado automaticamente e modificá-lo com a mão. Isto é especialmente desagradável com um grande número de aplicativos para correção

Podemos vez se livrar da política estúpida 'upgrade' no diretório WinSxS? Existe uma opção / flag para compilar para uma versão específica somente e ainda gerar automaticamente os manifestos?

Foi útil?

Solução

Encontre o manifesto gerado para a sua versão específica do CRT. Em seguida, adicione um pragma para o arquivo principal do seu aplicativo:

#pragma comment(linker,"/manifestdependency:\"type='win32' "            \
        "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "              \
        "version='" _CRT_ASSEMBLY_VERSION "' "                          \
        "processorArchitecture='x86' "                                  \
        "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top