私は、インストールする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からのスピンオフ。