Delen via


Onderdeeltabel

De tabel Component bevat onderdelen en bevat de volgende kolommen.

Kolom Type Sleutel Null-waarde
Bestanddeel id- Y N
ComponentId GUID- N Y
Map_ id- N N
Kenmerken geheel getal N N
Conditie voorwaarde N Y
KeyPath id- N Y

Kolommen

-onderdeel

Identificeert de onderdeelrecord.

Primaire tabelsleutel.

ComponentId

Een tekenreeks-GUID die uniek is voor dit onderdeel, de versie en de taal.

Houd er rekening mee dat de letters van deze GUID's hoofdletters moeten zijn. Hulpprogramma's zoals GUIDGEN kunnen GUIDGEN's genereren die kleine letters bevatten. De kleine letters moeten worden gewijzigd in hoofdletters om deze geldige onderdeelcode-GUID's te maken.

Als deze kolom null is, registreert het installatieprogramma het onderdeel niet en kan het onderdeel niet worden verwijderd of hersteld door het installatieprogramma. Dit kan opzettelijk worden gedaan als het onderdeel alleen nodig is tijdens de installatie, zoals een aangepaste actie waarmee tijdelijke bestanden worden opgeschoond of een oud product wordt verwijderd. Het kan ook handig zijn bij het kopiëren van gegevensbestanden naar de computer van een gebruiker die niet hoeven te worden geregistreerd.

Directory_

Externe sleutel van een vermelding in de Directory-tabel. Dit is een eigenschapsnaam waarvan de waarde het werkelijke pad bevat, dat kan worden ingesteld door de actie AppSearch of met de standaardinstelling die is verkregen uit de maptabel.

Ontwikkelaars moeten voorkomen dat er onderdelen worden gemaakt die bestanden in een van de mappen Gebruikersprofiel plaatsen. Deze bestanden zouden niet beschikbaar zijn voor alle gebruikers in situaties met meerdere gebruikers en kunnen ertoe leiden dat het installatieprogramma het onderdeel permanent kan weergeven als herstel vereist.

Externe sleutel naar kolom één van de maptabel.

kenmerken

Deze kolom bevat een bitvlag waarmee opties voor externe uitvoering worden opgegeven. Voeg de aangegeven bit toe aan de totale waarde in de kolom om een optie op te nemen.

Notitie

In het geval van een .msi-bestand dat wordt gedownload van een weblocatie, mogen de kenmerkvlagken niet worden ingesteld om toe te staan dat een onderdeel wordt uitgevoerd vanaf de bron. Dit is een beperking van Windows Installer en kan een functiestatus van INSTALLSTATE_BADCONFIG retourneren.

