从TempFolder运行WiX EXE CustomAction

时间:2012-04-10 18:51:26

标签: wix custom-action wix3.5

我正在使用WiX 3.5进行以下操作。

我有一些文件(EXE和DLL),我需要在安装开始时(在显示EULA之前)提取到TEMP文件夹,然后运行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引用TempFolder?

1 个答案:

答案 0 :(得分:3)

以下代码为我编译(现在无法测试)

在root directoy下添加

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

并声明像这样的自定义动作

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

您当然可以更改文件夹的ID