以下では WiX 3.5 を使用しています。
インストールの開始時 (EULA が表示される前) に TEMP フォルダーに解凍する必要があるいくつかのファイル (EXE および DLL) があり、EXE を実行します。http://msiext.codeplex.com/を使用して、ファイルを抽出する部分が機能しています。コードは次のようになります。
<CustomAction Id="SetBinaryWrite_TargetFileName_1" Property="BINARYWRITE_TARGETFILENAME" Value="[TempFolder]ActivationUtility.exe" />
[TempFolder] が使用され、(Windows 7 では) 「C:\Users\USERNAME\AppData\Local\Temp\」に解決されることに注意してください。これは、私の WXS ファイルのどこにも「設定」されていません。これは Windows プロパティです。 ProgramFilesFolderなど...
EXE CustomAction を次のように設定します。
<CustomAction Id="ActivationUtility"
Directory="TempFolder"
ExeCommand="ActivationUtility.exe"
Execute="immediate" Return="check" />
リンカは、エラー LGHT0094 : シンボル 'Directory:TempFolder' への未解決の参照です。「[TempFolder]」を使用すると、コンパイラが文句を言います。このプロパティがある CustomAction では機能するのに、別の CustomAction では機能しないのはなぜですか? 上記の CustomAction の TempFolder を参照するには、正確に何をする必要がありますか?