Udostępnij za pośrednictwem


Tabela składników

Tabela Składnik zawiera listę składników i zawiera następujące kolumny.

Kolumna Typ Klucz Nullable
Składnik identyfikator Y N
Identyfikator składnika identyfikator GUID N Y
Katalog_ identyfikator N N
Atrybuty liczba całkowita N N
Warunek warunek N Y
KeyPath identyfikator N Y

Kolumny

składnik

Identyfikuje rekord składnika.

Podstawowy klucz tabeli.

identyfikator składnika

Identyfikator GUID ciągu unikatowy dla tego składnika, wersji i języka.

Należy pamiętać, że litery tych identyfikatorów GUID muszą mieć wielkie litery. Narzędzia, takie jak GUIDGEN, mogą generować identyfikatory GUID zawierające małe litery. Małe litery muszą zostać zmienione na wielkie litery, aby były one prawidłowymi identyfikatorami GUID kodu składnika.

Jeśli ta kolumna ma wartość null, instalator nie zarejestruje składnika i nie można usunąć ani naprawić składnika przez instalatora. Może to być celowo zrobione, jeśli składnik jest potrzebny tylko podczas instalacji, na przykład akcja niestandardowa, która czyści pliki tymczasowe lub usuwa stary produkt. Może to być również przydatne podczas kopiowania plików danych na komputer użytkownika, który nie musi być zarejestrowany.

Directory_

Klucz zewnętrzny wpisu w tabeli usługi Directory. Jest to nazwa właściwości, której wartość zawiera rzeczywistą ścieżkę, którą można ustawić za pomocą akcji AppSearch lub z ustawieniem domyślnym uzyskanym z tabeli Katalog.

Deweloperzy muszą unikać tworzenia składników, które umieszczają pliki w jednym z folderów Profil użytkownika. Te pliki nie będą dostępne dla wszystkich użytkowników w sytuacjach wielu użytkowników i mogą spowodować, że instalator trwale wyświetli składnik jako wymagający naprawy.

Klucz zewnętrzny do kolumny jednej z tabeli Katalog.

atrybuty

Ta kolumna zawiera flagę bitową, która określa opcje wykonywania zdalnego. Dodaj wskazany bit do wartości całkowitej w kolumnie, aby uwzględnić opcję.

Nuta

W przypadku pliku .msi, który jest pobierany z lokalizacji internetowej, flagi atrybutów nie powinny być ustawione tak, aby umożliwić uruchamianie składnika ze źródła. Jest to ograniczenie Instalatora Windows i może zwrócić stan funkcji INSTALLSTATE_BADCONFIG.