Bit-vlag
msidbComponentAttributesLocalOnly-
0
0x0000
Onderdeel kan niet worden uitgevoerd vanuit de bron. Stel deze bit in voor alle onderdelen die deel uitmaken van een functie om te voorkomen dat de functie wordt uitgevoerd vanaf het netwerk of vanaf de bron. Houd er rekening mee dat als een functie geen onderdelen heeft, de functie altijd run-from-source en run-from-my-computer weergeeft als geldige opties.
msidbComponentAttributesSourceOnly-
1
0x0001
Het onderdeel kan alleen worden uitgevoerd vanuit de bron. Stel deze bit in voor alle onderdelen die deel uitmaken van een functie om te voorkomen dat de functie wordt uitgevoerd vanaf mijn computer. Houd er rekening mee dat als een functie geen onderdelen heeft, de functie altijd run-from-source en run-from-my-computer weergeeft als geldige opties.
msidbComponentAttributesOptional-
2
0x0002
Het onderdeel kan lokaal of vanuit de bron worden uitgevoerd.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Als deze bit is ingesteld, wordt de waarde in de kolom KeyPath gebruikt als sleutel in de registertabel. Als het waardeveld van de bijbehorende record in de registertabel null is, mag het veld Naam in die record niet '+', '-' of '*' bevatten. Zie de beschrijving van het veld Naam in registertabelvoor meer informatie.
Het instellen van deze bit wordt aanbevolen voor registervermeldingen die naar de HKCU-component zijn geschreven. Dit zorgt ervoor dat het installatieprogramma de benodigde HKCU-registervermeldingen schrijft wanneer er meerdere gebruikers op dezelfde computer zijn.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Als deze bit is ingesteld, wordt het verwijzingsaantal verhoogd in het gedeelde DLL-register van het sleutelbestand van het onderdeel. Als deze bit niet is ingesteld, wordt het aantal verwijzingen alleen verhoogd als het aantal verwijzingen al bestaat.
msidbComponentAttributesPermanent
16
0x0010
Als deze bit is ingesteld, verwijdert het installatieprogramma het onderdeel niet tijdens het verwijderen. Het installatieprogramma registreert een extra systeemclient voor het onderdeel in de registerinstellingen van Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Als deze bit is ingesteld, is de waarde in de kolom KeyPath een sleutel in de ODBCDataSource-tabel.
msidbComponentAttributesTransitive-
64
0x0040
Als deze bit is ingesteld, evalueert het installatieprogramma de waarde van de instructie in de kolom Voorwaarde opnieuw bij een herinstallatie. Als de waarde eerder Onwaar was en is gewijzigd in Waar, installeert het installatieprogramma het onderdeel. Als de waarde eerder Waar was en is gewijzigd in Onwaar, verwijdert het installatieprogramma het onderdeel, zelfs als het onderdeel andere producten als clients heeft.
Deze bit mag alleen worden ingesteld voor transitieve onderdelen. Zie Transitive Components gebruiken.
msidbComponentAttributesNeverOverwrite
128
0x0080
Als deze bit is ingesteld, installeert of installeert het installatieprogramma het onderdeel niet opnieuw als er al een sleutelpadbestand of een registervermelding voor het sleutelpad voor het onderdeel bestaat. De toepassing registreert zich wel als client van het onderdeel.
Gebruik deze vlag alleen voor onderdelen die worden geregistreerd door de registertabel. Gebruik deze vlag niet voor onderdelen die zijn geregistreerd door de AppId, Class, Extension, ProgId, MIME-en Werkwoordtabellen.
msidbComponentAttributes64bit
256
0x0100
Stel deze bit in om dit te markeren als een 64-bits onderdeel. Dit kenmerk vereenvoudigt de installatie van pakketten die zowel 32-bits als 64-bits onderdelen bevatten. Als deze bit niet is ingesteld, wordt het onderdeel geregistreerd als een 32-bits onderdeel.
Als dit een 64-bits onderdeel is dat een 32-bits onderdeel vervangt, stelt u deze bit in en wijst u een nieuwe GUID toe in de kolom ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Stel deze bit in om registerspiegeling uit te schakelen op alle bestaande en nieuwe registersleutels die door dit onderdeel worden beïnvloed. Als deze bit is ingesteld, roept Windows Installer de RegDisableReflectionKey aan op elke sleutel die wordt geopend door het onderdeel. Deze bit is beschikbaar met Windows Installer versie 4.0. Deze bit wordt genegeerd op 32-bits systemen. Deze bit wordt genegeerd in de 64-bits versies van Windows XP.
Opmerking: 32-bits Windows-toepassingen die worden uitgevoerd op de 64-bits Windows-emulator (WOW64) verwijzen naar een andere weergave van het register dan 64-bits toepassingen. Registerspiegeling kopieert enkele registerwaarden tussen deze twee registerweergaven.
msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Stel deze bit in voor een onderdeel in een patchpakket om te voorkomen dat zwevende onderdelen op de computer worden achtergelaten. Als een volgende patch is geïnstalleerd, gemarkeerd met de msidbPatchSequenceSupersedeEarlier waarde in de MsiPatchSequence tabel om de eerste patch te vervangen, kan Windows Installer 4.5 en hoger de registratie en het verwijderen van onderdelen die zijn gemarkeerd met de msidbComponentAttributesUninstallOnSupersedence waarde ongedaan maken en verwijderen. Als het onderdeel niet is gemarkeerd met deze bit, kan de installatie van een vervangende patch een ongebruikt onderdeel op de computer achterlaten.
Het instellen van de eigenschap MSIUNINSTALLSUPERSEDEDCOMPONENTS heeft hetzelfde effect als het instellen van deze bit voor alle onderdelen.
Windows Installer 4.0 en eerder: De msidbComponentAttributesUninstallOnSupersedence waarde wordt niet ondersteund en wordt genegeerd.

msidbComponentAttributesShared-
2048
0x0800
Als een onderdeel is gemarkeerd met deze kenmerkwaarde in ten minste één pakket dat op het systeem is geïnstalleerd, behandelt het installatieprogramma het onderdeel als gemarkeerd in alle pakketten. Als een pakket dat het gemarkeerde onderdeel deelt, wordt verwijderd, kan Windows Installer 4.5 de hoogste versie van het onderdeel op het systeem blijven delen, zelfs als die hoogste versie is geïnstalleerd door het pakket dat wordt verwijderd.
Als het beleid DisableSharedComponent is ingesteld op 1, wordt de functionaliteit voor gedeelde onderdelen niet door deze bit ingeschakeld.
Windows Installer 4.0 en eerdere: De waarde msidbComponentAttributesSharedSharedShare d wordt niet ondersteund en wordt genegeerd.

voorwaarde voor

Deze kolom bevat een voorwaardelijke instructie waarmee kan worden bepaald of een onderdeel is geïnstalleerd. Als de voorwaarde null is of waar oplevert, wordt het onderdeel ingeschakeld. Als de voorwaarde Onwaar is, wordt het onderdeel uitgeschakeld en niet geïnstalleerd.

Het veld Voorwaarde schakelt een onderdeel alleen in of uit tijdens de actie CostFinalize. Als u een onderdeel wilt in- of uitschakelen na CostFinalize, moet u een aangepaste actie of de DoAction ControlEvent- gebruiken om MsiSetComponentState-aan te roepen.

