Condividi tramite


Impedire l'installazione di un pacchetto precedente su una versione più recente

I pacchetti di aggiornamento di Windows Installer possono essere creati per avere aggiornamenti principali non installati se un utente ha già installato una versione più recente. La procedura descritta in questo argomento può impedire solo i downgrade che potrebbero essere causati dall'esecuzione di un pacchetto di aggiornamento principale. Questa procedura si basa sull'azione FindRelatedProducts, che viene eseguita solo durante una prima installazione e non viene eseguita in modalità di manutenzione (reinstallazione). Poiché gli aggiornamenti secondari vengono eseguiti usando la reinstallazione, questa procedura non può essere utilizzata per determinare se un pacchetto di aggiornamento secondario sta tentando di effettuare il downgrade di un'applicazione. Per altre informazioni, vedere Preparazione di un'applicazione per gli aggiornamenti principali futuri.

Per impedire l'installazione di un pacchetto precedente su una versione più recente

  1. Immettere la proprietà UpgradeCode per il gruppo di prodotti correlati che potrebbero essere idonei a ricevere l'aggiornamento nella colonna UpgradeCode della tabella di aggiornamento.

  2. Immettere il flag di bit msidbUpgradeAttributesOnlyDetect nella colonna Attributi della tabella di aggiornamento.

  3. Immettere la versione dell'aggiornamento fornito da questo pacchetto nella colonna VersionMin della tabella di aggiornamento. Lasciare vuota la colonna VersionMax.

  4. Immettere il nome della proprietà che deve essere impostata dall'azione FindRelatedProducts nella colonna ActionProperty della tabella di aggiornamento.

  5. Aggiungere la proprietà SecureCustomProperties e la proprietà denominata nella colonna ActionProperty della tabella di aggiornamento alla tabella delle proprietà.

  6. Aggiungere un tipo di azione personalizzato 19 dopo l'azione FindRelatedProducts nella tabella InstallExecuteSequence. Includere un record nella tabella CustomAction per questa azione e immettere il testo da visualizzare nella colonna Destinazione. L'azione personalizzata di tipo 19 è incorporata nel programma di installazione, quindi non è disponibile codice da scrivere.

  7. Immettere il nome di ActionProperty nella colonna Condizione del record in InstallExecuteSequence Table che contiene il tipo di azione personalizzato 19. Questa condizione consente di eseguire l'azione personalizzata solo quando la tabella di aggiornamento rileva che è già installata una versione più recente.

    Ad esempio, un pacchetto di Windows Installer che aggiorna un gruppo di prodotti correlati alla versione 3.0 può includere i record seguenti nelle tabelle Upgrade, CustomAction, InstallExecuteSequence e Property . Tutti i prodotti correlati nel gruppo hanno lo stesso Codice di aggiornamento, ma il programma di installazione non installa questo pacchetto di aggiornamento se nel computer è già installata una versione successiva alla 3.0. In questo caso, il programma di installazione visualizza un messaggio di errore e l'installazione non riesce. Il pacchetto di aggiornamento della versione 3.0 viene installato nelle versioni 1.0 e 2.0.

    Aggiorna tabella

    UpgradeCode VersionMin VersionMax Linguaggio Attributi Rimuovi ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1,0 3.0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    Tabella CustomAction

    Azione Tipo Source (Sorgente) Destinazione
    CA1 19 È già installato un aggiornamento superiore.

     

    Tabella InstallExecuteSequence

    Azione Condizione Sequenza
    FindRelatedProducts 200
    CA1 NEWPRODUCTFOUND 201

     

    Tabella delle proprietà

    Proprietà Valore
    SecureCustomProperties NEWPRODUCTFOUND; UPGRADEFOUND