Dela via


Komponenttabell

Tabellen Komponent visar komponenter och innehåller följande kolumner.

Spalt Typ Nyckel Nullbar
Komponent identifierare Y N
ComponentId GUID- N Y
Katalog_ identifierare N N
Attribut Heltal N N
Tillstånd Villkor N Y
KeyPath identifierare N Y

Kolumner

komponent

Identifierar komponentposten.

Primär tabellnyckel.

ComponentId

Ett sträng-GUID som är unikt för den här komponenten, versionen och språket.

Observera att bokstäverna i dessa GUID måste vara versaler. Verktyg som GUIDGEN kan generera GUID som innehåller gemener. Gemener måste ändras till versaler för att dessa giltiga komponentkods-GUID:er ska kunna användas.

Om den här kolumnen är null registrerar installationsprogrammet inte komponenten och komponenten kan inte tas bort eller repareras av installationsprogrammet. Detta kan göras avsiktligt om komponenten bara behövs under installationen, till exempel en anpassad åtgärd som rensar temporära filer eller tar bort en gammal produkt. Det kan också vara användbart när du kopierar datafiler till en användares dator som inte behöver registreras.

Directory_

Extern nyckel för en post i tabellen Directory. Det här är ett egenskapsnamn vars värde innehåller den faktiska sökvägen, som kan anges antingen av åtgärden AppSearch eller med standardinställningen som hämtas från tabellen Katalog.

Utvecklare måste undvika att redigera komponenter som placerar filer i någon av användarprofilmapparna. Dessa filer skulle inte vara tillgängliga för alla användare i situationer med flera användare och kan leda till att installationsprogrammet permanent visar komponenten som kräver reparation.

Extern nyckel till kolumn ett av katalogtabellen.

attribut

Den här kolumnen innehåller en bitflagga som anger alternativ för fjärrkörning. Lägg till den angivna biten i det totala värdet i kolumnen för att inkludera ett alternativ.

Not

Om en .msi fil som laddas ned från en webbplats ska attributflaggor inte anges så att en komponent kan köras från källan. Det här är en begränsning för Windows Installer och kan returnera ett funktionstillstånd för INSTALLSTATE_BADCONFIG.

