Sdílet prostřednictvím


Tabulka komponent

Tabulka Komponent obsahuje seznam součástí a obsahuje následující sloupce.

Sloupec Typ Klíč Nullable
Komponenta identifikátor Y N
ComponentId guid N Y
Adresář_ identifikátor N N
Atributy celočíselná N N
Podmínka podmínky N Y
KeyPath identifikátor N Y

Sloupce

komponenta

Identifikuje záznam komponenty.

Primární klíč tabulky.

ComponentId

Identifikátor GUID řetězce jedinečný pro tuto komponentu, verzi a jazyk.

Všimněte si, že písmena těchto identifikátorů GUID musí být velká písmena. Nástroje, jako je GUIDGEN, můžou generovat identifikátory GUID obsahující malá písmena. Malá písmena musí být změněna na velká písmena, aby se tyto platné identifikátory GUID kódu komponenty změnily.

Pokud má tento sloupec hodnotu null, instalační program neregistruje komponentu a instalační program ji nemůže odebrat ani opravit. To může být záměrně provedeno, pokud je komponenta potřebná pouze během instalace, například vlastní akce, která vyčistí dočasné soubory nebo odebere starý produkt. Může být také užitečné při kopírování datových souborů do počítače uživatele, který není potřeba zaregistrovat.

Directory_

Externí klíč položky v tabulce adresářů . Jedná se o název vlastnosti, jejíž hodnota obsahuje skutečnou cestu, kterou může nastavit akce AppSearch nebo s výchozím nastavením získaným z tabulky Adresář.

Vývojáři se musí vyhnout vytváření součástí, které umístí soubory do jedné ze složek profilů uživatelů. Tyto soubory by nebyly dostupné všem uživatelům v situacích s více uživateli a mohly by způsobit, že instalační program trvale zobrazí komponentu jako součást vyžadující opravu.

Externí klíč ke sloupci jedné z tabulek adresářů

atributy

Tento sloupec obsahuje bitový příznak, který určuje možnosti vzdáleného spuštění. Přidejte zadaný bit k celkové hodnotě ve sloupci, aby obsahoval možnost.

Poznámka

V případě .msi souboru, který se stahuje z webového umístění, by neměly být příznaky atributů nastaveny tak, aby umožňovaly spuštění komponenty ze zdroje. Jedná se o omezení Instalační služby systému Windows a může vrátit stav funkce INSTALLSTATE_BADCONFIG.

