我正在使用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?
答案 0 :(得分:3)
以下代码为我编译(现在无法测试)
在root directoy下添加
<Directory Id="TempTest" FileSource="[TempFolder]"></Directory>
并声明像这样的自定义动作
<CustomAction Id="ActivationUtility"
Directory="TempTest"
ExeCommand="ActivationUtility.exe"
Execute="immediate" Return="check" />
您当然可以更改文件夹的ID