Bitflagga
msidbComponentAttributesLocalOnly
0
0x0000
Det går inte att köra komponenten från källan. Ange den här biten för alla komponenter som tillhör en funktion för att förhindra att funktionen körs från nätverk eller körs från källan. Observera att om en funktion inte har några komponenter, visar funktionen alltid kör-från-källa och kör-från-min-dator som giltiga alternativ.
msidbComponentAttributesSourceOnly
1
0x0001
Komponenten kan bara köras från källan. Ange den här biten för alla komponenter som tillhör en funktion för att förhindra att funktionen körs från min dator. Observera att om en funktion inte har några komponenter, visar funktionen alltid kör-från-källa och kör-från-min-dator som giltiga alternativ.
msidbComponentAttributesOptional
2
0x0002
Komponenten kan köras lokalt eller från källan.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Om den här biten anges används värdet i kolumnen KeyPath som en nyckel i tabellen Registry. Om fältet Värde för motsvarande post i registertabellen är null får fältet Namn i posten inte innehålla "+", "-" eller "*". Mer information finns i beskrivningen av fältet Namn i tabellen Registry.
Att ange den här biten rekommenderas för registerposter som skrivits till HKCU-registreringsdatafilen. Detta säkerställer att installationsprogrammet skriver nödvändiga HKCU-registerposter när det finns flera användare på samma dator.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Om den här biten anges ökar installationsprogrammet referensantalet i det delade DLL-registret för komponentens nyckelfil. Om den här biten inte har angetts ökar installationsprogrammet endast referensantalet om referensantalet redan finns.
msidbComponentAttributesPermanent
16
0x0010
Om den här biten har angetts tar installationsprogrammet inte bort komponenten under en avinstallation. Installationsprogrammet registrerar en extra systemklient för komponenten i registerinställningarna för Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Om den här biten anges är värdet i kolumnen KeyPath en nyckel till tabellen ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Om den här biten har angetts omvärderar installationsprogrammet värdet för -instruktionen i kolumnen Villkor vid en ominstallation. Om värdet tidigare var Falskt och har ändrats till Sant installerar installationsprogrammet komponenten. Om värdet tidigare var Sant och har ändrats till False, tar installationsprogrammet bort komponenten även om komponenten har andra produkter som klienter.
Den här biten ska bara anges för transitiva komponenter. Se använda transitiva komponenter.
msidbComponentAttributesNeverOverwrite
128
0x0080
Om den här biten har angetts installerar eller installerar installationsprogrammet inte komponenten om det redan finns en nyckelsökvägsfil eller en registerpost för nyckelsökvägen för komponenten. Programmet registrerar sig som en klient för komponenten.
Använd endast den här flaggan för komponenter som registreras av registertabellen. Använd inte den här flaggan för komponenter som registrerats av AppId, Class, Extension, ProgId, MIMEoch Verb-tabeller.
msidbComponentAttributes64bit
256
0x0100
Ange den här biten för att markera den som en 64-bitarskomponent. Det här attributet underlättar installationen av paket som innehåller både 32- och 64-bitarskomponenter. Om den här biten inte har angetts registreras komponenten som en 32-bitarskomponent.
Om det här är en 64-bitars komponent som ersätter en 32-bitarskomponent anger du den här biten och tilldelar ett nytt GUID i kolumnen ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Ange den här biten för att inaktivera Registry Reflection på alla befintliga och nya registernycklar som påverkas av den här komponenten. Om den här biten har angetts anropar Windows Installer RegDisableReflectionKey på varje nyckel som används av komponenten. Den här biten är tillgänglig med Windows Installer version 4.0. Den här biten ignoreras på 32-bitarssystem. Den här biten ignoreras i 64-bitarsversionerna av Windows XP.
Obs! 32-bitars Windows-program som körs på 64-bitars Windows-emulatorn (WOW64) refererar till en annan vy av registret än 64-bitarsprogram. Registerreflektion kopierar vissa registervärden mellan dessa två registervyer.
msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Ange den här biten för en komponent i ett korrigeringspaket för att förhindra att överblivna komponenter lämnas kvar på datorn. Om en efterföljande korrigering har installerats, märkt med värdet msidbPatchSequenceSupersedeEarlier i dess MsiPatchSequence tabell för att ersätta den första korrigeringen, kan Windows Installer 4.5 och senare avregistrera och avinstallera komponenter som markerats med msidbComponentAttributesUninstallOnSupersedence värde. Om komponenten inte är markerad med den här biten kan installationen av en ersättningskorrigering lämna kvar en oanvänd komponent på datorn.
Att ange egenskapen MSIUNINSTALLSUPERSEDEDCOMPONENTS har samma effekt som att ange den här biten för alla komponenter.
Windows Installer 4.0 och tidigare: Värdet msidbComponentAttributesUninstallOnSupersedence stöds inte och ignoreras.

msidbComponentAttributesShared
2048
0x0800
Om en komponent har markerats med det här attributvärdet i minst ett paket som är installerat på systemet behandlar installationsprogrammet komponenten som markerad i alla paket. Om ett paket som delar den markerade komponenten avinstalleras kan Windows Installer 4.5 fortsätta att dela den högsta versionen av komponenten i systemet, även om den högsta versionen installerades av paketet som avinstalleras.
Om principen DisableSharedComponent är inställd på 1, får inget paket de delade komponentfunktioner som aktiveras av den här biten.
Windows Installer 4.0 och tidigare: värdet msidbComponentAttributesShared stöds inte och ignoreras.

villkor

Den här kolumnen innehåller en villkorsstyrd instruktion som kan styra om en komponent är installerad. Om villkoret är null eller utvärderas till sant aktiveras komponenten. Om villkoret utvärderas till False inaktiveras komponenten och installeras inte.