Flaga bitowa
msidbComponentAttributesLocalOnly
0
0x0000
Nie można uruchomić składnika ze źródła. Ustaw ten bit dla wszystkich składników należących do funkcji, aby zapobiec uruchamianiu funkcji z sieci lub uruchamiania ze źródła. Należy pamiętać, że jeśli funkcja nie ma składników, funkcja zawsze wyświetla polecenie run-from-source i run-from-my-computer jako prawidłowe opcje.
msidbComponentAttributesSourceOnly
1
0x0001
Składnik może być uruchamiany tylko ze źródła. Ustaw ten bit dla wszystkich składników należących do funkcji, aby zapobiec uruchamianiu funkcji z komputera my-computer. Należy pamiętać, że jeśli funkcja nie ma składników, funkcja zawsze wyświetla polecenie run-from-source i run-from-my-computer jako prawidłowe opcje.
msidbComponentAttributesOptional
2
0x0002
Składnik może działać lokalnie lub ze źródła.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Jeśli ten bit jest ustawiony, wartość w kolumnie KeyPath jest używana jako klucz do tabeli rejestru . Jeśli pole Wartość odpowiedniego rekordu w tabeli Rejestru ma wartość null, pole Nazwa w tym rekordzie nie może zawierać znaków "+", "-" ani "*". Aby uzyskać więcej informacji, zobacz opis pola Nazwa w tabeli rejestru .
Ustawienie tego bitu jest zalecane w przypadku wpisów rejestru zapisanych w gałęzi HKCU. Dzięki temu instalator zapisuje niezbędne wpisy rejestru HKCU, gdy na tym samym komputerze jest wielu użytkowników.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Jeśli ten bit jest ustawiony, instalator zwiększa liczbę odwołań w udostępnionym rejestrze DLL pliku klucza składnika. Jeśli ten bit nie jest ustawiony, instalator zwiększa liczbę odwołań tylko wtedy, gdy liczba odwołań już istnieje.
msidbComponentAttributesPermanent
16
0x0010
Jeśli ten bit jest ustawiony, instalator nie usuwa składnika podczas odinstalowywania. Instalator rejestruje dodatkowego klienta systemu dla składnika w ustawieniach rejestru Instalatora Windows.
msidbComponentAttributesODBCDataSource
32
0x0020
Jeśli ten bit jest ustawiony, wartość w kolumnie KeyPath jest kluczem do tabeli ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Jeśli ten bit jest ustawiony, instalator ponownie przeszacuje wartość instrukcji w kolumnie Warunek po ponownym zainstalowaniu. Jeśli wartość była wcześniej fałszem i została zmieniona na True, instalator instaluje składnik. Jeśli wartość była wcześniej wartością True i została zmieniona na Fałsz, instalator usunie składnik, nawet jeśli składnik ma inne produkty jako klienci.
Ten bit powinien być ustawiany tylko dla składników przechodnich. Zobacz using Transitive Components.
msidbComponentAttributesNeverOverwrite
128
0x0080
Jeśli ten bit jest ustawiony, instalator nie instaluje ani nie instaluje ponownie składnika, jeśli plik ścieżki klucza lub wpis rejestru ścieżki klucza dla składnika już istnieje. Aplikacja rejestruje się jako klient składnika.
Tej flagi należy używać tylko w przypadku składników zarejestrowanych w tabeli Rejestru. Nie używaj tej flagi dla składników zarejestrowanych przez AppId, , Extension, ProgId, MIMEi Verb tables.
msidbComponentAttributes64bit
256
0x0100
Ustaw ten bit, aby oznaczyć go jako składnik 64-bitowy. Ten atrybut ułatwia instalację pakietów, które obejmują zarówno składniki 32-bitowe, jak i 64-bitowe. Jeśli ten bit nie jest ustawiony, składnik jest zarejestrowany jako składnik 32-bitowy.
Jeśli jest to składnik 64-bitowy zastępujący składnik 32-bitowy, ustaw ten bit i przypisz nowy identyfikator GUID w kolumnie ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Ustaw ten bit, aby wyłączyć odbicie rejestru na wszystkich istniejących i nowych kluczach rejestru, których dotyczy ten składnik. Jeśli ten bit jest ustawiony, Instalator Windows wywołuje RegDisableReflectionKey dla każdego klucza, do którego uzyskuje dostęp składnik. Ten bit jest dostępny w Instalatorze Windows w wersji 4.0. Ten bit jest ignorowany w systemach 32-bitowych. Ten bit jest ignorowany w 64-bitowych wersjach systemu Windows XP.
Uwaga: 32-bitowych aplikacji systemu Windows działających w 64-bitowym emulatorze systemu Windows (WOW64) odwołuje się do innego widoku rejestru niż aplikacje 64-bitowe. Odbicie rejestru kopiuje niektóre wartości rejestru między tymi dwoma widokami rejestru.
msidbComponentAttributesUninstallOnSupersedence
1024
0x0400
Ustaw ten bit dla składnika w pakiecie poprawek, aby zapobiec pozostawieniu oddzielonych składników na komputerze. Jeśli zostanie zainstalowana kolejna poprawka, oznaczona msidbPatchSequenceSupersede Wcześniej wartość w MsiPatchSequence tabeli zastąpić pierwszą poprawkę, Instalator Windows 4.5 lub nowszy może wyrejestrować i odinstalować składniki oznaczone za pomocą msidbComponentAttributesUninstallOnSupersedence. Jeśli składnik nie jest oznaczony tym bitem, instalacja zastępowanej poprawki może pozostawić za nieużywanym składnikiem na komputerze.
Ustawienie właściwości MSIUNINSTALLSUPERSEDEDCOMPONENTS ma taki sam efekt jak ustawienie tego bitu dla wszystkich składników.
Instalatora Windows 4.0 i wcześniejszych: wartość msidbComponentAttributesUninstallOnSupersed ence nie jest obsługiwana i ignorowana.

msidbComponentAttributesShared
2048
0x0800
Jeśli składnik jest oznaczony tą wartością atrybutu w co najmniej jednym pakiecie zainstalowanym w systemie, instalator traktuje składnik jako oznaczony we wszystkich pakietach. Jeśli pakiet współużytkujący oznaczony składnik zostanie odinstalowany, Instalator Windows 4.5 może nadal udostępniać najwyższą wersję składnika w systemie, nawet jeśli ta najwyższa wersja została zainstalowana przez pakiet, który jest odinstalowywany.
Jeśli dla zasad DisableSharedComponent ustawiono wartość 1, żaden pakiet nie pobiera funkcji składnika udostępnionego włączonego przez ten bit.
Instalatora Windows 4.0 i starszych: wartość msidbComponentAttributesShared nie jest obsługiwana i jest ignorowana.

warunek

Ta kolumna zawiera instrukcję warunkową, która może kontrolować, czy składnik jest zainstalowany. Jeśli warunek ma wartość null lub ma wartość true, składnik jest włączony. Jeśli warunek ma wartość False, składnik jest wyłączony i nie jest zainstalowany.

