4

我正在使用 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?

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 回答