Compartilhar via


Impedindo que um pacote antigo seja instalado em uma versão mais recente

Os pacotes de atualização do Windows Installer podem ser criados para que as atualizações principais não sejam instaladas se um usuário já tiver uma versão mais recente instalada. O procedimento neste tópico só pode impedir downgrades causados pela execução de um pacote de atualização principal. Esse procedimento depende da ação FindRelatedProducts, que só é executada durante a primeira instalação, não no modo de manutenção (reinstalação). Como as atualizações secundárias são executadas usando a reinstalação, esse procedimento não pode ser usado para determinar se um pacote de atualização secundário está tentando fazer downgrade em um aplicativo. Para obter mais informações, confira Preparando um aplicativo para futuras atualizações principais.

Para impedir que um pacote antigo seja instalado em uma versão mais recente

  1. Insira a propriedade UpgradeCode para o grupo de produtos relacionados que podem estar qualificados para receber essa atualização na coluna UpgradeCode da tabela Upgrade.

  2. Insira o sinalizador de bits msidbUpgradeAttributesOnlyDetect na coluna Attributes da tabela Upgrade.

  3. Insira a versão da atualização fornecida por esse pacote na coluna VersionMin da tabela Upgrade. Deixe a coluna VersionMax em branco.

  4. Insira o nome da propriedade que deve ser definida pela ação FindRelatedProducts na coluna ActionProperty da tabela Upgrade.

  5. Adicione a propriedade SecureCustomProperties e a propriedade nomeada na coluna ActionProperty da tabela Upgrade à tabela Property.

  6. Adicione um Tipo de ação personalizada 19 após a ação FindRelatedProducts na tabela InstallExecuteSequence. Inclua um registro na tabela CustomAction para essa ação e insira o texto a ser exibido na coluna Target. A ação personalizada do tipo 19 é incorporada ao instalador, portanto, não há nenhum código a ser gravado.

  7. Insira o nome da ActionProperty na coluna Condition do registro na tabela InstallExecuteSequence que contém o Tipo de ação personalizada 19. Isso condiciona a ação personalizada a ser executada somente quando a tabela Upgrade detecta que uma versão mais recente já está instalada.

    Por exemplo, um pacote do Windows Installer que atualiza um grupo de produtos relacionados para a versão 3.0 pode incluir os seguintes registros em suas tabelas Upgrade, CustomAction, InstallExecuteSequence e Property. Todos os produtos relacionados no grupo têm o mesmo UpgradeCode, mas o instalador não instalará esse pacote de atualização se uma versão posterior a 3.0 já estiver instalada no computador. Nesse caso, o Instalador mostra uma mensagem de erro e a instalação falha. O pacote de atualização da versão 3.0 é instalado nas versões 1.0 e 2.0.

    Tabela Upgrade

    UpgradeCode VersionMin VersionMax Idioma Atributos Remover ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3,0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3,0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    Tabela CustomAction

    Ação Tipo Fonte Destino
    CA1 19 Uma atualização mais alta já está instalada.

     

    Tabela InstallExecuteSequence

    Ação Condição Sequência
    FindRelatedProducts 200
    CA1 NEWPRODUCTFOUND 201

     

    Tabela Property

    Propriedade Valor
    SecureCustomProperties NEWPRODUCTFOUND;UPGRADEFOUND