4

以下では 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 を参照するには、正確に何をする必要がありますか?

4

1 に答える 1

4

次のコードは私のためにコンパイルされます(今はテストできません)

これをルートディレクトリの下に追加します

<Directory Id="TempTest" FileSource="[TempFolder]"></Directory>

そして、このようにカスタムアクションを宣言します

<CustomAction Id="ActivationUtility"
              Directory="TempTest"
              ExeCommand="ActivationUtility.exe"
              Execute="immediate" Return="check" />

もちろん、フォルダのIDを変更できます

于 2012-04-10T21:50:20.643 に答える