2

WIX 3.7 を使用して、接続文字列をカスタム アクションに渡したいと考えています。ただし、接続文字列に「;」が含まれているため カスタム アクション データが正しく解析されていません。

<CustomAction Id="PopulateActionPrep" Property="PopulateAction" Execute="immediate" Value="CONNECTIONSTRING=&quot;[CONNECTIONSTRING]&quot;;PRODUCTVERSION=[ProductVersion]" /> 

引用符を使用して接続文字列をエスケープしようとしましたが、うまくいきませんでした。CustomActionData からCONNECTIONSTRINGプロパティを読み取ると、 「Data Source=SqlServerName .

WIX で等しいセミコロンをエスケープする方法はありますか?

4

2 に答える 2

1

遅延カスタム アクションがどの言語で記述されているかはわかりません。set プロパティ カスタム アクションの使用は、限られた状況でのみ役立ちます。通常行うことは、コード カスタム アクションを即時にも使用することです。たとえば、C# DTF カスタム アクションを使用していた場合、CustomActionData クラスを作成し、それに辞書を設定するカスタム アクションを 1 つ作成します。次に、遅延カスタム アクションに渡されるプロパティにシリアル化します。

遅延カスタム アクションに入ったら、CustomActionData プロパティを逆シリアル化して新しい CustomActionData クラスを作成し、データのディクショナリにアクセスします。

CustomActionData クラスを利用することで、データを構造化およびエスケープする独自の方法を発明する必要がなくなります。さらにハードコアな例については、JSON を使用している私のブログを参照してください。

Beam Me Up: JSON を使用して CustomActionData をシリアル化する

于 2013-10-04T18:39:40.550 に答える