Fältet Villkor aktiverar eller inaktiverar endast en komponent under åtgärden CostFinalize. Om du vill aktivera eller inaktivera en komponent efter CostFinalize måste du använda en anpassad åtgärd eller DoAction ControlEvent- för att anropa MsiSetComponentState.

Observera att om inte den transitiva biten i kolumnen Attribut har angetts för en komponent förblir komponenten aktiverad när den har installerats även om villkorssatsen i kolumnen Villkor senare utvärderas till False vid en efterföljande underhållsinstallation av produkten.

Kolumnen Villkor i tabellen Komponent accepterar villkorsuttryck som innehåller referenser till installerade tillstånd för funktioner och komponenter. Information om syntaxen för villkorsstyrda instruktioner finns i Syntax för villkorsstyrd instruktion.

KeyPath

Det här värdet pekar på en fil eller mapp som tillhör komponenten som installationsprogrammet använder för att identifiera komponenten. Två komponenter kan inte dela samma nyckelsökvägsvärde. Värdet i den här kolumnen är också sökvägen som returneras av funktionen MsiGetComponentPath.

Om värdet inte är null är KeyPath antingen en primärnyckel i Registry, ODBCDataSourceeller Filtabeller beroende på attributets värde. Om KeyPath är null används mappen för kolumnen Directory_ som nyckelsökväg.

Eftersom mappar som skapas av installationsprogrammet tas bort när de blir tomma måste du skapa en post i tabellen CreateFolder för att installera en komponent som består av en tom mapp.

Observera att om en Windows Installer-komponent innehåller en fil eller registernyckel som skyddas av Windows Resource Protection (WRP) eller en fil som skyddas av Windows File Protection (WFP), måste den här resursen användas som KeyPath för komponenten. I det här fallet installerar, uppdaterar eller tar inte Windows Installer bort komponenten. Du bör inte inkludera några skyddade resurser i ett installationspaket. I stället bör du använda resursersättningsmekanismer som stöds för Windows Resource Protection. Mer information finns i Using Windows Installer and Windows Resource Protection.

Anmärkningar

En diskussion om relationen mellan komponenter och funktioner finns i Funktionstabell.

Installationsprogrammet håller reda på delade DLL:er oberoende av det delade DLL-referensantalet i registret. Om det finns ett referensantal för en delad DLL i registret ökar installationsprogrammet alltid antalet när den installerar filen och minskar den när den avinstalleras. Om msidbComponentAttributesSharedDllRefCount, inte har angetts och referensantalet inte redan finns, skapar installationsprogrammet inte ett. Observera att referensantalet delade DLL:er i registret ökas för alla filer som är installerade i systemmappen.

Om msidbComponentAttributesSharedDllRefCount inte har angetts kan ett annat program ta bort komponenten även om den fortfarande behövs. Om du vill se hur detta kan inträffa bör du tänka på följande scenario:

  • Ett program som använder installationsprogrammet installerar en delad komponent.
  • msidbComponentAttributesSharedDllRefCount bit har inte angetts och det finns inget referensantal. Installationsprogrammet påbörjar därför inte ett referensantal.
  • Ett äldre program som delar den här komponenten och inte använder installationsprogrammet är installerat.
  • Det äldre programmet skapar och ökar ett referensantal för den delade komponenten.
  • Det äldre programmet avinstalleras.
  • Referensantalet för den delade komponenten minskas till noll och komponenten tas bort.
  • Programmet som använder installationsprogrammet har inte längre åtkomst till komponenten.

Undvik det här beteendet genom att ange msidbComponentAttributesSharedDllRefCount.

Observera att systemtjänstkomponenter inte bör anges som run-from-source utan att vara särskilt utformade för sådan användning. Mer information finns i tabellen ServiceInstall.

Observera att attribut som aktiverar installation av run-from-source aldrig bör anges för komponenter som innehåller dynamiska länkbibliotek som går in i systemmappen. Anledningen är att om installationstillståndet för komponenten ställs in på körning från källa genom att följa en funktion eller genom att anges i användargränssnittet misslyckas efterföljande anrop till LoadLibrary- på DLL:en.

Se även Kontrollera funktionsvalstillstånd.

Validering

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