Usar um UpgradeCode

O UpgradeCode é usado sobretudo para dar suporte a atualizações principais, embora patches de atualização pequenos e secundários possam usar o UpgradeCode para validação do produto. Durante as atualizações principais, as ações FindRelatedProducts, MigrateFeatureStates e RemoveExistingProducts detectam, migram e removem versões anteriores do produto. A ação FindRelatedProducts procura produtos usando critérios com base em UpgradeCode, ProductLanguage e ProductVersion. Esses critérios são especificados na tabela Atualizar.

Considerando os critérios usados pela ação FindRelatedProducts, o UpgradeCode pode ser o mesmo para idiomas e versões diferentes de um único produto. Isso ocorre porque a tabela Upgrade permite a diferenciação entre produtos de acordo com a versão e o idioma.

Em versões diferentes do mesmo produto, pode ser que você nunca precise alterar o UpgradeCode. Cada produto autônomo deve ter o próprio UpgradeCode. Um pacote de produtos também deve ter o próprio UpgradeCode. Isso permitirá que o pacote atualize versões anteriores do pacote ou produtos autônomos usando várias linhas na tabela Upgrade.

Os dois cenários a seguir ilustram o uso de UpgradeCode.

  • O Produto A e o Produto B foram enviados com o mesmo ProductLanguage, ProductVersion e UpgradeCode. O Produto A e o Produto B têm ProductCodes diferentes. Como os produtos receberam o mesmo UpgradeCode, a tabela Upgrade não pode ser criada para diferenciar a versão mais antiga do Produto A da versão mais antiga do Produto B. Nesse caso, não será possível obter uma instalação de atualização do Produto A que ignore o Produto B. Por serem produtos diferentes, cada um deles deverá receber um UpgradeCode diferente.
  • As versões em inglês e francês do Produto A foram enviadas com o mesmo ProductVersion e UpgradeCode. As versões em inglês e francês do Produto A têm ProductLanguages e ProductCodes diferentes. Embora as versões em inglês e francês compartilhem o mesmo UpgradeCode, é possível criar a tabela Upgrade de modo que apenas a versão mais antiga do idioma inglês seja detectada e atualizada e a versão em francês mais antiga seja ignorada. Versões de idioma diferentes de um produto podem usar o mesmo UpgradeCode.