Tabella componente

La tabella Component elenca i componenti e contiene le colonne seguenti.

Colonna Tipo Chiave Nullable
Componente Identificatore S N
Componentid GUID N S
Directory_ Identificatore N N
Attributi Integer N N
Condizione Condition N S
KeyPath Identificatore N S

Colonne

Componente

Identifica il record del componente.

Chiave della tabella primaria.

Componentid

GUID di stringa univoco per questo componente, versione e lingua.

Si noti che le lettere di questi GUID devono essere maiuscole. Le utilità come GUIDGEN possono generare GUIDD contenenti lettere minuscole. Le lettere minuscole devono essere modificate in maiuscolo per rendere questi GUID di codice del componente validi.

Se questa colonna è Null, il programma di installazione non registra il componente e il componente non può essere rimosso o ripristinato dal programma di installazione. Questa operazione può essere eseguita intenzionalmente se il componente è necessario solo durante l'installazione, ad esempio un'azione personalizzata che pulisce i file temporanei o rimuove un vecchio prodotto. Può essere utile anche quando si copiano i file di dati in un computer dell'utente che non devono essere registrati.

Directory_

Chiave esterna di una voce nella tabella Directory. Si tratta di un nome di proprietà il cui valore contiene il percorso effettivo, che può essere impostato dall'azione AppSearch o con l'impostazione predefinita ottenuta dalla tabella Directory.

Gli sviluppatori devono evitare la creazione di componenti che inserisce i file in una delle cartelle profilo utente. Questi file non sarebbero disponibili per tutti gli utenti in situazioni multiutente e potrebbero causare la visualizzazione permanente del componente come richiesta di ripristino.

Chiave esterna alla colonna una della tabella Directory.

Attributi

Questa colonna contiene un flag bit che specifica le opzioni per l'esecuzione remota. Aggiungere il bit indicato al valore totale nella colonna per includere un'opzione.

Nota

Nel caso di un file di .msi scaricato da un percorso Web, i flag di attributo non devono essere impostati per consentire l'esecuzione di un componente da origine. Si tratta di una limitazione del programma di installazione di Windows e può restituire uno stato di funzionalità di INSTALLSTATE_BADCONFIG.

Flag bit
msidbComponentAttributesLocalOnly
0
0x0000
Impossibile eseguire il componente dall'origine. Impostare questo bit per tutti i componenti appartenenti a una funzionalità per impedire che la funzionalità venga eseguita da rete o eseguita da origine. Si noti che se una funzionalità non ha componenti, la funzionalità mostra sempre run-from-source e run-from-my-computer come opzioni valide.
msidbComponentAttributesSourceOnly
1
0x0001
Il componente può essere eseguito solo dall'origine. Impostare questo bit per tutti i componenti appartenenti a una funzionalità per impedire che la funzionalità venga eseguita da-my-computer. Si noti che se una funzionalità non ha componenti, la funzionalità mostra sempre run-from-source e run-from-my-computer come opzioni valide.
msidbComponentAttributesOptional
2
0x0002
Il componente può essere eseguito localmente o dall'origine.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Se questo bit è impostato, il valore nella colonna KeyPath viene usato come chiave nella tabella Registro di sistema. Se il campo Value del record corrispondente nella tabella Del Registro di sistema è Null, il campo Name in tale record non deve contenere "+", "-" o "*". Per altre informazioni, vedere la descrizione del campo Name nella tabella Registro di sistema.
L'impostazione di questo bit è consigliata per le voci del Registro di sistema scritte nell'hive HKCU. Ciò garantisce che il programma di installazione scrive le voci del Registro di sistema HKCU necessarie quando sono presenti più utenti nello stesso computer.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Se questo bit è impostato, il programma di installazione incrementa il conteggio dei riferimenti nel registro DLL condiviso del file di chiave del componente. Se questo bit non è impostato, il programma di installazione incrementa il conteggio dei riferimenti solo se il conteggio dei riferimenti esiste già.
msidbComponentAttributesPermanent
16
0x0010
Se questo bit è impostato, il programma di installazione non rimuove il componente durante una disinstallazione. Il programma di installazione registra un client di sistema aggiuntivo per il componente nelle impostazioni del Registro di sistema Windows programma di installazione.
msidbComponentAttributesODBCDataSource
32
0x0020
Se questo bit è impostato, il valore nella colonna KeyPath è una chiave nella tabella ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Se questo bit è impostato, il programma di installazione rivaluta il valore dell'istruzione nella colonna Condition dopo una reinstallazione. Se il valore è stato precedentemente False ed è stato modificato in True, il programma di installazione installa il componente. Se il valore era precedentemente True e è stato modificato in False, il programma di installazione rimuove il componente anche se il componente include altri prodotti come client.
Questo bit deve essere impostato solo per i componenti transitivi. Vedere Uso di componenti transitivi.
msidbComponentAttributesNeverOverwrite
128
0x0080
Se questo bit è impostato, il programma di installazione non installa o reinstalla il componente se esiste già un file di percorso chiave o una voce del Registro di sistema del percorso della chiave per il componente. L'applicazione si registra come client del componente.
Usare questo flag solo per i componenti registrati dalla tabella Del Registro di sistema. Non usare questo flag per i componenti registrati dalle tabelle AppId, Class, Extension, ProgId, MIME e Verb.
msidbComponentAttributes64bit
256
0x0100
Impostare questo bit per contrassegnarlo come componente a 64 bit. Questo attributo facilita l'installazione dei pacchetti che includono componenti a 32 bit e a 64 bit. Se questo bit non è impostato, il componente viene registrato come componente a 32 bit.
Se si tratta di un componente a 64 bit che sostituisce un componente a 32 bit, impostare questo bit e assegnare un nuovo GUID nella colonna ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Impostare questo bit per disabilitare La reflection del Registro di sistema su tutte le chiavi del Registro di sistema esistenti e nuove interessate da questo componente. Se questo bit è impostato, il programma di installazione di Windows chiama RegDisableReflectionKey su ogni chiave a cui si accede dal componente. Questo bit è disponibile con Windows Installer versione 4.0. Questo bit viene ignorato nei sistemi a 32 bit. Questo bit viene ignorato nelle versioni a 64 bit di Windows XP.
[! Nota]
Le applicazioni Windows a 32 bit in esecuzione nell'emulatore di Windows a 64 bit (WOW64) fanno riferimento a una visualizzazione diversa del Registro di sistema rispetto alle applicazioni a 64 bit. La reflection del Registro di sistema copia alcuni valori del Registro di sistema tra queste due viste del Registro di sistema.


msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Impostare questo bit per un componente in un pacchetto di patch per impedire l'uscita di componenti orfani nel computer. Se viene installata una patch successiva, contrassegnata con il valore msidbPatchSequenceSupersedeEarlier nella tabella MsiPatchSequence per sostituire la prima patch, Windows Installer 4.5 e versioni successive può annullare la registrazione e disinstallare i componenti contrassegnati con il valore msidbComponentAttributesUninstallOnSupersedence. Se il componente non è contrassegnato con questo bit, l'installazione di una patch di sostituzione può lasciare un componente inutilizzato nel computer.
L'impostazione della proprietà MSIUNINSTALLSUPERSEDEDCOMPONENTS ha lo stesso effetto dell'impostazione di questo bit per tutti i componenti.
Windows Installer 4.0 e versioni precedenti: Il valore msidbComponentAttributesUninstallOnSupersedence non è supportato e viene ignorato.

msidbComponentAttributesShared
2048
0x0800
Se un componente è contrassegnato con questo valore di attributo in almeno un pacchetto installato nel sistema, il programma di installazione considera il componente come contrassegnato in tutti i pacchetti. Se viene disinstallato un pacchetto che condivide il componente contrassegnato, Windows Installer 4.5 può continuare a condividere la versione più recente del componente nel sistema, anche se tale versione più recente è stata installata dal pacchetto da disinstallare.
Se il criterio DisableSharedComponent è impostato su 1, nessun pacchetto ottiene la funzionalità del componente condiviso abilitata da questo bit.
Windows Installer 4.0 e versioni precedenti: Il valore msidbComponentAttributesShared non è supportato e viene ignorato.

Condizione

Questa colonna contiene un'istruzione condizionale in grado di controllare se è installato un componente. Se la condizione è Null o restituisce true, il componente viene abilitato. Se la condizione restituisce False, il componente viene disabilitato e non è installato.

Il campo Condizione abilita o disabilita un componente solo durante l'azione CostFinalize. Per abilitare o disabilitare un componente dopo CostFinalize, è necessario usare un'azione personalizzata o doAction ControlEvent per chiamare MsiSetComponentState.

Si noti che, 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 Successivamente False in un'installazione di manutenzione successiva del prodotto.

