2009-09-02 8 views
5

WixUIFeatureTree kullanıyorum. Uygulamamın hangi bileşenlerini yüklemek istediğiyle ilgili bir seçenek sunmak için WixUIFeatureTree kullanıyorum ... Özelliklerimden biri içinde programın çalışması için en az biri yüklü olması gereken iki isteğe bağlı özellik var. Kullanıcıyı ya özel birini yüklemeye zorlamak istemiyorum, ancak en az bir numaralı telefondan 'u seçmeye zorlamak üzereyim.WiX'te en az iki isteğe bağlı bileşenden birine nasıl gereksinim duyarım?

İşte benim şimdiki WXS alakalı bölümü var:

<Feature Id="Main" Title="Product Name" Level="1" Absent="disallow" Display="expand" AllowAdvertise="no" 
      Description="This is the application, and is a required component" 
      > 
     <ComponentRef Id="Baseline" /> 
     <ComponentRef Id="Shortcuts" /> 
     <Feature Id="Option1" Title="Plugin #1" Level="2" Absent="allow" AllowAdvertise="no"> 
      <ComponentRef Id="Plugin1Component" /> 
     </Feature> 
     <Feature Id="Option2" Title="Plugin #2" Level="3" Absent="allow" AllowAdvertise="no"> 
      <ComponentRef Id="Plugin2Component" /> 
     </Feature> 
    </Feature> 

ben garanti dizisinin doğru noktada takılı Custom Eylem çeşit ihtiyacım olacak tahmin ediyorum bir veya diğer yükleme için seçilidir, ancak bunun nasıl yapılacağı hakkında bir ipucu veya hatta doğruysa. Tüm yardımlar takdir edildi!

cevap

2

Aslında burada yapmak istediğiniz şey, koşullarınız karşılanana kadar etkinleştirmek için Next (İleri) düğmesi için < Yayınla > öğesinin bir koşulu koyar. Bir şey gibi:

<Publish Dialog="..." Control="Next" Event="NewDialog" Value="...">OptionalPkg1Selected OR OptionaloPkg2Selected</Publish> 

Ne Bilmiyorum doğru bileşenler daha sonra yüklü olsun, böylece bunu yapmak için bir yol olmalı ama, bileşenler kontrol edildiği dayalı bu koşulları ayarlamak için nasıl ..

+0

Evet, önce bunu deneyeceğim. Aksi halde, WiX'in "ya" ya da "mevcut" olduğuna inanmıyorum. Kullanıcının bir seçeneği veya diğerini seçmesi gereken özel bir iletişim ekranınız da olabilir. – JasCav

+0

Bunun eski bir yazı olduğunu biliyorum, ama teşekkürler Jeff. Gönderiniz bana doğru yönde işaret etti. Sizin çözümünüze dayalı çözümümü aşağıda bir cevap olarak yayınladım (en azından WiX v3.7'de çalışmış olan). –

0

Şu anda bir teknik test yürütmek için vaktim yok, ama sadece INSTALLLEVEL Mülkiyetinin yönüne işaret etmek istiyorum. Bu özellik seçimleri ile ilgili oldukça karşı sezgisel bir kavramdır. Esasen, 1 ile 32,767 arasında bir sayı olan ve her birinin -32,767 ile 32,767 arasında bir sayı olan bir Yükleme Seviyesi özelliğine sahip olan, kurulumun genel bir INSTALLLEVEL'i vardır. Bir özelliğin Kurulum Seviyesi değeri, ürünün INSTALLLEVEL özelliğinden küçük veya ona eşitse, özellik şu şekilde açılır: http://kb.acresso.com/selfservice/viewContent.do?externalID=Q103232

Genel olarak, varsayılan özellik durumlarını ayarlamak ve özelliklerin bulunmadığı işletim sistemlerinde gizli özellikleri devre dışı bırakmak için bunu kullanırsınız. desteklenmiyor. Ancak, bu özellikleri, özelliklerden en az birinin seçimini zorlamak için iletişim kutusunun bir sonraki düğme etkinliğindeki özel bir eylem çalışmasıyla birlikte kullanabiliyor olabilirsiniz.

Ve evet, MSI diyalogları genel olarak mantıklı değiller ve çalışmak için karmaşık bir yol var. Bazı durumlarda, genel MSI GUI konseptindeki sınırlamalar etrafında çalışmak için düzenli bir pencere exe iletişim kutusuyla bir sırayla tek bir iletişim kutusu değiştirdim.

Bunu yapmanın daha kolay bir yolu olup olmadığını düşüneceğim. Bu olsa çok acil olduğu anlaşılıyor böylece belki de en iyi dağıtım bazı sitelerin dağıtım topluluklarla kontrol etmek ve incelemek istiyorum:

+0

Belki de http://www.tramontana.co.hu/wix/lesson2.php#2.1. –

+0

Evet aslında INSTALLLEVEL özelliğini kullanarak varsayılan bileşenleri (aslında, ikisinden birini seçerek) ayarlayın. Bununla birlikte, hiçbir şey kullanıcının her ikisini de kapatmasını engeller, bu benim başarmak istediğim şeydir. –

+0

Özellik ağacındaki özellikleri gizlemeye ve ardından bir sonraki iletişim kutusunda radyo düğmesi stili seçimine ne dersiniz? Bunu yapmak için MSI iletişim kutularına bazı ciddi ince ayarlara ihtiyacınız var, ancak nasıl yapılacağı hakkında bir Site var. Sadece kazmadan önce sormak istiyorum. –

1

Özellik durumu bir koşul olarak nasıl kullanılır?

(& Seçim1 = 2) VE (& 2. seçenek = 2) Burada

daha iyi anlaşılması için bir link gibi bir şey: MSI Advanced Custom Actions

+0

Yaptığım şey bu. Özellik durumlarını iki seçenekten birini Düzey 0'a (yükleme yok) zorlamak için bir koşul olarak kullandım –

4

Bu eski bir yazı olduğunu fark, ancak bu

<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">&amp;MyAppClientFeature=3 OR &amp;MyAppPrinterFeature=3</Publish> 

Tam FeatureT: Ben UI FeatureTree ile bu kullanarak WIX v3.7 çözüldü nasıl ree iptal kodu:

<UI Id="WixUI_FeatureTreeCustom"> 
    <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> 
    <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> 
    <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> 

    <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> 
    <Property Id="WixUI_Mode" Value="FeatureTree" /> 

    <DialogRef Id="ErrorDlg" /> 
    <DialogRef Id="FatalError" /> 
    <DialogRef Id="FilesInUse" /> 
    <DialogRef Id="MsiRMFilesInUse" /> 
    <DialogRef Id="PrepareDlg" /> 
    <DialogRef Id="ProgressDlg" /> 
    <DialogRef Id="ResumeDlg" /> 
    <DialogRef Id="UserExit" /> 

    <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> 

    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish> 
    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish> 

    <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish> 
    <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish> 

    <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish> 
    <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" Order="2">NOT Installed</Publish> 
    <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">&amp;MyAppClientFeature=3 OR &amp;MyAppPrinterFeature=3</Publish> 

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">NOT Installed OR WixUI_InstallMode = "Change"</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish> 
    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish> 

    <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish> 

    <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish> 
    <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 
    <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 
    <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish> 
</UI> 

<UIRef Id="WixUI_Common" /> 

Ben bu kimse yardımcı olur.

+0

Çok hoş. Mesaj için teşekkürler. –