2016-04-14 12 views
2

を働いていない私は、ウィックス-インストーラを持っていると私のTargetFolder-SELECTION-ダイアログにラジオボタングループを追加しました:WiXの - 機能 - 条件

<Property Id="INSTALLATION_TYPE" Secure="yes" Value="Server"/> 
    <RadioButtonGroup Property="INSTALLATION_TYPE"> 
    <RadioButton Height="17" Text="Client" Value="Client" Width="342" X="0" Y="0" /> 
    <RadioButton Height="17" Text="Server" Value="Server" Width="342" X="0" Y="18" /> 
    </RadioButtonGroup> 

出力を以下、サーバとクライアントの間の切り替えに印刷されますMSI-ログファイル:続くよう

MSI (c) (04:B4) [17:17:56:295]: PROPERTY CHANGE: Modifying INSTALLATION_TYPE property. Its current value is 'Server'. Its new value: 'Client'. 

マイ機能-表ロック:

<PropertyRef Id="INSTALLATION_TYPE"/> 
    <Feature Id="CommonFeature" Level="1" Title="Common Feature"> 
    <ComponentGroupRef Id="Common"/> 
    <ComponentGroupRef Id="RegistryKeys"/> 

    <Feature Id="FeatureServer" Title="Server" Level="2"> 
     <Condition Level="1"><![CDATA[INSTALLATION_TYPE="Server"]]></Condition> 
     <ComponentGroupRef Id="Server"/> 
     <ComponentGroupRef Id="AdminConsole"/> 
    </Feature> 

    <Feature Id="FeatureClient" Title="Client" Level="2"> 
     <Condition Level="1"><![CDATA[INSTALLATION_TYPE="Client"]]></Condition> 
     <ComponentGroupRef Id="Client"/> 
    </Feature> 
    </Feature> 

しかし、機能クライアントラジオボタン "クライアント"を選択した場合は、サーバーはインストールされません。 Feature Serverは常にインストールされます。ログファイルには次のように表示されます:

MSI (s) (DC:5C) [17:18:35:750]: Feature: FeatureServer; Installed: Absent; Request: Null; Action: Null 
MSI (s) (DC:5C) [17:18:35:753]: Feature: FeatureClient; Installed: Absent; Request: Null; Action: Null 
MSI (s) (DC:5C) [17:18:35:755]: Feature: CommonFeature; Installed: Absent; Request: Local; Action: Local 

私は間違っていますか?

答えて

0

インストーラの<製品>部分でINSTALLATION_TYPEを定義してみてください。

私は、セキュリティでマークされているにもかかわらず、インストールのクライアント側(UI)にINSTALLATION_TYPEプロパティを定義していることが考えられます。ログの小さな断片で

私たちは、これは、ロギングのこの部分は、インストールのUI部分の間に起こっていることを示し

MSI(c)の

を見ることができます。一方、

MSI(S)

は、このログがサーバ(上昇)インストールの一部の間に起こっていることを示しています。この

のように起動し、おそらくラインの束を持って、インストールファイルの終わりに

プロパティ(S)

(S)とのすべてのプロパティが何を高架部分ですのインストールのアクセス権があります。 INSTALLATION_TYPEは(S)プロパティにはリストされておらず、インストールのUI(クライアント)部分に対してのみ技術的に定義されていると確信しています。これは、あなたのクライアントまたはサーバー機能のどちらもインストールされていない理由を説明します。

デフォルトで「インストールしない」という条件付きインストール機能を使用する場合は、オンにする条件に「ORインストール済み」を追加する必要があります。

私はいくつかのインストーラをオーサリングしていましたが、デフォルトになっていなかった機能がありました。インストールした場合、アンインストールまたはアップグレード中に問題が発生していました。 。これはインストーラが動作しない奇妙な状態のマシンを持っていました。 "OR Installed"条件を機能有効化条件に追加すると、この問題が解決されました。