私はWIXを初めて使用し、次のことを行うインストーラーの作成を任されています。
*アプリケーションのApp.Configファイルを上書きせずにアプリケーションのビルドをデプロイします
* App.Configファイルにキー/値をロードし、ユーザーに「デフォルト」(既存の値)を要求し、終了する前にそれらを変更できるようにします
*ユーザーが指定した値(またはユーザーが変更を加えなかった場合はデフォルト)をApp.Configファイルに保存して、アプリケーションで使用できるようにします。
WIXダイラログとカスタムアクションが正常にレイアウトされました。InstallFinalizeの後、「LoadDefaultOptions」CustomActionが実行されます。これにより、インストールディレクトリとアプリ構成ファイル名が正常に取得され、XMLリーダーに読み込まれ、キーが解析されます。値のペア。次の方法でセッション変数に設定します。
session[key.toUpper()] = value;
私のカスタムアクションは次のように定義されています:
<CustomAction Id="LoadDefaultOptions" Return="asyncWait" Execute="immediate" BinaryKey="aeserverDbDialogPackage.dll" DllEntry="LoadDefaultOptions"/>
<CustomAction Id="SetConfigOptions" Return="check" Execute="immediate" BinaryKey="aeserverDbDialogPackage.dll" DllEntry="SetConfigOptions"/>
LoadDefaultOptionsは次のように実行されます。
<Custom Action="LoadDefaultOptions" After="InstallFinalize" />
カスタムダイアログの編集プロパティを次のように設定しています。
<Control Id="CCPDbConnString" Type="Edit" X="20" Y="62" Width="150" Height="18" Property="CCPCONNECTIONSTRING" Indirect="no" />
WXSファイルの前半に次のような一致するプロパティタグがあります。
<Property Id="CCPCONNECTIONSTRING" Secure="yes" ></Property>
...そして、LoadDefaultOptions customActionは、次のようにセッション変数を上書きします。
session["CCPCONNECTIONSTRING"] = <value parsed from file>;
セッションログによると、これは期待どおりに機能し、xml解析が機能し、セッション変数が設定されます。
私の問題は、LoadDefaultOptions CustomActionが実行された後、カスタムダイアログが表示され、保存されているデフォルトをユーザーに表示することです。セッション変数のORIGINALプロパティ値は、xmlファイルを介してデフォルトをロードしてセッションに保存したカスタムアクションによって上書きされるのではなく、「スタック」しているように見えます。(元のプロパティが定義されているため空白です。別の方法で定義した場合は、セッションで書き込まれた値の代わりにそれらの値が表示されます)
カスタムアクションによってオーバーライドされたセッション変数をダイアログに「読み取る」にはどうすればよいですか?
最終的には、アプリの構成からこれらの値をロードし、終了画面からオプションのダイアログプロンプトでユーザーにプロンプトを返し(これまでのところ、更新されたセッション変数を取得しないことを除いて)、そのプロンプトダイアログからコマンドを実行します、別のカスタムアクションを実行して、カスタムダイアログから提供された設定でApp.Configファイルを再書き込みします。
セッション変数をPERSISTに取得できません!!!
何か案は?この方法でセッションを使用しようとすると、完全にベースから外れますか?他にどのようにapp.configファイルを解析し、インストールユーザーがセッション以外でアプリ設定を変更できるようにすることができますか?