Pole Warunek włącza lub wyłącza składnik tylko podczas akcji CostFinalize. Aby włączyć lub wyłączyć składnik po parametrze CostFinalize, należy użyć akcji niestandardowej lub Kontrolka DoAction, aby wywołać MsiSetComponentState.

Należy pamiętać, że jeśli bit przejściowy w kolumnie Atrybuty jest ustawiony dla składnika, składnik pozostaje włączony po zainstalowaniu, nawet jeśli instrukcja warunkowa w kolumnie Warunek później zwróci wartość False podczas kolejnej instalacji produktu.

Kolumna Warunek w tabeli Składnik akceptuje wyrażenia warunkowe zawierające odwołania do zainstalowanych stanów funkcji i składników. Aby uzyskać informacje na temat składni instrukcji warunkowych, zobacz Składnia instrukcji warunkowej.

KeyPath

Ta wartość wskazuje plik lub folder należący do składnika, którego instalator używa do wykrywania składnika. Dwa składniki nie mogą współdzielić tej samej wartości ścieżki klucza. Wartość w tej kolumnie jest również ścieżką zwracaną przez funkcję MsiGetComponentPath.

Jeśli wartość nie ma wartości null, parametr KeyPath jest kluczem podstawowym w Registry, ODBCDataSourcelub Tabele plików w zależności od wartości Atrybut. Jeśli parametr KeyPath ma wartość null, folder kolumny Directory_ jest używany jako ścieżka klucza.

Ponieważ foldery utworzone przez instalatora są usuwane, gdy staną się puste, należy utworzyć wpis w tabeli CreateFolder, aby zainstalować składnik składający się z pustego folderu.

Należy pamiętać, że jeśli składnik Instalatora Windows zawiera plik lub klucz rejestru chroniony przez usługę Windows Resource Protection (WRP) lub plik chroniony przez ochronę plików systemu Windows (WFP), ten zasób musi być używany jako ścieżka keypath dla składnika. W takim przypadku Instalator Windows nie instaluje, aktualizuje ani nie usuwa składnika. W pakiecie instalacyjnym nie należy uwzględniać żadnych chronionych zasobów. Zamiast tego należy użyć obsługiwanych mechanizmów wymiany zasobów dla usługi Windows Resource Protection. Aby uzyskać więcej informacji, zobacz Using Windows Installer and Windows Resource Protection.

Uwagi

Aby zapoznać się z omówieniem relacji między składnikami i funkcjami, zobacz Feature Table.

Instalator śledzi udostępnione biblioteki DLL niezależnie od udostępnionej liczby odwołań bibliotek DLL w rejestrze. Jeśli w rejestrze istnieje liczba odwołań dla udostępnionej biblioteki DLL, instalator zawsze zwiększa liczbę podczas instalowania pliku i dekrementuje go podczas jego odinstalowywania. Jeśli msidbComponentAttributesSharedDllRefCount, nie jest ustawiona, a liczba odwołań nie istnieje, instalator nie utworzy go. Należy pamiętać, że liczba odwołań sharedDLLs w rejestrze jest zwiększana dla wszystkich plików zainstalowanych w folderze System.

Jeśli msidbComponentAttributesSharedDllRefCount nie jest ustawiona, inna aplikacja może usunąć składnik, nawet jeśli jest nadal potrzebny. Aby zobaczyć, jak może się to zdarzyć, rozważ następujący scenariusz:

  • Aplikacja korzystająca z instalatora instaluje składnik udostępniony.
  • msidbComponentAttributesSharedDllRefCount bit nie jest ustawiony i nie ma liczby odwołań. W związku z tym instalator nie rozpoczyna liczby odwołań.
  • Starsza aplikacja, która udostępnia ten składnik i nie korzysta z instalatora, jest zainstalowana.
  • Starsza aplikacja tworzy i zwiększa liczbę odwołań dla składnika udostępnionego.
  • Starsza aplikacja zostanie odinstalowana.
  • Liczba odwołań dla składnika udostępnionego jest dekrementowana do zera, a składnik jest usuwany.
  • Aplikacja korzystająca z instalatora nie ma już dostępu do składnika.

Aby uniknąć tego zachowania, ustaw msidbComponentAttributesSharedDllRefCount.

Należy pamiętać, że nie należy określać składników usług systemowych jako elementów run-from-source bez specjalnie zaprojektowanych do takiego użycia. Aby uzyskać więcej informacji, zobacz tabelę ServiceInstall.

Należy pamiętać, że atrybuty umożliwiające instalację typu run-from-source nigdy nie powinny być ustawiane dla składników zawierających biblioteki łącza dynamicznego, które przechodzą do folderu systemowego. Przyczyną jest to, że jeśli stan instalacji składnika zostanie ustawiony na uruchamianie ze źródła przez wykonanie funkcji lub przez ustawienie w interfejsie użytkownika, kolejne wywołania LoadLibrary w dll zakończy się niepowodzeniem.

Zobacz również kontrolowanie stanów wyboru funkcji.

Walidacja

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