Se o programa não fornecer essas informações, Adicionar / Remover Programas é forçado a adivinhar.
Se o programa não fornecer essas informações, Adicionar / Remover Programas é forçado a adivinhar.
O problema é que não há uma maneira "óbvia" de mapear uma entrada na lista Adicionar ou remover programas para um programa real. Cada entrada na lista, para quem se importa com essas coisas, vem da HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
chave do registro.
As únicas propriedades obrigatórias para um programa desinstalável são the DisplayName
e the UninstallPath
. Tudo o resto é opcional.
Suponhamos que Adicionar / Remover Programas receba um registro de programa como este:
Para obter os valores "Última utilização" e "Frequência", o programa Adicionar / remover programas precisa saber o nome do EXE para que ele possa perguntar no menu Iniciar "Ei, com que frequência o usuário executou esse programa e quando foi o última vez que aconteceu? "
Observe que não há pistas no registro acima sobre a identidade desse arquivo EXE.
Então, Adicionar / Remover Programas começa a adivinhar. Ele percorre todos os programas no menu Iniciar e compara os nomes deles com o nome de exibição do item desinstalável. Ele procura itens do menu Iniciar que compartilham pelo menos duas palavras com as palavras no DisplayName.
Por exemplo, se houvesse um item do menu Iniciar chamado "Programa do Windows bastante decente", isso contaria como uma correspondência de duas palavras ("Windows" e "Programa").
Ele pega o que tem mais correspondências e decide: "Ok, acho que é isso." Suponha, para fins ilustrativos, que a melhor correspondência seja realmente "Pretty Decent Windows Program.lnk", que é um atalho para "C: \ Arquivos de Programas \ LitWare \ Decent Program \ Decent.exe". Adicionar / Remover Programas decidirá que "Awesome Program for Windows" deve receber o ícone "Pretty Decent Windows Program.lnk", que a frequência de uso e as informações mais usadas recentemente em "C: \ Arquivos de Programas \ LitWare \ Decent Program \ Decent.exe "será exibido em" Awesome Program for Windows ".
Mas espere, tem mais. Há também o tamanho do programa. Adicionar ou remover programas procura no diretório "Arquivos de programas" os diretórios cujos nomes compartilham pelo menos duas palavras em comum com o DisplayName. A melhor correspondência é assumida como o diretório em que os arquivos do programa estão instalados. Os tamanhos são adicionados e relatados como o tamanho do "Awesome Program for Windows".
Um programa pode adicionar algumas propriedades ao seu registro para evitar muitas dessas suposições. Ele pode definir uma propriedade EstimatedSize para evitar que Adicionar / Remover Programas adivinhe o tamanho do programa. Também pode definir uma propriedade DisplayIcon para especificar qual ícone mostrar para o programa na lista.
Mas se um programa omitir todas essas dicas, o palpite de que Adicionar / Remover Programas acaba criando pode ser ridiculamente amplo, devido a coincidências coincidentes de palavras. Na minha experiência, o espanhol sofre particularmente com esse algoritmo, devido ao uso intenso de preposições e artigos por esse idioma (que resulta em muitas correspondências falsas).
Sim, tudo isso é manco, mas quando você é forçado a operar com informações inadequadas, manco é o melhor que você pode fazer.