【问题标题】:Run WiX EXE CustomAction from TempFolder从 TempFolder 运行 WiX EXE CustomAction
【发布时间】:2012-04-10 18:51:25
【问题描述】:

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

【问题讨论】:

标签: wix custom-action wix3.5


【解决方案1】:

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

在你的根目录下添加这个

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

并像这样声明自定义操作

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

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

【讨论】:

  • 谢谢 - 我终于想通了,虽然我仍然不明白他们为什么不让 [TempFolder] 在 Directory= 上工作。
  • 使用 [TempFolder] 将文件复制到我的 H:/ 驱动器的根目录(为什么?)然后执行失败并出现错误“********** Info 1721.There是此 Windows Installer 程序包有问题。无法运行完成此安装所需的程序。请联系您的支持人员或程序包供应商。操作:SetProcessEXE_Cmd,位置:H:\,命令:******** ** "
  • @rolls 你最好打开一个新问题。提供的信息不足以回答您的问题,更不用说通过 cmets 了。 :)
猜你喜欢
  • 2018-07-27
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多