Houd er rekening mee dat, tenzij de transitieve bit in de kolom Kenmerken is ingesteld voor een onderdeel, het onderdeel eenmaal is ingeschakeld, zelfs als de voorwaardelijke instructie in de kolom Voorwaarde later resulteert in Onwaar bij een volgende onderhoudsinstallatie van het product.

De kolom Voorwaarde in de tabel Component accepteert voorwaardelijke expressies die verwijzingen bevatten naar de geïnstalleerde statussen van functies en onderdelen. Zie syntaxis van voorwaardelijke instructievoor meer informatie over de syntaxis van voorwaardelijke instructies.

KeyPath

Deze waarde verwijst naar een bestand of map die hoort bij het onderdeel dat het installatieprogramma gebruikt om het onderdeel te detecteren. Twee onderdelen kunnen niet dezelfde sleutelpadwaarde delen. De waarde in deze kolom is ook het pad dat wordt geretourneerd door de MsiGetComponentPath-functie.

Als de waarde niet null is, is KeyPath een primaire sleutel in het Register, ODBCDataSourceof Bestandstabellen, afhankelijk van de waarde Kenmerk. Als KeyPath null is, wordt de map van de Directory_ kolom gebruikt als het sleutelpad.

Omdat mappen die door het installatieprogramma zijn gemaakt, worden verwijderd wanneer ze leeg zijn, moet u een vermelding in de tabel CreateFolder maken om een onderdeel te installeren dat uit een lege map bestaat.

Als een Windows Installer-onderdeel een bestand of registersleutel bevat die wordt beveiligd door Windows Resource Protection (WRP) of een bestand dat wordt beveiligd door Windows File Protection (WFP), moet deze resource worden gebruikt als KeyPath voor het onderdeel. In dit geval wordt het onderdeel niet door Windows Installer geïnstalleerd, bijgewerkt of verwijderd. U moet geen beveiligde resources opnemen in een installatiepakket. In plaats daarvan moet u de ondersteunde mechanismen voor resourcevervanging gebruiken voor Windows Resource Protection. Zie Windows Installer en Windows Resource Protection gebruikenvoor meer informatie.

Opmerkingen

Zie Functietabelvoor een bespreking van de relatie tussen onderdelen en functies.

Het installatieprogramma houdt gedeelde DLL's onafhankelijk van het aantal gedeelde DLL-verwijzingen in het register bij. Als er een verwijzingsaantal voor een gedeelde DLL bestaat in het register, wordt het aantal altijd verhoogd wanneer het bestand wordt geïnstalleerd en wordt het verwijderd wanneer het wordt verwijderd. Als msidbComponentAttributesSharedDllRefCount, niet is ingesteld en het aantal verwijzingen nog niet bestaat, maakt het installatieprogramma er geen. Houd er rekening mee dat het aantal sharedDLLs-verwijzingen in het register wordt verhoogd voor alle bestanden die zijn geïnstalleerd in de map Systeem.

Als msidbComponentAttributesSharedDllRef Count niet is ingesteld, kan een andere toepassing het onderdeel verwijderen, zelfs als dit nog nodig is. Bekijk het volgende scenario om te zien hoe dit kan gebeuren:

  • Een toepassing die gebruikmaakt van het installatieprogramma installeert een gedeeld onderdeel.
  • De msidbComponentAttributesSharedDllRefCount bit is niet ingesteld en er is geen verwijzingsaantal. Het installatieprogramma begint dus niet met een verwijzingsaantal.
  • Een verouderde toepassing die dit onderdeel deelt en het installatieprogramma niet gebruikt, wordt geïnstalleerd.
  • Met de verouderde toepassing wordt een verwijzingsaantal voor het gedeelde onderdeel gemaakt en verhoogd.
  • De verouderde toepassing wordt verwijderd.
  • Het aantal verwijzingen voor het gedeelde onderdeel wordt afgebroken tot nul en het onderdeel wordt verwijderd.
  • De toepassing die het installatieprogramma gebruikt, heeft geen toegang meer tot het onderdeel.

U kunt dit gedrag voorkomen door msidbComponentAttributesSharedDllRefCountin te stellen.

Houd er rekening mee dat systeemservicesonderdelen niet als run-from-source moeten worden opgegeven zonder specifiek te zijn ontworpen voor dergelijk gebruik. Zie de tabel ServiceInstall voor meer informatie.

Houd er rekening mee dat kenmerken die uitvoeren vanaf de broninstallatie inschakelen nooit moeten worden ingesteld voor onderdelen die dynamische-koppelingsbibliotheken bevatten die naar de systeemmap gaan. De reden hiervoor is dat als de installatiestatus van het onderdeel wordt ingesteld op uitvoeren vanaf de bron door een functie te volgen of door in de gebruikersinterface te worden ingesteld, volgende aanroepen naar LoadLibrary- in het DLL-bestand mislukken.

Zie ook Controle van functieselectiestatussen.

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-