2012-02-09 6 views
3

私は、インストールするWebサービスを設定する必要があるインストーラを作っています。 UIシーケンスでユーザから収集されたデータを保持するプロパティを動的に生成し、サービスをインストールし、パラメータを設定します。Wix - 他のCAで動的に作成された遅延カスタムアクションからプロパティ値にアクセスする

SetParams CAは、UIシーケンスで生成された動的プロパティを使用します。遅延CAのデータにアクセスするために、セッションデータを動的に抽出してCustomActionDataに格納する直系のCAを作成しました。

<CustomAction Id='SaveParams' BinaryKey='Setup.CustomAction' DllEntry='SaveParameters' Execute='immediate' Return='check'/> 
<CustomAction Id='SetParams' BinaryKey='Setup.CustomAction' DllEntry='SetParameters' Execute='deferred' Impersonate='no' Return='check' /> 

<Custom Action='SaveParams' Before='SetParams'><![CDATA[REMOVE <> "ALL"]]></Custom> 
    <Custom Action='SetParams' Before='InstallFinalize'><![CDATA[REMOVE <> "ALL"]]></Custom> 

続いてこのアプローチが機能するカスタムアクション

customActionData.Append(string.Format(CultureInfo.InvariantCulture, "{0}={1};", propertyName, session[propertyName])); 

でSaveParameters方法の一部です! admin cmdから起動したとき、セッション[propertyName]は正しい値を返しますが、非昇格cmdプロンプトからインストーラの変更を実行すると、即時CAセッションのプロパティ値にアクセスできません[propertyName]が空の文字列を返します。

私はWXSファイルに定義された(静的)プロパティにアクセスすることができます

<Property Id="INSTALL" Secure="yes" /> 

しかし

ない、人の私がこの

session[property] = "VALUE"; //eq. property = DATABASENAME 

のようなUIシーケンス内の他のいくつかの即時カスタムアクションに追加しました私は動的なパブリックプロパティの値を読み取ることができない理由を知っている人はいますか?

注:thisからのスピンオフ。

答えて

1

この問題を解決するには、2つの方法があります。 1.実行シーケンスからUIシーケンスに移動するプロパティを読み込む即時アクション 2.実行フェーズでのアクションは、質問に記載されているように安全なプロパティからデータにアクセスできます。 プロパティをCAで動的に作成する場合は、それらをSecureCustomPropertiesシステムプロパティに追加する必要があります。区切り文字は ';'です。

関連する問題