La colonna Condizione nella tabella Component accetta espressioni condizionali contenenti riferimenti agli stati installati di funzionalità e componenti. Per informazioni sulla sintassi delle istruzioni condizionali, vedere Sintassi dell'istruzione condizionale.

KeyPath

Questo valore punta a un file o a una cartella appartenente al componente utilizzato dal programma di installazione per rilevare il componente. Due componenti non possono condividere lo stesso valore del percorso della chiave. Il valore in questa colonna è anche il percorso restituito dalla funzione MsiGetComponentPath .

Se il valore non è Null, KeyPath è una chiave primaria nelle tabelle Registry, ODBCDataSource o File a seconda del valore attribute. Se KeyPath è Null, la cartella della colonna Directory_ viene usata come percorso della chiave.

Poiché le cartelle create dal programma di installazione vengono eliminate quando diventano vuote, è necessario creare una voce nella tabella CreateFolder per installare un componente costituito da una cartella vuota.

Si noti che se un componente del programma di installazione di Windows contiene un file o una chiave del Registro di sistema protetta da Windows Resource Protection (WRP) o un file protetto da Windows File Protection (WFP), questa risorsa deve essere usata come KeyPath per il componente. In questo caso, Windows Programma di installazione non installa, aggiorna o rimuove il componente. Non includere risorse protette in un pacchetto di installazione. È invece consigliabile usare i meccanismi di sostituzione delle risorse supportati per Windows Resource Protection. Per altre informazioni, vedere Using Windows Installer and Windows Resource Protection.For more information, see Using Windows Installer and Windows Resource Protection.

Commenti

Per una descrizione della relazione tra componenti e funzionalità, vedere Tabella delle funzionalità.

Il programma di installazione tiene traccia delle DLL condivise indipendentemente dal conteggio dei riferimenti dll condivise nel Registro di sistema. Se nel Registro di sistema esiste un conteggio dei riferimenti per una DLL condivisa, il programma di installazione incrementa sempre il conteggio durante l'installazione del file e lo decrementa quando viene disinstallato. Se msidbComponentAttributesSharedDllRefCount, non è impostato e il conteggio dei riferimenti non esiste già, il programma di installazione non ne creerà uno. Si noti che il conteggio dei riferimenti SharedDLLs nel Registro di sistema viene incrementato per tutti i file installati nella cartella System.

Se msidbComponentAttributesSharedDllRefCount non è impostato, un'altra applicazione può rimuovere il componente anche se è ancora necessario. Per verificare in che modo questo problema può verificarsi, considerare lo scenario seguente:

  • Un'applicazione che usa il programma di installazione installa un componente condiviso.
  • Il bit msidbComponentAttributesSharedDllRefCount non è impostato e non è presente alcun conteggio dei riferimenti. Pertanto, il programma di installazione non inizia un conteggio dei riferimenti.
  • Un'applicazione legacy che condivide questo componente e non usa il programma di installazione è installata.
  • L'applicazione legacy crea e incrementa un conteggio dei riferimenti per il componente condiviso.
  • L'applicazione legacy viene disinstallata.
  • Il conteggio dei riferimenti per il componente condiviso viene decrementato su zero e il componente viene rimosso.
  • L'applicazione che usa il programma di installazione non ha più accesso al componente.

Per evitare questo comportamento, impostare msidbComponentAttributesSharedDllRefCount.

Si noti che i componenti dei servizi di sistema non devono essere specificati come run-from-source senza essere progettati specificamente per tale utilizzo. Per altri dettagli, vedere la tabella ServiceInstall .

Si noti che gli attributi che abilitano l'installazione di run-from-source non devono mai essere impostati per i componenti contenenti librerie a collegamento dinamico che si trovano nella cartella di sistema. Il motivo è che se lo stato di installazione del componente diventa impostato su run-from-source seguendo una funzionalità o impostando nell'interfaccia utente, le chiamate successive a LoadLibrary nella DLL non riusciranno.

Vedere anche Controllo degli stati di selezione delle funzionalità.

Convalida

ICE02
ICE03
ICE06
ICE07
ICE08
ICE09
ICE18
ICE19
ICE21
ICE30
ICE32
ICE35
ICE38
ICE41
ICE42
ICE43
ICE46
ICE50
ICE54
ICE57
ICE59
ICE62
ICE67
ICE76
ICE79
ICE80
ICE83
ICE86
ICE88
ICE91
ICE92
ICE97