Alterar meu componente GUID no wix?

Quando devo alterar ou não alterar meu componente GUID no WIX? As informações do Microsoft SDK são confusas .

Glytzhkof edit : Para esclarecer, a questão trata de quando um componente GUID deve ser alterado para um componente MSI. Um componente pode mudar com aspectos como: caminho de destino alterado, adição ou remoção de arquivos para / do mesmo componente, adição de dados de registro, etc … Isso causa problemas com relação à chamada referência de componente, ou seja, a melhor prática para criando componentes no MSI.

O conceito geral de MSI é que há um mapeamento 1: 1 entre um GUID de componente (identificador exclusivo) e um caminho absoluto (local de instalação / caminho de chave). O caminho completo, incluindo o nome do arquivo, se houver. Veja a atualização abaixo para um novo recurso Wix para lidar automaticamente com isso.

Eu uso algumas regras simples para lidar com as regras de componentes excessivamente complexas e sem sentido:

  • Sempre use um componente separado por arquivo (mesmo para não-binários). Isso evita todos os tipos de problemas. Há poucas exceções:
    • Todos os assemblies .NET de arquivos múltiplos devem estar em um componente, pois devem sempre ser instalados / desinstalados como uma única unidade.
    • Alguns outros tipos de arquivos gerais vêm em “pares correspondentes” – eles pertencem juntos. Geralmente, esses são arquivos de conteúdo e índice. Por exemplo, considere os arquivos de ajuda da Microsoft:
      • Arquivos .HLP e .CNT pertencem juntos.
      • Os arquivos .CHM e .CHI pertencem juntos.
    • Provavelmente existem vários desses tipos de arquivos que estão juntos e devem, portanto, ser colocados no mesmo componente para que eles instalem / desinstalem juntos – suspeito que determinados arquivos de certificado sejam candidatos. É difícil chegar a uma lista definitiva. Simplesmente pergunte a si mesmo “esses arquivos sempre pertencem juntos” – então eles sempre aparecem em pares sempre que houver uma nova versão? Se sim, instale-os pelo mesmo componente. Defina o arquivo com versão, se houver, como arquivo-chave.
  • Lembre-se de que, depois de alocar um GUID para um componente, ele é definido como uma pedra para o caminho da chave desse componente (caminho absoluto). Se você mover o arquivo para um novo local ou renomear o arquivo, atribua a ele um novo GUID de componente (já que o caminho absoluto é diferente, é efetivamente uma nova identidade).
  • No resumo, os GUIDs do componente estão vinculados a um local de instalação absoluto e não a um arquivo específico. O GUID não segue o arquivo ao redor se ele se move . A referência GUID conta um local absoluto, não o arquivo propriamente dito.
  • Não adicione ou remova arquivos de um componente existente. Todos os tipos de problemas de upgrade e correção resultam. É por isso que eu gosto de um arquivo por componente como regra geral.
  • Há muito mais no referenciamento de componentes, mas deixarei isso para uma “visão geral”.

Algumas amostras:

  • Você renomeie o arquivo C: \ Arquivos de Programas \ MyCompany \ MyApp \ MyFile.exe para C: \ Arquivos de Programas \ MyCompany \ MyApp \ MyFile_NEW.exe . O que isso significa para a criação de componentes? Esse é um novo caminho de instalação absoluto, portanto, você gera um novo GUID para o componente de hospedagem OU adiciona um novo componente e exclui o antigo (que tem o mesmo efeito).
  • Seu MSI atualizado fornece uma nova versão do MyFile.exe. O local é o mesmo de antes, isso significa que o componente GUID não deve ser alterado. É o mesmo arquivo (identidade), apenas em uma versão diferente.

UPDATE : WIX agora tem um novo recurso de GUID do componente de geração automática que calcula um GUID desde que o caminho de destino permaneça o mesmo. Eu não tentei isso para ser honesto, mas muitos parecem usá-lo sem problemas, e Rob Mensching (autor Wix) afirma que é seguro para uso normal . Como conceito, eu recomendo isso, uma vez que apresenta algumas auto-magic e protege você de alguma complexidade.

Observe também que você pode deixar de fora muitos atributos de origem do seu arquivo Wix xml e confiar nos padrões do Wix, em vez de valores rígidos de codificação.

Você nunca altera o componente / @ Guid. Você também nunca altera o conjunto de resources (File, RegistryKey, Shortcut, TypeLib, etc.) no Component. Quando você tem um novo recurso, você deve criar um novo componente com um novo @ guid. A parte realmente complicada é que o novo Componente não pode ter sobreposição (acho que o caminho do arquivo, ou o caminho da chave do registro, ou typelib, etc.) com o componente antigo.

Estas são basicamente as regras do componente, confira: http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101 .

Dê uma olhada no Tutorial do WiX, The Files Inside , para uma explicação detalhada sobre as regras dos componentes. Basicamente, ele diz que você nunca altera o GUID de um componente, pois isso significa orfanizar o componente antigo e criar um novo componente.

    Intereting Posts