Uso di componenti transitivi

Un uso tipico per i componenti transitivi consiste nel preparare un prodotto da reinstallare durante un aggiornamento del sistema. L'autore del pacchetto di installazione specifica i componenti che devono essere scambiati durante un aggiornamento del sistema come con l'attributo transitivo. Quando l'utente aggiorna successivamente il sistema, il prodotto deve essere reinstallato. Dopo questa reinstallazione, il programma di installazione rimuove i componenti precedenti e installa i componenti successivi, senza dover installare l'intero prodotto.

Per includere due componenti transitivi nel pacchetto di installazione

  1. Includere entrambi i componenti transitivi nel pacchetto di installazione.

  2. Creare entrambi i componenti transitivi nella tabella Component nello stesso modo dei componenti normali. Ogni componente transitivo deve avere il proprio GUID univoco specificato nella colonna ComponentId.

  3. Includere il bit msidbComponentAttributesTransitive nella colonna Attributi della tabella Component per ogni componente transitivo. Se questo bit è impostato, il programma di installazione rivaluta il valore dell'istruzione nella colonna Condizione dopo una reinstallazione.

    Se il valore era precedentemente False ed è stato modificato in True, il programma di installazione installa il componente.

    Se il valore era precedentemente True ed è stato modificato in False, il programma di installazione rimuove il componente anche se il componente include altri prodotti come client.

    Nota

    A meno che il bit transitivo non sia impostato, il componente rimane abilitato una volta installato anche se l'istruzione condizionale restituisce False in una successiva installazione di manutenzione del prodotto. Le condizioni devono essere basate solo sugli stati del computer. Non usare con condizioni in base agli stati utente o alle proprietà impostate nella riga di comando perché questo può causare la necessità di una reinstallazione del prodotto su ogni utilizzo da parte di un utente diverso.

     

  4. Immettere espressioni condizionali complementari nei campi Condizione della tabella Control in modo che quando la condizione del primo componente transitivo cambia in False, la condizione nel secondo componente transitivo cambia in True. Ciò comporta la rimozione del primo componente e l'installazione del secondo componente al momento della reinstallazione dell'applicazione.

Una reinstallazione del prodotto è necessaria per cambiare i componenti transitivi. Gli autori di pacchetti devono pertanto fornire agli utenti un metodo per reinstallare il prodotto e per impostare le modalità della proprietà REINSTALLMODE. Esistono fondamentalmente tre modi per attivare la reinstallazione:

  • Eseguire e configurare la reinstallazione tramite l'interfaccia utente creando un pacchetto che usa l'interfaccia utente completa.
  • Eseguire la reinstallazione dalla riga di comando usando msiexec /f e selezionare le modalità dall'elenco per l'opzione della riga di comando /f.
  • Chiedere all'applicazione di chiamare MsiReInstallProduct o MsiReInstallFeature.

Il bit deve essere usato solo con condizioni in base agli stati del computer. Non usare con condizioni in base agli stati utente o alle proprietà impostate nella riga di comando perché questo può causare la necessità di una reinstallazione del prodotto su ogni utilizzo da parte di un utente diverso.

Nota

A meno che il bit transitivo nella colonna Attributi non sia impostato per un componente, il componente rimane abilitato una volta installato anche se l'istruzione condizionale nella colonna Condizione restituisce False in una successiva installazione di manutenzione del prodotto.

Nella maggior parte dei casi, se un'applicazione include componenti transitivi, Windows Installer richiede l'origine dell'applicazione per ripristinare o aggiornare l'applicazione. In questi casi, il CD-ROM di ripristino del sistema fornito da un produttore di apparecchiature originali non funziona e deve essere fornita un'origine di installazione effettiva per l'applicazione.