Bileşen Tablosu
Bileşen tablosu bileşenleri listeler ve aşağıdaki sütunlara sahiptir.
Sütun | Tür | Anahtar | Nullable |
---|---|---|---|
Parça | Tanımlayıcı | Y | N |
ComponentId | GUID | N | Y |
Dizin_ | Tanımlayıcı | N | N |
Öznitelik | tamsayı | N | N |
Koşul | Koşulu | N | Y |
KeyPath | Tanımlayıcı | N | Y |
Sütun
-
Bileşeni
-
Bileşen kaydını tanımlar.
Birincil tablo anahtarı.
-
ComponentId
-
Bu bileşene, sürüme ve dile özgü bir dize GUID'i.
Bu GUID'lerin harflerinin büyük harf olması gerektiğini unutmayın. GUIDGEN gibi yardımcı programlar küçük harfler içeren GUID'ler oluşturabilir. Bu geçerli bileşen kodu GUID'lerini oluşturmak için küçük harflerin büyük harfle değiştirilmesi gerekir.
Bu sütun null ise, yükleyici bileşeni kaydetmez ve bileşen yükleyici tarafından kaldırılamaz veya onarılamaz. Bu, bileşen yalnızca yükleme sırasında gerekliyse, geçici dosyaları temizleyen veya eski bir ürünü kaldıran özel bir eylem gibi kasıtlı olarak yapılabilir. Ayrıca, veri dosyalarını kaydedilmesi gerekmeyen bir kullanıcının bilgisayarına kopyalarken de yararlı olabilir.
-
Directory_
-
Directory tablosundaki bir girdinin dış anahtarı. Bu, değeri gerçek yolu içeren ve AppSearch eylemi veya Dizin tablosundan alınan varsayılan ayar ile ayarlanabilen bir özellik adıdır.
Geliştiriciler, kullanıcı profili klasörlerinden birine dosya yerleştiren bileşenler yazmaktan kaçınmalıdır. Bu dosyalar çok kullanıcılı durumlarda tüm kullanıcılar tarafından kullanılamaz ve yükleyicinin onarım gerektirdiği için bileşeni kalıcı olarak görüntülemesine neden olabilir.
Dizin tablosunun birinci sütununa dış anahtar.
-
Öznitelikleri
-
Bu sütun, uzaktan yürütme seçeneklerini belirten bir bit bayrağı içerir. Bir seçenek eklemek için belirtilen biti sütundaki toplam değere ekleyin.
Not
Web konumundan indirilen bir .msi dosyası söz konusu olduğunda, öznitelik bayrakları bir bileşenin kaynaktan çalıştırılmasına izin verecek şekilde ayarlanmamalıdır. Bu, Windows Installer'ın bir sınırlamasıdır ve INSTALLSTATE_BADCONFIG özellik durumunu döndürebilir.
Bit bayrağı - msidbComponentAttributesLocalOnly
- 0
- 0x0000
- msidbComponentAttributesSourceOnly
- 1
- 0x0001
- msidbComponentAttributesOptional
- 2
- 0x0002
- msidbComponentAttributesRegistryKeyPath
- 4
- 0x0004
HKCU kovanına yazılan kayıt defteri girdileri için bu bitin ayarlanması önerilir. Bu, yükleyicinin aynı makinede birden çok kullanıcı olduğunda gerekli HKCU kayıt defteri girdilerini yazmasını sağlar.- msidbComponentAttributesSharedDllRefCount
- 8
- 0x0008
- msidbComponentAttributesPermanent
- 16
- 0x0010
- msidbComponentAttributesODBCDataSource
- 32
- 0x0020
- msidbComponentAttributesTransitive
- 64
- 0x0040
Bu bit yalnızca geçişli bileşenler için ayarlanmalıdır. Bkz. geçişli bileşenleri kullanma.- msidbComponentAttributesNeverOverwrite
- 128
- 0x0080
Bu bayrağı yalnızca Kayıt Defteri tablosu tarafından kaydedilen bileşenler için kullanın. AppId, Sınıf, Uzantısı, ProgId, MIMEve Fiil tablolarıtarafından kaydedilen bileşenler için bu bayrağı kullanmayın.- msidbComponentAttributes64bit
- 256
- 0x0100
Bu, 32 bit bileşenin yerini alan 64 bit bir bileşense, bu biti ayarlayın ve ComponentId sütununa yeni bir GUID atayın.msidbComponentAttributesDisableRegistryReflection
512
0x0200
Bu bileşenden etkilenen tüm mevcut ve yeni kayıt defteri anahtarlarında Kayıt Defteri Yansıması devre dışı bırakmak için bu biti ayarlayın. Bu bit ayarlanırsa, Windows Installer bileşen tarafından erişilen her anahtarda RegDisableReflectionKey çağırır. Bu bit Windows Installer sürüm 4.0 ile kullanılabilir. Bu bit, 32 bit sistemlerde yoksayılır. Bu bit, Windows XP'nin 64 bit sürümlerinde yoksayılır.
Not: 64 bit Windows öykünücüsü (WOW64) üzerinde çalışan 32 bit Windows uygulamalarının, kayıt defterinin 64 bit uygulamalardan farklı bir görünümüne başvurur. Kayıt defteri yansıması, bu iki kayıt defteri görünümü arasında bazı kayıt defteri değerlerini kopyalar.- msidbComponentAttributesUninstallOnSupersedence
- 1024
- 0x0400
MSIUNINSTALLSUPERSEDEDCOMPONENTS özelliğinin ayarlanması, tüm bileşenler için bu biti ayarlamakla aynı etkiye sahiptir.
Windows Installer 4.0 ve önceki:msidbComponentAttributesUninstallOnSupersedence değeri desteklenmez ve yoksayılır.- msidbComponentAttributesShared
- 2048
- 0x0800
DisableSharedComponent ilkesi 1 olarak ayarlanırsa, hiçbir paket bu bit tarafından etkinleştirilen paylaşılan bileşen işlevselliğini almaz.
Windows Installer 4.0 ve önceki:msidbComponentAttributesShared değeri desteklenmez ve yoksayılır. -
Koşulu
-
Bu sütun, bir bileşenin yüklü olup olmadığını denetleyebilen bir koşullu deyim içerir. Koşul null ise veya true olarak değerlendirilirse bileşen etkinleştirilir. Koşul False olarak değerlendirilirse bileşen devre dışı bırakılır ve yüklenmez.
Koşul alanı bir bileşeni yalnızca CostFinalize eylemisırasında etkinleştirir veya devre dışı bırakır. CostFinalize sonrasında bir bileşeni etkinleştirmek veya devre dışı bırakmak için, MsiSetComponentStateçağırmak için özel bir eylem veya DoAction ControlEvent kullanmanız gerekir.
Öznitelikler sütunundaki Geçişli bit bir bileşen için ayarlanmadığı sürece, Koşul sütunundaki koşullu deyim daha sonra ürünün sonraki bir bakım yüklemesinde False olarak değerlendirilse bile bileşenin yüklendikten sonra etkin kaldığını unutmayın.
Bileşen tablosundaki Koşul sütunu, özelliklerin ve bileşenlerin yüklü durumlarına başvurular içeren koşullu ifadeleri kabul eder. Koşullu deyimlerin söz dizimi hakkında bilgi için bkz. koşullu deyim sözdizimi .
-
KeyPath
-
Bu değer, yükleyicinin bileşeni algılamak için kullandığı bileşene ait bir dosya veya klasöre işaret eder. İki bileşen aynı anahtar yolu değerini paylaşamaz. Bu sütundaki değer, MsiGetComponentPath işlevi tarafından döndürülen yoldur.
Değer null değilse, KeyPath Kayıt Defteri, ODBCDataSource veya Dosya tablolarını öznitelik değerine bağlı olarak birincil anahtardır. KeyPath null ise anahtar yolu olarak Directory_ sütununun klasörü kullanılır.
Yükleyici tarafından oluşturulan klasörler boş olduğunda silindiğinden, boş bir klasörden oluşan bir bileşeni yüklemek CreateFolder tablosuna bir girdi yazmanız gerekir.
Bir Windows Installer bileşeni, Windows Resource Protection (WRP) veya Windows Dosya Koruması (WFP) tarafından korunan bir dosya veya kayıt defteri anahtarı içeriyorsa, bu kaynağın bileşen için KeyPath olarak kullanılması gerektiğini unutmayın. Bu durumda, Windows Installer bileşeni yüklemez, güncelleştirmez veya kaldırmaz. Bir yükleme paketine korumalı kaynak eklememelisiniz. Bunun yerine, Windows Kaynak Koruması için desteklenen kaynak değiştirme mekanizmalarını kullanmanız gerekir. Daha fazla bilgi için bkz. Windows Installer ve Windows Resource Protection kullanma.
Açıklamalar
Bileşenler ve özellikler arasındaki ilişki hakkında daha fazla bilgi için bkz. Özellik Tablosu.
Yükleyici, paylaşılan DLL'leri kayıt defterindeki paylaşılan DLL başvuru sayısından bağımsız olarak izler. Kayıt defterinde paylaşılan DLL için başvuru sayısı varsa, yükleyici dosyayı yüklerken her zaman sayıyı artırır ve kaldırılırken sayıyı kaldırır. msidbComponentAttributesSharedDllRefCount ayarlanmazsa ve başvuru sayısı zaten yoksa, yükleyici bir tane oluşturmaz. Sistem klasörüne yüklenen tüm dosyalar için kayıt defterindeki SharedDLL'ler başvuru sayısının artırıldığını unutmayın.
msidbComponentAttributesSharedDllRefCount ayarlanmadıysa, başka bir uygulama hala gerekli olsa bile bileşeni kaldırabilir. Bunun nasıl gerçekleşebileceğini görmek için aşağıdaki senaryoyu göz önünde bulundurun:
- Yükleyiciyi kullanan bir uygulama paylaşılan bir bileşen yükler.
- msidbComponentAttributesSharedDllRefCount bit ayarlanmadı ve başvuru sayısı yok. Bu nedenle yükleyici bir başvuru sayısı başlatmaz.
- Bu bileşeni paylaşan ve yükleyiciyi kullanmayan eski bir uygulama yüklenir.
- Eski uygulama, paylaşılan bileşen için bir başvuru sayısı oluşturur ve artırır.
- Eski uygulama kaldırılır.
- Paylaşılan bileşenin başvuru sayısı sıfıra iner ve bileşen kaldırılır.
- Yükleyiciyi kullanan uygulamanın artık bileşene erişimi yoktur.
Bu davranışı önlemek için msidbComponentAttributesSharedDllRefCount ayarlayın.
Sistem hizmetleri bileşenlerinin bu tür kullanım için özel olarak tasarlanmadan kaynaktan çalıştır olarak belirtilmemesi gerektiğini unutmayın. Daha fazla ayrıntı için ServiceInstall tablosu bakın.
Kaynaktan çalıştır yüklemesini etkinleştiren özniteliklerin, sistem klasörüne giden dinamik bağlantı kitaplıklarını içeren bileşenler için hiçbir zaman ayarlanmaması gerektiğini unutmayın. Bunun nedeni, bileşenin yükleme durumu bir özelliği takip ederek veya kullanıcı arabiriminde ayarlanarak kaynaktan çalıştır olarak ayarlanırsa, DLL'deki LoadLibrary sonraki çağrıların başarısız olmasıdır.
Ayrıca bkz. Özellik Seçim Durumlarını Denetleme.