Összetevő táblázata
A Komponens tábla az összetevőket listázza, és az alábbi oszlopokkal rendelkezik.
Oszlop | Típus | Kulcs | Nullázható |
---|---|---|---|
Komponens | azonosító | Y | N |
ComponentId | GUID | N | Y |
Címtár_ | azonosító | N | N |
Attribútumok | egész szám | N | N |
Feltétel | feltétel | N | Y |
KeyPath | azonosító | N | Y |
Oszlopok
-
összetevő
-
Azonosítja az összetevőrekordot.
Elsődleges táblakulcs.
-
ComponentId
-
Az összetevőre, verzióra és nyelvre egyedi sztring GUID.
Vegye figyelembe, hogy ezeknek a grafikus GUID-knek nagybetűsnek kell lenniük. Az olyan segédprogramok, mint a GUIDGEN, kisbetűket tartalmazó GRAFIKUS GUID-ket hozhatnak létre. A kisbetűket nagybetűsre kell módosítani ahhoz, hogy ezek az érvényes összetevőkód-GUID-k legyenek.
Ha ez az oszlop null értékű, a telepítő nem regisztrálja az összetevőt, és az összetevőt nem tudja eltávolítani vagy javítani a telepítő. Ez szándékosan történhet, ha az összetevőre csak a telepítés során van szükség, például egy egyéni műveletre, amely eltávolítja az ideiglenes fájlokat, vagy eltávolít egy régi terméket. Akkor is hasznos lehet, ha olyan adatfájlokat másol egy felhasználó számítógépére, amelyeket nem kell regisztrálni.
-
Directory_
-
A Címtár táblabejegyzésének külső kulcsa. Ez egy olyan tulajdonságnév, amelynek értéke a tényleges elérési utat tartalmazza, amelyet az AppSearch művelet vagy a Címtár táblából kapott alapértelmezett beállítással állíthat be.
A fejlesztőknek el kell kerülniük azokat az összetevőket, amelyek fájlokat helyeznek a felhasználói profil egyik mappájába. Ezek a fájlok nem érhetők el minden felhasználó számára többfelhasználós helyzetekben, és a telepítő véglegesen javításra szorulónak tekintheti az összetevőt.
A címtártábla egyik oszlopához tartozó külső kulcs.
-
attribútumok
-
Ez az oszlop egy bitjelölőt tartalmaz, amely megadja a távoli végrehajtás beállításait. Adja hozzá a megadott bitet az oszlop teljes értékéhez, hogy belefoglaljon egy lehetőséget.
Jegyzet
Ha egy webhelyről letöltött .msi fájlról van szó, az attribútumjelölőket nem szabad úgy beállítani, hogy lehetővé tegyék az összetevők forrásból való futtatását. Ez a Windows Installer korlátozása, és visszaadhatja a INSTALLSTATE_BADCONFIG szolgáltatásállapotát.
Bitjelző - msidbComponentAttributesLocalOnly
- 0
- 0x0000
- msidbComponentAttributesSourceOnly
- 1
- 0x0001
- msidbComponentAttributesOptional
- 2
- 0x0002
- msidbComponentAttributesRegistryKeyPath
- 4
- 0x0004
A bit beállítása ajánlott a HKCU-hive-be írt beállításjegyzék-bejegyzésekhez. Ez biztosítja, hogy a telepítő megírja a szükséges HKCU-beállításjegyzék-bejegyzéseket, ha ugyanazon a gépen több felhasználó is van.- msidbComponentAttributesSharedDllRefCount
- 8
- 0x0008
- msidbComponentAttributesPermanent
- 16
- 0x0010
- msidbComponentAttributesODBCDataSource
- 32
- 0x0020
- msidbComponentAttributesTransitive
- 64
- 0x0040
Ezt a bitet csak tranzitív összetevőkhöz kell beállítani. Lásd: Tranzitív összetevők használata.- msidbComponentAttributesNeverOverwrite
- 128
- 0x0080
Ezt a jelzőt csak a Beállításjegyzék-tábla által regisztrált összetevőkhöz használja. Ne használja ezt a jelzőt az AppId, Osztály, Bővítmény, ProgId, MIMEés Verb táblákáltal regisztrált összetevőkhöz.- msidbComponentAttributes64bit
- 256
- 0x0100
Ha ez egy 64 bites összetevő, amely lecserél egy 32 bites összetevőt, állítsa be ezt a bitet, és rendeljen hozzá egy új GUID azonosítót a ComponentId oszlopban.msidbComponentAttributesDisableRegistryReflection
512
0x0200
Állítsa be ezt a bitet úgy, hogy letiltsa beállításjegyzék-tükrözési az összetevő által érintett összes meglévő és új beállításkulcson. Ha ez a bit be van állítva, a Windows Installer meghívja a RegDisableReflectionKey az összetevő által elért összes kulcsra. Ez a bit a Windows Installer 4.0-s verziójával érhető el. Ezt a bitet a rendszer figyelmen kívül hagyja a 32 bites rendszereken. Ezt a bitet a Rendszer figyelmen kívül hagyja a Windows XP 64 bites verzióiban.
megjegyzés: 64 bites Windows emulátoron (WOW64) futó 32 bites Windows-alkalmazások a 64 bites alkalmazásoktól eltérő nézetre hivatkoznak. A beállításjegyzék tükrözése a két beállításjegyzék-nézet között másol néhány beállításjegyzék-értéket.- msidbComponentAttributesUninstallOnSupersedence
- 1024
- 0x0400
A MSIUNINSTALLSUPERSEDCOMPONENTS tulajdonságának beállítása ugyanolyan hatással van, mint a bit beállítása az összes összetevőre.
Windows Installer 4.0-s és korábbi: Az msidbComponentAttributesUninstallOnSupersedence érték nem támogatott, és figyelmen kívül hagyja.- msidbComponentAttributesShared
- 2048
- 0x0800
Ha a DisableSharedComponent házirend 1 értékre van állítva, egyetlen csomag sem engedélyezi a bit által engedélyezett megosztott összetevő-funkciókat.
Windows Installer 4.0-s és korábbi: A msidbComponentAttributesShared érték nem támogatott, és figyelmen kívül hagyja. -
feltétel
-
Ez az oszlop egy feltételes utasítást tartalmaz, amely szabályozhatja, hogy egy összetevő telepítve van-e. Ha a feltétel null értékű, vagy igaz értékre van kiértékelve, akkor az összetevő engedélyezve van. Ha a feltétel értéke Hamis, akkor az összetevő le van tiltva, és nincs telepítve.
A Feltétel mező csak az CostFinalize műveletsorán engedélyezi vagy tiltja le az összetevőket. Ha engedélyezni vagy letiltani szeretne egy összetevőt a CostFinalize után, egyéni műveletet vagy DoAction ControlEvent kell használnia MsiSetComponentStatemeghívásához.
Vegye figyelembe, hogy ha az Attribútumok oszlop tranzitív bitje nincs beállítva egy összetevőhöz, az összetevő a telepítés után is engedélyezve marad, még akkor is, ha a Feltétel oszlopban lévő feltételes utasítás később hamis értéket ad vissza a termék későbbi karbantartási telepítésekor.
A Komponens tábla Feltétel oszlopa olyan feltételes kifejezéseket fogad el, amelyek a szolgáltatások és összetevők telepített állapotára mutató hivatkozásokat tartalmaznak. A feltételes utasítások szintaxisával kapcsolatos információkért lásd feltételes utasítás szintaxisát.
-
KeyPath
-
Ez az érték az összetevőhöz tartozó fájlra vagy mappára mutat, amelyet a telepítő az összetevő észlelésére használ. Két összetevő nem oszthatja meg ugyanazt a kulcs elérési útját. Az oszlop értéke a MsiGetComponentPath függvény által visszaadott elérési út is.
Ha az érték nem null, akkor a KeyPath vagy elsődleges kulcs a Beállításjegyzék, ODBCDataSource, vagy Fájltáblák az attribútum értékétől függően. Ha a KeyPath értéke null, akkor a rendszer a Directory_ oszlop mappáját használja kulcsútvonalként.
Mivel a telepítő által létrehozott mappák üressé válásukkor törlődnek, a CreateFolder tábla bejegyzést kell létrehoznia egy üres mappából álló összetevő telepítéséhez.
Vegye figyelembe, hogy ha a Windows Installer-összetevő olyan fájlt vagy beállításkulcsot tartalmaz, amelyet Windows Resource Protection (WRP) vagy Windows File Protection (WFP) véd, akkor ezt az erőforrást kell használni az összetevő KeyPath-jaként. Ebben az esetben a Windows Installer nem telepíti, frissíti vagy távolítja el az összetevőt. A telepítési csomagban nem szabad védett erőforrásokat felvenni. Ehelyett a Windows Resource Protection támogatott erőforrás-csere mechanizmusait kell használnia. További információ: A Windows Installer és a Windows Resource Protectionhasználata.
Megjegyzések
Az összetevők és szolgáltatások közötti kapcsolatról a Funkciótáblacímű témakörben olvashat.
A telepítő a megosztott DLL-eket a beállításjegyzék megosztott DLL-hivatkozásainak számától függetlenül követi nyomon. Ha a beállításjegyzékben létezik hivatkozásszám egy megosztott DLL-hez, a telepítő mindig növeli a fájl telepítésének számát, és az eltávolításkor csökken. Ha msidbComponentAttributesSharedDllRefCount, nincs beállítva, és a referenciaszám még nem létezik, a telepítő nem hoz létre egyet. Vegye figyelembe, hogy a rendszer a rendszermappába telepített fájlok esetében növeli a megosztott DLL-referenciaszámot a beállításjegyzékben.
Ha msidbComponentAttributesSharedDllRefCount nincs beállítva, akkor egy másik alkalmazás akkor is eltávolíthatja az összetevőt, ha még szükség van rá. Ha meg szeretné tudni, hogy ez hogyan fordulhat elő, fontolja meg a következő forgatókönyvet:
- A telepítőt használó alkalmazás egy megosztott összetevőt telepít.
- Az msidbComponentAttributesSharedDllRefCount bit nincs beállítva, és nincs hivatkozásszám. Így a telepítő nem kezdi meg a referenciaszámot.
- Telepítve van egy régi alkalmazás, amely megosztja ezt az összetevőt, és nem használja a telepítőt.
- Az örökölt alkalmazás létrehozza és növeli a megosztott összetevő hivatkozásainak számát.
- A rendszer eltávolítja az örökölt alkalmazást.
- A megosztott összetevő hivatkozási száma nullára csökken, és az összetevő el lesz távolítva.
- A telepítőt használó alkalmazásnak már nincs hozzáférése az összetevőhöz.
A viselkedés elkerülése érdekében állítsa be msidbComponentAttributesSharedDllRefCount.
Vegye figyelembe, hogy a rendszerszolgáltatások összetevőit nem szabad forrásból futtatottként megadni anélkül, hogy kifejezetten erre a használatra lettek volna tervezve. További részletekért lásd a ServiceInstall tábla.
Vegye figyelembe, hogy a forrásból történő telepítést engedélyező attribútumokat soha nem szabad beállítani a rendszermappába bemenő dinamikus csatolású kódtárakat tartalmazó összetevőkhöz. Ennek az az oka, hogy ha az összetevő telepítési állapota egy funkció követésével vagy a felhasználói felületen való beállítással forrásból futtathatóvá válik, a DLL-n LoadLibrary hívásai sikertelenek lesznek.
Lásd még: Funkcióválasztási állapotok szabályozása.