Příznak bitu
msidbComponentAttributesLocalOnly
0
0x0000
Komponentu nelze spustit ze zdroje. Nastavte tento bit pro všechny komponenty, které patří do funkce, aby se zabránilo spuštění ze sítě nebo spuštění ze zdroje. Všimněte si, že pokud funkce nemá žádné součásti, funkce vždy zobrazuje jako platné možnosti spuštění ze zdroje a run-from-my-computer.
msidbComponentAttributesSourceOnly
1
0x0001
Komponentu lze spustit pouze ze zdroje. Tento bit nastavte pro všechny součásti, které patří do funkce, aby se zabránilo spuštění funkce z počítače. Všimněte si, že pokud funkce nemá žádné součásti, funkce vždy zobrazuje jako platné možnosti spuštění ze zdroje a run-from-my-computer.
msidbComponentAttributesOptional
2
0x0002
Komponenta může běžet místně nebo ze zdroje.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Pokud je tento bit nastaven, hodnota ve sloupci KeyPath se použije jako klíč do tabulky Registry. Pokud je pole Hodnota odpovídajícího záznamu v tabulce Registru null, nesmí pole Name v daném záznamu obsahovat "+", "-" nebo "*". Další informace naleznete v popisu pole Název v tabulce Registr.
Nastavení tohoto bitu se doporučuje pro položky registru zapsané do podregistru HKCU. Tím se zajistí, že instalační program zapíše potřebné položky registru HKCU, pokud je na stejném počítači více uživatelů.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Pokud je tento bit nastaven, instalační program zvýší počet odkazů ve sdíleném registru knihovny DLL souboru klíče komponenty. Pokud tento bit není nastavený, instalační program zvýší počet odkazů pouze v případě, že počet odkazů již existuje.
msidbComponentAttributesPermanent
16
0x0010
Pokud je tento bit nastavený, instalační program během odinstalace neodebere komponentu. Instalační program zaregistruje dalšího systémového klienta pro komponentu v nastavení registru Instalační služby systému Windows.
msidbComponentAttributesODBCDataSource
32
0x0020
Pokud je tento bit nastaven, hodnota ve sloupci KeyPath je klíč do tabulky ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Pokud je tento bit nastavený, instalační program znovu vyhodnocuje hodnotu příkazu ve sloupci Podmínka při přeinstalaci. Pokud byla hodnota dříve False a změnila se na True, instalační program nainstaluje komponentu. Pokud byla hodnota dříve True a změnila se na False, instalační program odebere komponentu i v případě, že má komponenta jiné produkty jako klienty.
Tento bit by měl být nastaven pouze pro tranzitivní komponenty. Viz použití tranzitivních komponent.
msidbComponentAttributesNeverOverwrite
128
0x0080
Pokud je tento bit nastavený, instalační program nenainstaluje ani nepřeinstaluje komponentu, pokud již existuje soubor cesty ke klíči nebo položka registru cesty ke klíči pro danou komponentu. Aplikace se zaregistruje jako klient komponenty.
Tento příznak použijte pouze pro součásti, které jsou registrovány tabulkou registru. Tento příznak nepoužívejte pro komponenty registrované AppId, třídy, rozšíření, ProgId, MIMEa příkazové tabulky.
msidbComponentAttributes64bit
256
0x0100
Nastavte tento bit tak, aby se označil jako 64bitová komponenta. Tento atribut usnadňuje instalaci balíčků, které obsahují 32bitové i 64bitové komponenty. Pokud tento bit není nastavený, je komponenta registrována jako 32bitová komponenta.
Pokud se jedná o 64bitovou komponentu, která nahrazuje 32bitovou komponentu, nastavte tento bit a přiřaďte nový identifikátor GUID ve sloupci ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Nastavte tento bit tak, aby zakázal Reflexe registru u všech existujících a nových klíčů registru ovlivněných touto komponentou. Pokud je tento bit nastaven, Instalační služba systému Windows volá RegDisableReflectionKey na každém klíči, ke který přistupuje komponenta. Tento bit je k dispozici v Instalační službě systému Windows verze 4.0. Tento bit je ignorován v 32bitových systémech. Tento bit je ignorován v 64bitových verzích systému Windows XP.
Poznámka: 32bitové aplikace systému Windows spuštěné v 64bitovém emulátoru Systému Windows (WOW64) odkazují na jiné zobrazení registru než 64bitové aplikace. Reflexe registru kopíruje některé hodnoty registru mezi těmito dvěma zobrazeními registru.
msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Nastavte tento bit pro komponentu v balíčku oprav, aby se zabránilo opuštění osiřelých komponent v počítači. Pokud je nainstalována následná oprava označená msidbPatchSequenceSupersedeEarlier hodnotu v msiPatchSequence tabulce, která nahradí první opravu, instalační služba systému Windows 4.5 a novější může zrušit registraci a odinstalaci komponent označených msidbComponentAttributesUninstallOnSupersedence hodnotu. Pokud komponenta není označena tímto bitem, instalace superseding opravy může zanechat za nepoužínou komponentou v počítači.
Nastavení vlastnosti MSIUNINSTALLSUPERSEDEDCOMPONENTS má stejný účinek jako nastavení tohoto bitu pro všechny komponenty.
Instalační služba systému Windows 4.0 a starší: Hodnota msidbComponentAttributesUninstallOnSupersedence není podporována a je ignorována.

msidbComponentAttributesShared
2048
0x0800
Pokud je komponenta označena touto hodnotou atributu v alespoň jednom balíčku nainstalovaném v systému, instalační program považuje komponentu za označenou ve všech balíčcích. Pokud je odinstalován balíček, který sdílí označenou součást, může Instalační služba systému Windows 4.5 nadále sdílet nejvyšší verzi součásti v systému, i když byla tato nejvyšší verze nainstalována balíčkem, který je odinstalován.
Pokud je zásada DisableSharedComponent nastavená na hodnotu 1, tento bit nesdílí funkci sdílené komponenty.
Instalační služba systému Windows 4.0 a starší: Hodnota msidbComponentAttributesShared není podporována a je ignorována.

podmínka

Tento sloupec obsahuje podmíněný příkaz, který může řídit, zda je komponenta nainstalována. Pokud je podmínka null nebo se vyhodnotí jako true, je komponenta povolená. Pokud se podmínka vyhodnotí jako Nepravda, je komponenta zakázaná a není nainstalovaná.

Pole Podmínka povolí nebo zakáže komponentu pouze během akce CostFinalize. Chcete-li povolit nebo zakázat součást po CostFinalize, musíte použít vlastní akci nebo DoAction ControlEvent volat MsiSetComponentState.

