【发布时间】:2017-08-01 14:05:32
【问题描述】:
我正在为我们基于 WIX 的安装程序添加一项功能。这是我第一次使用 WIX,所以对我来说都是全新的。
我正在尝试做的是允许用户在使用msiexec 时传递身份验证令牌命令行参数。
然后安装程序将使用身份验证令牌进行 API 调用。如果身份验证失败,安装程序将终止。否则,安装程序将使用 API 下载文件并将其复制到安装目录(很可能在 Program Files 下)。
我已设法将命令行参数作为 WIX 中的属性读取,并在 C# 中创建了一个 CustomAction 来处理身份验证/下载文件。
我正在努力的部分是让 CustomAction 将文件复制到安装位置,因为它没有写入该位置的权限。
我可以通过设置execute="deffered" 和"impersonate=no 让它以提升的权限运行,但这会阻止我从session 对象中读取属性。
另一个可能的选项是将文件保存到 CustomAction 中的临时位置(无需提升权限即可工作)并设置新属性。然后我可以使用CopyFile 组件和SourceProperty 将该文件复制到目标位置。
但是,我无法弄清楚如何让 CustomAction 在 CopyFile 组件之前运行,因为直到运行 CustomAction 之后才会设置该属性。是否像在安装的特定部分运行 CustomAction before 一样简单,还是还有更多?
【问题讨论】:
-
它应该像在“MoveFiles”之前安排它一样简单(wixtoolset.org/documentation/manual/v3/xsd/wix/copyfile.html 提到了 DuplicateFiles 和 MoveFiles 表,我假设它在定义不引用 File 元素 ID 的 CopyFile 时使用 MoveFiles 表) 但我添加了一个答案,应该让您延迟运行自定义操作并将文件下载到安装目录。
标签: wix windows-installer wix3.9