A pesquisa de Conjuntos de ferramentas Wix não está a gravar uma chave de Registo

tenho uma aplicação que está a gravar várias chaves de registo no install para garantir que certas escolhas que um utilizador faz São persistidas na aplicação. A maioria dessas chaves funcionam corretamente, mas alguns não gravam uma entrada. Estou a fazer alguma coisa errada? ou há um limite na pesquisa de Registos WiX? Verifiquei a documentação e não encontro nenhum limite. Eu incluí alguns exemplos abaixo:

o seguinte funciona correctamente:

  <Property Id="SERVER_NAME">
     <RegistrySearch Id='rsSERVER_NAME' Root='HKLM' Key='SOFTWARE\CompanyName\ApplicationName' Name='ServerName' Type='raw' />
  </Property>

o seguinte não funciona correctamente:

  <Property Id="SERVER_NAME">
     <RegistrySearch Id='rsSERVER_NAME' Root='HKLM' Key='SOFTWARE\CompanyName\ApplicationName\ApplicationDetails\Servers' Name='ServerName' Type='raw' />
  </Property>
Há alguma razão para o segundo bloco de códigos não funcionar?

Author: PhilDW, 2018-01-23

2 answers

Se quiser persistir os valores de propriedade das escolhas do utilizador, poderá ser mais fácil deixar o WiX fazê-lo com o padrão" recordar a propriedade".

Não está claro como é que está a gravar estes valores e a recuperá-los, porque não há nenhuma indicação se os está a gravar num local de 32 bits ou 64 bits, ou se está a usar o botão-arch para definir o valor por omissão, por isso pode ser que esteja a gravar ou a restaurá-los de diferentes locais de bitness (ver configuração do Registriysearch win64). Sem isto contexto não está claro se essa pesquisa vai funcionar ou não. It appears to be a 32-bit search in the absence of Win64=yes, but the-arch switch changes the default.

 0
Author: PhilDW, 2018-01-23 18:54:49

TEST OK : fiz um teste disto e ambos os valores foram recuperados da secção de 32 bits do registo ({[[0]}) sem quaisquer problemas.


Aqui está a documentação de pesquisa de Registos WiX. E Abaixo estão os caminhos de registro mencionados pelo Phil para aplicações de 64-bit e 32-bit-seu Código WiX especifica 32-bit, então você lê a partir da seção WOW6432Node:

  • SOFTWARE HKLM\(para aplicações de 64 bits)
  • HKLM \ SOFTWARE\WOW6432Node (para 32 bits) aplicações-acredites ou não)
Pergunto-me se está apenas a misturar os caminhos no registo. Aqui é onde eu estou lendo - é em HKLM, é claro (eu cortei a imagem um pouco para fazê-la caber na página):

Reading from HKLM 32-bit section


UPDATE : já testei esta leitura tanto das secções de 32 bits como de 64 bits do registo. Até onde posso ver, funciona como esperado? Deve haver um erro na localização do seu registo algures?

Uso um VBScript de uma linha para mostrar o valor da propriedade após a pesquisa de Registos ter corrido e obtido as propriedades. Posso actualizar esta resposta para adicionar este código, se quiser.

Não está claro o que quer dizer quando diz que uma aplicação está a gravar várias configurações de registo durante a instalação. É esta uma acção personalizada que está a executar e que escreve Estas chaves de registo, e depois a sua configuração lê-as de volta?

Não é claro como estes valores-que você ler de volta do registro usando RegistrySearch - são realmente escritos no registro? Talvez eles são de uma versão anterior de sua aplicação ou de outra aplicação e você quer "copiá-los"? Em caso afirmativo, pode verificar se são configurações de HKCU ou HKLM? Para as configurações de HKCU eu preferiria fazer a cópia na própria aplicação por razões de confiabilidade.

 0
Author: Stein Åsmul, 2018-01-26 16:30:04