Mějte na paměti, že pokud není tranzitivní bit ve sloupci Atributy nastaven pro komponentu, zůstane komponenta po instalaci povolena i v případě, že podmíněný příkaz ve sloupci Podmínka později vyhodnotí hodnotu False při následné instalaci produktu.

Sloupec Podmínka v tabulce komponent přijímá podmíněné výrazy obsahující odkazy na nainstalované stavy funkcí a součástí. Informace o syntaxi podmíněných příkazů naleznete v tématu Syntaxe podmíněného příkazu.

KeyPath

Tato hodnota odkazuje na soubor nebo složku patřící komponentě, kterou instalační program používá k detekci komponenty. Dvě komponenty nemůžou sdílet stejnou hodnotu cesty ke klíči. Hodnota v tomto sloupci je také cesta vrácená funkcí MsiGetComponentPath.

Pokud hodnota není null, keyPath je buď primárním klíčem do registru, ODBCDataSourcenebo File tabulky v závislosti na hodnotě atributu. Pokud je cesta ke klíči null, použije se složka sloupce Directory_ jako cesta ke klíči.

Vzhledem k tomu, že složky vytvořené instalačním programem se odstraní, jakmile budou prázdné, musíte vytvořit položku do tabulky CreateFolder nainstalovat součást, která se skládá z prázdné složky.

Všimněte si, že pokud součást Instalační služby systému Windows obsahuje soubor nebo klíč registru, který je chráněný službou Windows Resource Protection (WRP) nebo souborem chráněným ochranou windows File Protection (WFP), musí být tento prostředek použit jako KlíčPath pro danou komponentu. V tomto případě instalační služba systému Windows nenainstaluje, neaktualizuje ani neodebere komponentu. Do instalačního balíčku byste neměli zahrnout žádné chráněné prostředky. Místo toho byste měli použít podporované mechanismy nahrazení prostředků pro Windows Resource Protection. Další informace naleznete v tématu Použití Instalační služby systému Windows a Windows Resource Protection.

Poznámky

Diskuzi o relaci mezi součástmi a funkcemi najdete v tématu Tabulka funkcí.

Instalační program sleduje sdílené knihovny DLL nezávisle na počtu odkazů sdílené knihovny DLL v registru. Pokud v registru existuje počet odkazů pro sdílenou knihovnu DLL, instalační program vždy zvýší počet při instalaci souboru a při odinstalaci ho sníží. Pokud msidbComponentAttributesSharedDllRefCount, není nastaven a počet odkazů ještě neexistuje, instalační program ho nevytvoří. Všimněte si, že počet odkazů sdílených knihoven DLL v registru se zvýší pro všechny soubory nainstalované do systémové složky.

Pokud msidbComponentAttributesSharedDllRefCount není nastavená, může jiná aplikace komponentu odebrat, i když je stále potřeba. Pokud chcete zjistit, jak by k tomu mohlo dojít, zvažte následující scénář:

  • Aplikace, která používá instalační program, nainstaluje sdílenou komponentu.
  • msidbComponentAttributesSharedDllRefCount bit není nastaven a neexistuje žádný počet odkazů. Instalační program tedy nezačne počet odkazů.
  • Starší verze aplikace, která tuto komponentu sdílí a nepoužívá instalační program, je nainstalována.
  • Starší verze aplikace vytvoří a zvýší počet odkazů pro sdílenou komponentu.
  • Starší verze aplikace se odinstaluje.
  • Počet odkazů pro sdílenou komponentu se sníží na nulu a komponenta se odebere.
  • Aplikace, která používá instalační program, už nemá přístup ke komponentě.

Chcete-li se tomuto chování vyhnout, nastavte msidbComponentAttributesSharedDllRefCount.

Mějte na paměti, že součásti systémových služeb by neměly být určeny jako spustit ze zdroje, aniž by byly speciálně navrženy pro takové použití. Další podrobnosti najdete v tabulce ServiceInstall.

Mějte na paměti, že atributy, které umožňují instalaci typu run-from-source, by nikdy neměly být nastaveny pro komponenty obsahující knihovny dynamického propojení, které se nacházejí v systémové složce. Důvodem je, že pokud se stav instalace komponenty nastaví na spuštění ze zdroje pomocí funkce nebo nastavení v uživatelském rozhraní, následná volání LoadLibrary v knihovně DLL selžou.

Viz také řízení stavů výběru funkcí.

Validace

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