Wix 'KeyPath' özelliği nedir?


125

Wix ' KeyPath ' özelliği nedir? Özellikle aşağıdakiler için nasıl geçerlidir:

<Component Id="ProgramMenuDir" Guid="*">
  <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
  <RegistryValue Root="HKCU" Key="Software\CompName\AppName" 
                 Type="string" Value="" KeyPath="yes" />
</Component>

112
OMG the Wix dokümantasyonu tamamen işe yaramaz. Wix belgesi, KeyPath özniteliği için, "Evet" olarak ayarlarsanız, dosyanın bileşenin anahtar yolu olarak değerlendirileceğini söyler. Soooo yararlı !!
Cheeso

5
@RobMensching - topluluğa katkıda bulunma ruhunuzu ve istekliliğinizi takdir edin. Bana nasıl şikayette bulunmayacağımı söylemek, bana (ve diğerlerine) nasıl şikayet edileceğini söylemek kadar iyi değildir. 2 yıl önce böcek yetiştirecek yeri bilseydim, bunu yapardım. Ayrıca, olumlu oylardan da görebileceğiniz gibi, görünüşe göre diğer insanlar da benzer şekilde hissediyor. Belki bu tür bir mesajın zamanı gelmiştir: "WiX'i geliştirmeye yardım edin! Lütfen BURAYA tıklayarak uygun hataları düzeltin ".
Cheeso

21
Yapacak, @Cheeso! Lütfen hataları buradan kaydedin
Rob

8
@Cheeso Anlaşılması gereken temel kavram, bir WiX Kurulum projesinin bir Windows Installer paketi oluşturmasıdır. WiX belgeleri Windows Installer belgelerini çoğaltmaz (ve çoğunlukla olmamalıdır). Desteklediği Windows Installer tablolarını anlamadan bir WiX yapısını sıklıkla kullanabilirsiniz, ancak herhangi bir sorunuz varsa, MSDN'deki belgeleri kontrol etmelisiniz. Bileşenler için buradan başlayın .
Tom Blodget

30
@TomBlodget: WiX'in Windows Installer belgelerini çoğaltması GEREKİR. Çoğu kullanıcı için, WiX / Windows Installer bölünmesi yalnızca kafa karışıklığına neden olur ve son kullanıcı için ne kadar fazla gizlenebilirse, genel aracın kullanımı o kadar kolay olur.
Scott Stafford

Yanıtlar:


122

Rob Mensching'in açıkladığı gibi :

Bir Bileşenin Anahtar Yolu, Windows Installer'ın bir makinede bir Bileşenin "var" olup olmadığını belirlemek için kullandığı tek bir kaynaktır.

Bu, Windows Installer bileşeninizi kurup kurmayacağınıza karar verdiğinde, öncelikle ana yol kaynağının zaten mevcut olup olmadığına bakacağı anlamına gelir. Öyleyse, bileşendeki kaynakların hiçbiri yüklenmez.

Ana yol kaynağının varlığı, bir MSI'yı "onarırken" bir bileşenin hasar görüp görmediğini veya kaybolup kaybolmadığını da belirler.

Ana yol kaynağı sürümlü bir dosya olduğunda, Windows Installer bunun yalnızca eşit veya daha yüksek sürüme sahip bir dosya bulması durumunda var olduğunu kabul eder.

Özel örneğinizde, kaldırma sırasında bir klasörü kaldıran bir bileşeniniz var. Bu bileşen, yalnızca verilen kayıt defteri anahtarı henüz mevcut değilse yüklenecektir . Anahtar yolu olarak kullanmak üzere bir kayıt defteri anahtarı eklemek, kısayol gibi bir ana yol olarak kullanılamayan kaynakları yükleyen bir bileşen için bir anahtar yoluna ihtiyacınız olduğunda yaygın bir numaradır. .


4
Öyleyse, bir bileşendeki tek dosyaya açıkça bir anahtar yolu = "hayır" niteliği vermenin amacı nedir?
Christopher B.Adkins

4
@Adkins: Bu, wix'in o dosyayı ana yol olarak almak için varsayılan davranışını bastırır. Sonuç olarak, o bileşen için yükleyici veritabanına hiçbir ana yol yazılmaz. Yükleme sırasında, Windows yükleyici daha sonra ana yol olarak bileşenin hedef klasörünü kullanacaktır . Bu davranışı elde etmenin bir başka yolu, bileşen öğesinin kendisinde "anahtar yolu = evet" ayarını yapmaktır. Her halükarda, bana pek de iyi bir fikir gibi gelmedi.
Wim Coenen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.