2009-09-02 3 views
5

私はWixUIFeatureTreeを使用して、インストールするアプリケーションのコンポーネントのオプションをユーザに提供しています...自分の機能の1つに、2つのオプション機能があります。ユーザーに特定のものをインストールさせてもらう必要はありませんが、少なくとも1つを選択するように強制する方法はありません。WiXの2つのオプションコンポーネントの少なくとも1つをどのようにして必要とすることができますか?

ここに私の現在のWXSの関連部分です:

<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> 

私は私が保証シーケンスの右位置に挿入カスタムアクションのいくつかの種類を必要とするつもりだ推測しているが、そのどちらか一方インストールのために選択されていますが、それを行う方法やそれが正しいかどうかはわかりません。すべての助けに感謝!

答えて

2

実際にここでやりたかったことは、 Publish >要素に[次へ]ボタンの条件を入れて、条件が満たされるまで有効にしないことです。ような何か:

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

私にはわからない、何が右のコンポーネントが後でインストールされますようにそれを行うにはいくつかの方法がなければならないが、チェックされたコンポーネントに基づいてこれらの条件を設定する方法です。..

+0

ええ、私はこれを最初に試してみます。それ以外の場合、私はWiXが "どちらか"または "利用可能"であるとは思わない。ユーザーが1つのオプションまたは他のオプションを選択する必要があるカスタムダイアログ画面を持つこともできます。 – JasCav

+0

これは古代のポストだと分かりますが、ジェフに感謝します。あなたの投稿は正しい方向に私を指していました。あなたの答えに基づいて私のソリューションを投稿しました(少なくともWiX v3.7では私にとってはうまくいきました)。 –

0

技術テストを今すぐ実行する時間がありませんが、INSTALLLEVELプロパティの方向を指しておきたいだけです。これは、機能の選択に関連して、かなり直感的な概念です。基本的にインストールの全体的なINSTALLLEVELが1から32,767までの数字であり、それぞれの機能にはインストールレベルのプロパティがあります。これは-32,767から32,767までの数字です。機能のインストールレベルの値が製品のINSTALLLEVELプロパティ以下の場合、この機能はオンになっています。http://kb.acresso.com/selfservice/viewContent.do?externalID=Q103232

通常、デフォルトの機能の状態を設定し、機能が無効なオペレーティングシステムで隠し機能を無効にするには、サポートされていません。ただし、ダイアログの次のボタンイベントで実行されるカスタムアクションとともにこれらのプロパティを使用して、少なくとも1つの機能の選択を強制することができます。

一般的に、MSIダイアログは意味をなさないので、操作が複雑になります。場合によっては、シーケンス内の単一のダイアログを通常のWindowsのexeダイアログに置き換えて、全体のMSI GUIコンセプトの制限を回避しています。

これを行う簡単な方法があると思います。これは非常に急務となっているようですけれども聞こえるので、おそらくあなたは、展開地域社会に確認し、最適な導入サイトの一部を熟読したい:

+0

おそらくhttp://www.tramontana.co.hu/wix/lesson2.php#2.1も同様です。 –

+0

はい、実際には、INSTALLLEVEL機能を使用してデフォルトコンポーネントを設定しています(実際には2つのうちの1つを選択しています)。しかし、ユーザーが両方をオフにすることを止めるものはありません。これは私が達成したいことです。 –

+0

フィーチャツリーのフィーチャを非表示にして、次のダイアログでラジオボタンスタイルを選択する方法はありますか?これを行うには、MSIダイアログにいくつかの調整が必要ですが、インストール方法については記事を参照してください。ちょうど私がそれを掘る前に尋ねたいと思う。 –

1

機能状態を条件として使用する方法はありますか?

(&オプション1 = 2)のようなもの、ここで(&オプション2 = 2)

がより良い理解のためのリンクです:

MSI Advanced Custom Actions

+0

これは私がやったことです。フィーチャーステートを2つのオプションの1つをレベル0(インストールしない)にする条件として使用しました –

4

私はこれは古い記事で実現するが、このUI FeatureTreeでWIX v3.7を使用してこれをどのように解決したかです:

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

フルFeatureT Reeはコードを上書きします:

<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" /> 

私はこれが誰かを助けることを望みます。

+0

非常にいいです。投稿していただきありがとうございます。 –

関連する問題