パラメータが[#file.Product]スタイルのファイルID参照として渡される遅延カスタムアサインの使用に問題があります。 exe.config]:WiX [#filekey]が解決されておらず、管理対象CustomAction内のパスとして使用可能です
<Component Id="comp.Product.exe.config"
Guid="{966DA007-E3F0-4BFE-94ED-63A66F82CA58}"
Win64="$(var.Win64)">
<File Id="file.Product.exe.config"
Name="Product.exe.config"
Source="$(var.SourcePath)\Product.exe.config"
KeyPath="yes" />
</Component>
それから私はそうのような遅延カスタムアクションに渡された上で、後にあるConfigurationFileというプロパティを持っている:
<Property Id="ConfigurationFile"
Value="[#file.Product.exe.config]" />
私は以前にConfigurationFileプロパティ値を割り当て= "[ APPLICATIONROOTDIRECTORY] \ Product.exe.config "はうまくいきましたが、私たちは別のフォルダに設定をインストールする必要があります(この理由はこのトピックとは無関係です)。[#file.Product.exe.config]
構文を使用して、設定ファイルの場所をインストーラから解決する必要がありました。
カスタムアクションがパラメータを受け取ると、それはまだ[#file.Product.exe.config]
形式(つまり、未解決)であり、問題が発生します。私はかなりロギングに基づいてそれが働いているように見えたので、かなりの間混同されました。それはSession.Log(
)がこのファイル参照を解決し、その結果、ログが引数の実際の内容について私に「横たわっている」という結果になりました。
session.Format()
を含むこの文字列を "claning"するさまざまな方法を試してみましたが、結果はInvalidHandleExceptionとなり、レコードを使用しています。
using (Record formatRec = new Record(0))
{
formatRec.FormatString = p0;
return formatRec.GetString(0) // Or formatRec.ToString();
}
この規則を処理するWiXには、いくつかのカスタムアクションが用意されています。しかし、私はまだ彼らがそれをどのようにして見つけ出す必要があります。これらのカスタムアクションのソースコードに潜んでいるときにはまだ運がありません。
カスタムアクションへの引数は、Session.CustomActionData
から取得されます。
これを処理する良い方法はありますか?
以下の回答は役に立ちましたか? –