Por que o Windows 7 instala aplicativos de 64 bits na pasta Arquivos de Programas (x86)? Posso mudar o comportamento?

12

Estou usando a versão de 64 bits do Windows 7 desde o CTP e tenho tido alguns problemas com aplicativos que são instalados na pasta C:\Program Files (x86) . Qual é o propósito de ter dois diretórios separados de Arquivos de Programas?

Cada programa que eu instalei entrou na pasta C:\Program Files (x86) . Não parece importar se o aplicativo é de 32 ou 64 bits. Por que os aplicativos de 64 bits não são colocados em C:\Program Files ?

Existe uma maneira de alterar o padrão para C:\Program Files ? Isso seria uma bagunça se eu colocasse tudo em C:\Program Files ?

Se realmente houver algum benefício em ter uma pasta separada para aplicativos de 64 bits, parece que o padrão mais sensato seria usar C:\Program Files para aplicativos x86 e criar uma nova pasta C:\Program Files (x64) para os novos 64 bits. bit apps. Isso ajudaria a manter a compatibilidade com versões anteriores. Eu trabalho como desenvolvedor de software e alguns dos meus projetos contêm referências de caminho para bibliotecas em C:\Program Files . Agora essas referências estão quebradas na máquina com Windows 7 que as colocou em C:\Program Files (x86) . Eu até tentei mudar o local de destino no instalador para ser C:\Program Files , mas isso foi ignorado e o aplicativo entrou em C:\Program Files (x86) de qualquer maneira.

Isso é muito frustrante porque eu preciso compartilhar o código-fonte entre máquinas de 32 e 64 bits e não quero ter que mexer com algum arquivo de configuração que defina o caminho para essas bibliotecas de maneira diferente em máquinas diferentes.

Edite as variáveis de ambiente: (usando apenas valores padrão ingleses de variáveis para simplificar). Em uma máquina de 64 bits %ProgramFiles% será C:\Program Files enquanto a nova variável %ProgramFiles(x86)% será seja C:\Program Files (x86) . Portanto, se você tiver um programa de 32 bits que precise encontrar o caminho da pasta em que ele seria instalado, será necessário verificar se ele estava sendo executado em uma versão de 32 bits ou de 64 bits do Windows para para saber qual variável de ambiente usar. Quaisquer aplicativos de 32 bits que foram gravados sem essa consideração precisariam ser atualizados para funcionar corretamente em uma máquina de 64 bits. Então, mesmo usando variáveis de ambiente, a compatibilidade com versões anteriores é quebrada.

Além disso, %ProgramFiles(x86)% não existe nas versões de 32 bits do Windows. Em caso afirmativo, os aplicativos de 32 bits poderiam sempre usar essa variável de ambiente e não precisariam de lógica condicional com base no sistema operacional em que estão sendo executados.

    
por CoderDennis 30.12.2009 / 22:22

3 respostas

7

A razão para isso é simplesmente muitos instaladores mais antigos ou não entendem a nova estrutura de arquivos e plonk tudo no diretório de arquivos de programas padrão ou você está olhando para um programa inteligente que tem alguns componentes de 32 bits que estão sendo copiados lá .

Sua melhor aposta é baixar um novo programa - como x64 Winrar e ver onde ele é instalado para apenas descartar um problema com sua máquina.

Quanto a bagunçar tudo - pode, mas realmente depende do programa, não há uma resposta única para todos ... alguns programas menores e compactos com apenas alguns arquivos não devem ter nenhum problema, onde, se você falar sobre o Office, Adobe ou qualquer outro "suite" ou programa grande, ele provavelmente irá falhar, já que eles têm muitos componentes compartilhados que são arquiteturas cruzadas.

    
por 30.12.2009 / 22:37
4

Se você usar algo diferente de %ProgramFiles% (ou CSIDL_PROGRAM_FILES , ou sob .NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) ), você terá problemas, pois as instalações personalizadas podem ter programas instalados em outros volumes (D: por exemplo) e instalações internacionais geralmente têm outras pastas por padrão.

  • Windows em espanhol: C:\Archivos de Programa ,
  • Windows em francês: C:\Programmes ,
  • Windows em alemão: C:\Programme ,
  • Windows sueco: C:\Program

etc.

    
por 30.12.2009 / 23:55
3

Por favor, note que em versões de 64 bits do Windows 7 (isso também pode se aplicar a outras versões mais recentes do sistema operacional, mas eu só posso confirmar isso para o Win 7 de 64 bits) há uma diferença entre a localização aparente do seu % ProgramFiles% no explorer e no DOS.

No windows 7, a localização real da pasta física de% ProgramFiles% (e a variável associada% ProgramFiles (x86)% environemnt) é fixa de acordo com a versão em inglês ; ou seja, "C: \ Arquivos de Programas" e "C: \ Arquivos de Programas (x86)" respectivamente, mas é mostrado no explorador localizado conforme apropriado.

Para fornecer um exemplo específico; em uma instalação sueca do Windows 7 de 64 bits, se você abrir o Explorer e procurar na unidade do sistema (normalmente C :) você verá " Programa " e " Programa (x86) "pastas. Digitar% ProgramFiles% na barra de endereço move você para "C: \ Program".

No entanto, se você abrir uma caixa do DOS e digitar SET, verá que o valor real de% ProgramFiles% é "C: \ Program Files", e não o explorador da pasta "C: \ Program". Mais explorando com CD e DIR você pode vê-lo fisicamente é "C: \ Arquivos de Programas"

A moral é que se você usar o ambiente variáveis ou programa através da API tudo ainda funcionará, mas fique atento a essa mudança sutil ao explorar o sistema de arquivos!

    
por 22.03.2012 / 12:37