2011-07-08 15 views
6

プロパティが設定されているかどうかによって、WebサイトをSSLまたは非SSL IISサイトとして展開するインストーラがあります。ポートを設定するオプションを追加するように求められましたが、これは問題ではありませんが、値が設定されていない場合はポートをデフォルト値(80または443)に設定したいと思います。明らかに、WiXのは、重複したIDのSetOUTPORTを持つカスタムアクションを訴え、条件付きで1つのWiXプロパティを別の値に設定します

<SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
    <SetProperty Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

しかし:

は、私のようなものを試してみました。

私は別のWiX型ウサギの穴をここにジャンプしていますか?

答えて

6

SetPropertyでは、さまざまな条件で同じプロパティに対して複数のSetProperty要素を使用する場合に、カスタムアクションIDを指定できるようにAction属性がサポートされるようになりました。

+0

完璧な@Bob。私が最初に "CustomAction"を見たとき、私はマネージドコードでたくさんのことをしなければならないと思っていました。 –

+3

これは有効ではありません(何も表示されません)http://wix.sourceforge.net/manual-wix3/wix_xsd_setproperty.htm –

13

受け入れられた回答は、カスタムアクションとシーケンス処理を完全に書き出すことに変換する必要はありません(もはや?)。 WiXの  3、SetProperty Element

のドキュメントを1として

てSetProperty \ @Action

<SetProperty Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
<SetProperty Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

Duplicate symbol 'CustomAction:SetInstallFiles' found 

アクションを設定せず。 文字列。デフォルトでは、アクションは「Set」+ Id属性の値です。このオプションの属性は、複数のSetProperty要素が同じIdをターゲットとする場合(おそらく相互に排他的な条件で)アクション名をオーバーライドできます。

以下は、カスタムアクションの書き出しに変更することなく動作します。

<SetProperty Action="SetInstallFiles0" Id="OUTPORT" Before="InstallFiles" Value="80"><![CDATA[SSL=0]]></SetProperty> 
<SetProperty Action="SetInstallFiles1" Id="OUTPORT" Before="InstallFiles" Value="443"><![CDATA[SSL=1]]></SetProperty> 

これはWiX 3.7で動作します。このバージョンはWiX 3.7で動作しますが、どのバージョンから入手できるかわかりません。

+1

はい、このシナリオをサポートするためにSetPropertyとSetDirectoryが強化されました。 –

+0

@Greg、私はそれが一貫性のためにこの情報でオリジナルの答えを編集するのが理にかなっていると思います。 –

関連する問題